数论
霾まる
不为牌子, 只为锻炼自己, 创造美好回忆不后悔!
展开
-
23.3.10补卡 Codeforces Round 857 (Div. 2) A~D
题外话:又到了一年两度的玩gbf时间了。原创 2023-03-12 15:34:21 · 210 阅读 · 0 评论 -
23.3.9打卡 AtCoder Beginner Contest 259
对于x特判一下就好。原创 2023-03-09 20:59:48 · 471 阅读 · 0 评论 -
22.2.26打卡 Codeforces Round #853 (Div. 2)
A题极端考虑, 只要存在一个前缀数组的最大公约数小于等于2, 将其放在数组最前端, 那么保证能够满足题目要求数据范围这么小, 果断暴力。原创 2023-02-26 18:23:27 · 551 阅读 · 0 评论 -
22.1.31打卡 2023牛客寒假算法基础集训营4 ABCDEFLM
来到过程的实践阶段, 我们先手直接开头砍了一刀, 然后对剩余的血量计算每个t间隔的扣血量(at*av), 用剩余血量除扣血量, 在看一下能不能整除, 不能整除就+1。最后 valn - val就是差值了, +1是因为题目中说了要让i成为"必选", 当i = 最大值时, 不是必选情况。因为攻击是从时刻1开始的, 所以要+1, 又因为当最后一刀斩杀时, 不计算后摇时间, 所以ans要-1。狂wa8发被整了心态就润了, 最后发现特判出了问题, 改了就对了, 好似喵。*t是因为要计算后摇时间(或者说冷却时间)原创 2023-01-31 23:36:48 · 221 阅读 · 0 评论 -
22.1.28打卡 Codeforces Round #847 (Div. 3) A~E
这题其实也是一样的, 但当arr[i]和arr[i-1]存的元素不一样时, 不成立了上文说的贪心, 因为不连续了, 按照题意应当直接加上arr[i]从列的角度来看, 除了原排列的最后两个元素, 每当出现了n-1个此元素时, 这一列就是此元素的位置。最后一列出现之前从未出现过的元素一定在最后一列的位置, 再将剩余的那个元素放在n-1位就好了。不能出现连续的1, 所以1后的第一个0构造为11, 其他的0都构造为00。首先我们知道a^b=(a+b)/2, 将其变形为2*a^b=a+b。原创 2023-01-28 17:53:27 · 301 阅读 · 0 评论 -
23.1.27打卡 Codeforces Round #846 (Div. 2) A~D
我们每次都减去1, 如果返回的cnt比原来n的cnt要大, 说明在1的这个位置原先是0, 依照多出来的1的数量可以判断lowbit的位置, 让答案ans|上这个位置的数即可, 依次循环cnt(原先n的cnt)次就能找到答案了。第一次做交互题, 题都读不太懂, 看了ygg的题解后恍然大悟, 感觉也不是那么的难, 做多几次估计就会了。给定初始n的cnt, 然后你可以让这个n减去任意的数, 题目会给出n减去这个数之后的cnt。题目中隐藏一个数n, 定义一个概念cnt, cnt为n的二进制数中1的数量。原创 2023-01-27 16:42:08 · 752 阅读 · 0 评论 -
22.1.23打卡 Codeforces Round #845 (Div. 2) and ByteRace 2023 A~B
只要看上一个是否和当前的数组元素奇偶性是否相同, 不相同就ans++自己手动计算一下逆序数就好了。原创 2023-01-23 17:04:22 · 263 阅读 · 0 评论 -
23.1.21打卡 CF-1782D Many Perfect Squares
而这个D也就是我们上文提到的等差数列以其中 某项(设为A) 为首项的前k项和(k需要暴力枚举得到)C大模拟写不出D题数论我是真菜没想到, 泪目。可以发现一个首项为1, 公差为2的等差数列。先抛开这题, 我们先探究下平方数的规律。有解就存入map最后计算答案即可。=D , 也就是平方数的差。将他们相减会得到等差数列。即证明这个式子是否有解。为了方便计算将其化简为。列出式子来看就是这样。原创 2023-01-21 16:28:20 · 2156 阅读 · 0 评论 -
22.1.7打卡 abc284 A~E
D题就一脑筋急转弯...耗费太多时间了最后E还有15分钟直接开摆了, 赛后一看woc一个裸的dfs。赛中写的非常屎, 可以去看看官方题解。完完全全一个裸的dfs搜无向图。思考一下如何因式分解。原创 2023-01-07 22:35:33 · 213 阅读 · 0 评论 -
22.12.17打卡 Educational Codeforces Round 140 (Rated for Div. 2) ABD
神志不清也没怎么想倒着推, 一直正着推没出结果, 一看队友出了假思路跟着想也没出(貌似也是没倒着推的缘故), 最后光荣掉分。倒着推, 从最后一波开始推, 其实可以发现最后出来的答案一定是连续的, 找到最大值和最小值就可以了。这场状态不好, 家里人说他可能羊了, 她回家之后我就开始有点咳嗽头晕了, 害怕。读了一遍题就出思路了, 结果把想法给队友之后, 队友先写出来了, 我自己还在想。然后看到D题写的人多, 开始转战C, (此时已经很多人过了D)C题不会写, 在这耗了很多时间, 期间都想开摆了。原创 2022-12-17 17:04:32 · 267 阅读 · 0 评论 -
22.12.16打卡 Codeforces Round #838 (Div. 2) A~C
全部变成2的n次方就好了, 用个highbit。找最小的改变奇偶性的次数就行了。原创 2022-12-16 18:18:41 · 227 阅读 · 0 评论 -
22.12.6打卡 自用笔记
AcWing 887. 求组合数 IIIAcWing 887. 求组合数 III - AcWingAcWing 889. 满足条件的01序列AcWing 889. 满足条件的01序列 - AcWing原创 2022-12-06 17:33:41 · 359 阅读 · 0 评论 -
22.12.5打卡 自用笔记
AcWing 871. 约数之和 - AcWing对于每个数N, 都有若干个质数的An次幂组成那么对于每个约数也同样适用这个道理对于每个约数, 都有其对于N的每个质数的1~An次幂组成, 那么只要将1~An的所有次幂都选取, 就是约数之和AcWing 885. 求组合数 I - AcWing通过预处理的方法, O1复杂度求得组合数AcWing 886. 求组合数 II - AcWing预处理1~N的所有阶乘 和 阶乘的倒数(使用逆元获取)原创 2022-12-05 18:56:39 · 353 阅读 · 0 评论 -
22.12.4打卡
AcWing 870. 约数个数 - AcWing学了个小结论: 约数个数=各质数的次幂数+1相乘然后打卡了一些acwing上会了的算法, 感觉自己acwing算法打卡进度有点低了, 争取这个寒假补完+进击提高课另外还学了个神奇的16进制转换 两行解决hex是以16进制的方式读入一个整型变量原创 2022-12-04 16:16:15 · 376 阅读 · 0 评论 -
22.12.3打卡 CF-1661B
借鉴了一下题解的思路, 本来是用bfs写的, 写崩了就开摆了也不好意思看了题解自己再做一个题解, 有点抄袭的意味此篇仅作为打卡自我参考原创 2022-12-03 22:30:04 · 365 阅读 · 0 评论 -
22.11.23补卡 CF-230B 数论
首先拥有奇数因子的数肯定是完全平方数, 因为除了1, 0以外所有数字都一定会有自身和1两个因子, 且其他因子都有其对应的因子组合, 那么造成奇数个数的因子就是完全平方数。判断n的根号是否为质数, 简简单单用一个埃氏筛预处理就好, 需要特判1, 2, 3。那么问题就很简单了, 只要n的根号为质数就一定会有三个因子。题意: 判断这个数是否为有三个因子的数。原创 2022-11-30 19:53:23 · 404 阅读 · 0 评论 -
22.11.28打卡 Codeforces Round #836 (Div. 2) A~D
这题我一开始的思路是贪心, 但这题不能用贪心写, 局部最优并不代表全局最优, 有时局部字典序最优了, 导致后面的数位没有数对应的问题。直接一个全排列, 然后暴力搜这个数位的数是否符合条件(为保证字典序最小, 从m+1开始搜, 因为m+1前已经为最优解)考虑到等式左边的异或, 我们用n-2个相同的a(必须为偶数)互相异或得到0, 然后构造两个加起来为2a的数就可以了。易得规律为 最小值逐渐递增循环n/2次 + 最大值逐渐递减n/2次。最小值ceil(n/2) 最大值为ceil(n/2)*2+n/2。原创 2022-11-28 11:16:56 · 324 阅读 · 0 评论 -
22.11.25打卡 2022河南萌新联赛第(二)场:河南理工大学 AFJL
想了好一会都没什么思路, 主要是这个1e114514有点迷惑性, 完全可以当做一个10x10的棋盘来类比, 因为只能斜着走, 当n和m成倍数的时候, 那么n%m的格子就永远都走不上去, 所以当且仅当n和m互质的时候才能走完全部路。针对这一句话进行思考, x的三次根为有理数的前提, 令x=i*i*i, 这样有理数的前提就永远成立, 之后枚举x%n==0即可, 至于x的平方, 在前提已经满足有理数的情况下这个条件完全没有用, 且具有巨大的欺骗性。这题就非常的签到了, 注意一下数组越界问题就好了。原创 2022-11-25 21:15:06 · 923 阅读 · 0 评论 -
22.11.19打卡 CF1278B
让我们回归题目, 重新考虑加在a上的值(假设a比b大), 如果我们将一个值x不加在a上, 而是加在b上, 对于ant来说, 是不是就相当于ant-=x*2。首先预处理从1到1e9的数之和, 存储在arr数组中//cnt为arr数组的长度。如果为奇数: 由奇+奇=偶, 所以只要再多一次操作将奇数转化为偶数即可。ant为奇数, 当ant为奇数的时候, 我们就不能像情况1那样操作了。如果为偶数: 因为奇+偶=奇, 需要再多两次操作才能将奇数转化为偶数。所以对于ant来说, 只要为偶数就能消除为0。原创 2022-11-19 21:37:18 · 490 阅读 · 0 评论 -
22.10.31补卡 22CCPC桂林C题
我的思路是这样的, 分别记录操作1和操作2的 前缀和 和 前缀和之和 直接取最大值然后套公式输出, 错误代码示范。实在做的难受, 跑去问了学长, 学长好心写了篇题解, 一瞬间疑云消散...明白了做法1和做法2的真正意义...跑去问队友lk, 他说把前面取模去掉了变成wa4, 很神奇, 然后我就疯狂的试取模, 发现了这一句。途中还了解了个费马小定理(还不能说会), 2的n次幂*ksm(2,mod-2)相当于2的n-1次幂。写了一天半...感觉自己是不太适合写区域赛的题了, 还是多学学算法和数论好了。原创 2022-11-01 21:16:23 · 368 阅读 · 0 评论 -
22.10.28补卡 牛客小白月赛59ABCF
也就是说, 不会输出[l,r]以外的数字, 我们只需要在循环判断一下 ai+1 (k的i+1次方)是否大于r即可, 由于ai+1可能爆longlong, 采用r/k原创 2022-10-29 16:17:29 · 439 阅读 · 0 评论 -
22.10.24补卡 CF-1732 A~B
判断一下第一位数, 找一下相邻不用有多少个, 最后判断下第一位数。相邻的自然数互质, 用一个cnt存最大公约数, 最后判断下就好了。原创 2022-10-25 20:00:55 · 302 阅读 · 0 评论 -
22.10.23打卡 CF-1754B
题意: 给定一个数n, 要求1~n的序列排列中, 最小的|ai-ai-1|最大化。先分奇偶数讨论, 偶数情况下, 1~n/2和n/2+1~n交替出现就能使差值最大。奇数情况下就把中间的数字放最外面就可以了。原创 2022-10-23 19:51:05 · 336 阅读 · 0 评论 -
22.10.18 伪大数除余
呃嗯...这题是位运算题单里的题, 但仔细观察之后会发现a, b, mod都在longlong范围之内, 而unsigned long long是long long 范围的2倍!(当且仅当a和b都为正数时, 当a和b有一个为负数就可以特判) 首先我将a和b都改变为二进制数存在数组中, 用二进制模拟竖式加法将b添加进数组a中, 然后转化为十进制时不断%mod--->交上去wa了。原创 2022-10-18 21:08:12 · 824 阅读 · 0 评论 -
22.10.17 CF-1744D Divisibility by 2^n
题意, 给定一个数n和一个数组a, 定义一个操作, 让ai=ai*i, 对于同一个ai只能操作一次, 求数组内所有数相乘(a1*a2....*an)%然后就是教科书式的贪心操作, 先对arr数组(i的因子数组)排序, 然后每次选最大的因子操作, 直到2的因子>=n。首先求数组a有多少个2的因子构成, 剩下的不要, 当2的因子>=n(相当于2的因子次幂>===0需要操作几次, 同理求出i有多少个因子, 存储在数组arr中。原创 2022-10-17 21:02:20 · 696 阅读 · 0 评论 -
10.16打卡 Codeforces Round #827 (Div. 4) A~E
二分查找, 这题数据范围是2e5, 1e5的交上去t, 还以为复杂度太高...好好看题 R只会横着画, B只会竖着画(以为这两可以随便画wa了4发...)那么只需要找到"RRRRRRRR"就行了, 直接string。找有没有重复的数字, 如果有重复的数字就不能严格递增了。原创 2022-10-16 15:43:26 · 524 阅读 · 0 评论 -
10.15补卡 第1届ICPC青少年程序设计竞赛(正式赛)D题
看了题目之后再看样例, 样例随着n上升增长越快, 首先考虑平方, 然后看阶乘, 观察到k越小反而值越大, n越大值越大(从这里开始我已经不再看题只看样例找规律了...)最后奋战3小时(包括开摆时间), 阶乘是最接近结果的一种规律, 然后相同n的对照组观察到k不同影响的是值和n的幂的差别。题意意思就是n个有标号的树, 不能成环, 在a点和b点的最短路之间不能有同时大于a和b的标号。说实话我也是没信心发这个题解, 因为我就算做出来了, 也不会这题。还需要特判n==1的时候, 只有这个情况下不符合公式。原创 2022-10-16 15:44:48 · 654 阅读 · 0 评论 -
10.14打卡 CF-1360D
众所周知, 因子都是成对出现的(除了平方数), 我们可以只找一边的因子, 这样时间复杂度就降到了O(sqrt(n))第一眼肯定是暴力, 从k到1枚举 n%i==0, 但是如果出现样例这样大的质数, 结果导致导致超时。样例1都会t, O(m)过不了, 想办法优化。原创 2022-10-14 20:53:01 · 632 阅读 · 0 评论 -
10.11 478B - Random Teams
通过观察这个公式可以很容易画出他的图像, 就是我们高中学过的一元二次函数, 函数值的增长速度会随着x的增长而加速, 得出结论: 好朋友对的数量会随着人数加速增长。题意: n个人分m组, 组内的人每两个人会成为好朋友对, 问你最少好朋友对和最多好朋友对为多少。从这个结论我们可以得知: 好朋友对最多的数量的情况是其他组一个人, 其他全部人在第一个组内。由题意得获取一组好朋友对的公式为(假设一组x人): x*(x-1)/2。好朋友对最小的数量的情况是对每个组平均分人数。原创 2022-10-11 17:04:17 · 962 阅读 · 0 评论