思维构造
1
stay fool
这个作者很懒,什么都没留下…
展开
-
CF1325D ( 异或和和性质
先构造一个 u 然后如果全部构造一个相同的数 1 v - u 次 ,如果v-u是奇数,那么很显然是构造不出来的, 如果v - u 是偶数 那么可以构造两个 (v - u)/ 2。如果 u ^ (v - u) / 2 + (v - u)/ 2 == v 那么就可以合并,只需两个数就可以完成构造。下面暴力讨论 u (v - u)/ 2 (v - u) / 2;很明显异或值恒为 u。原创 2023-11-20 19:42:28 · 110 阅读 · 0 评论 -
abc 329 e ( dfs
因为后操作可以覆盖原先的操作,不停找新的能覆盖的区间(区间里至少有一个字母变成 #),进行覆盖,新覆盖的区间可能对前面的k个位置有影响,在搜索前k个位置的覆盖情况。考虑能否将串s还原为 ###########原创 2023-11-20 11:53:58 · 111 阅读 · 0 评论 -
湖北省赛 F (构造
考虑先将第一个字符填写成a,根据这个字符的回文半径r 向后构造,通过 每个 | 的位置判断左右字符串是否相等。原创 2023-11-15 13:14:50 · 46 阅读 · 0 评论 -
abc324 d
直接枚举满每个数的平方,如果数字数量是满足的,那么就可以对s进行排列得到。猪脑过载时刻,属于是全排列陷阱,全排列大概最大只能到 9!原创 2023-10-15 09:53:21 · 24 阅读 · 0 评论 -
P9714 「QFOI R1」摸摸
首先操作1 会将整个数组变成一个回文数组 , 变成一个回文数组后 进行两次操作2 和 进行一次操作1 + 2 是等效的。所以我们只需要考虑何时进行这次操作 观察到 b 不超过 2000 ,也就是最多也就进行2000次操作。在进行操作1后 就只需验证剩下的操作能否成功。本质上来说好像就是个枚举的题目。原创 2023-10-06 17:20:59 · 125 阅读 · 0 评论 -
abc 319 d
每个车站发车时间的最小公倍数 lcm(1,2,3,4,5,6,7,8)原创 2023-09-14 15:53:10 · 33 阅读 · 0 评论 -
abc 318 e
然后考虑这个区间可以向后扩张0,1,2,3......次,向前扩张0,1, 2 .....次。一个区间被选择的次数。原创 2023-09-03 15:23:54 · 228 阅读 · 0 评论 -
牛客小白月赛 e (反悔堆
如果要从堆里拿出一个数,就说明拿出来的数,是不能变成正数的,那么他就可以作为羊毛。发现有羊毛就一直薅羊毛,直接把sum 设置成无穷大实现。原创 2023-09-02 19:25:44 · 106 阅读 · 0 评论 -
div1 + div 2 D
所以对于一行以及下一行,只有竖着的的 U 的数量为偶数个,那么就这行和下一行才能正确,横着的牌染色后不会对这一行产生影响,黑白各+1。每一行的U 交替染色即可。原创 2023-08-31 11:45:23 · 93 阅读 · 0 评论 -
div1 + 2 c
从最低位开始枚举,如果第 i 位为 1 ,若x == (1 << i )就为2^i ,否则就减去(1<< i)然后每次减去一半 2^k - 2^(k-1) = 2^(k-1)如何把一个数变成2的n次幂。原创 2023-08-27 09:19:30 · 227 阅读 · 0 评论 -
894 div3 e (背包
考虑 x 用 w 消灭, y 用 f 消灭 (对称的,会有反过来的情况)考虑将怪物分成俩个集合 x, y 其实 x + y = sum;bitset 的本质就是一个特别长的二进制数字,可以进行各种位运算操作。因为只有0 1,俩种价值,表示能否达到,可以用bitset优化。那么枚举出来 子集 x y 就是sum - x。01背包问题 前n个物品,容量为j 是为可以达到。那么001110111 左移加上 | 运算。那么就把问题变成了枚举sum的所有子集。如果000000111。原创 2023-08-26 22:08:44 · 233 阅读 · 0 评论 -
div 2 889 c
思路能想到了解决所有正数,但没有考虑到负数的问题,一开始想用所有数字加20来解决负数问题,这样的做法并不正确,因为这样对于差值是不变的,但是每次操作的时候都多了一个20。同时,如果 1 - 20 -18 -17 这种数据,就会因为所加的数字太小,操作次数过多,先让最大的正数自己迭代几次, a[t] >= 20。对于负数的操作,考虑从尾部开始,修改当前第 i 位的下一个位置 i - 1 , 使得整个序列,从尾部看是递减的,那么从头部开始就递增的。原创 2023-07-30 11:05:52 · 134 阅读 · 0 评论 -
div 2 c Binary String Copying
找到L右边最近的1 R左边最近的0 变换区间就在这两个之间。用最小的变换区间代表整个大区间。原创 2023-07-28 09:17:14 · 488 阅读 · 1 评论 -
885 div2 c
考虑到果如 y > 2x 那么经过三次变化 就可以变成 y - 2x x。因为 0 1 1 0 同一个0直接要差距三次变换,所以每组数组都要同余3。如 100 1 99 98 1,因此对y取2x的模。原创 2023-07-17 15:31:32 · 221 阅读 · 0 评论 -
cf 884 div 1+2 D
若 分成n/d行 则 第 i 个字符和第 i + d 个字符 不能相同,如果s[i] == s[i+d] s[i+d] += 1。先将字符串初始为全a,然后从头开始枚举,枚举n的约数,d1 d2 d3 d4。原创 2023-07-12 12:09:54 · 68 阅读 · 0 评论 -
cf 884 div1+div2 c
值为负数的球可以直接消掉,任意俩球间的间距 -2 奇数和偶数位不变。观察性质,发现最后的结果要么是所有奇数的球,要么是所有偶数的球,原创 2023-07-12 10:02:34 · 143 阅读 · 0 评论 -
div2 882 c
同时这个题数据只有 2的八次方,可以用一个 桶 维护第i个数前的所有异或值,只要前序中存在某个异或,就可以相互抵消,更新答案。似乎要处理更大数据范围的话,得用到tire树,研究研究得 2023.7.9。所以要求一个区间的(l,r)的异或和,只要是s[r] ^ s[l-1]实际思想是前缀异或和,因为异或和之间是满足 (a^b)^a = b。比赛的时候分析出来是最大异或区间,想了半天没想出怎么写,原创 2023-07-09 19:46:59 · 164 阅读 · 0 评论 -
E - MEX ( abc 308
因为要保证MEX的顺序,所以要不如以E为搜索的对象,维护 每个E 前序的 M中0,1,2的数量和X中0,1,2的数量。当s[i] =='M' 记录这个m所对应的数字j = a[i] cnt_l[i][j] ++;cnt_l[i][j] 前i个数字 ,数字 j 的数量。原创 2023-07-02 13:17:24 · 134 阅读 · 0 评论 -
C. Strong Password div2 ( 双指针 + 后缀
因此统计每一个位置他的右边离他最近的数字0—9 的位置。这个vector 的真是每看过捏,属于是学会了。对于每一组数字,尽量要让他在较后出匹配到,原创 2023-06-30 19:53:08 · 288 阅读 · 0 评论 -
B. Same Parity Summands ( 1200
如果拿2 的话,那么拿的最后一个数字就是n - 2(k+1) ,如果这个数大于 0 且这个数是偶数,就输出就行了。如果拿 1 的话 那么拿的最后一个数字就是 n-k+1 如果这个数大于 0 且这个数是奇数,那么构造出来了。如果 m 是偶数 都可以,但拿奇数能的构造结果的可能一定由于偶数的。如果 m 是奇数 那么一定要拿偶数, 奇数个偶数相加为偶数。n如果是奇数,那么就需要奇数个奇数相加,同时最后一个奇数要为正。如果这两个方法都构造不出来,就直接NO。n如果偶数,那么就考虑拿奇数还是偶数,原创 2023-06-14 10:18:55 · 538 阅读 · 0 评论 -
D. Anti-Sudoku ( 1300
考虑将第 i , j 个九宫格 ,中的第 j ,i 个位置的数字mod 9 + 1。每个1会会在每行每列每个九宫格内出现一次,替换2即可。答案做法只要将所有的1换乘即可,原创 2023-06-14 16:59:44 · 28 阅读 · 0 评论 -
C. Similar Pairs ( 1100
水一发了属于是,感觉应该找找1300 - 1500 左右的题目做做。如果不行,就枚举一下有没有差 1 的,先排序一下就行了。先考虑如何刚好有有偶数个奇数和偶数个偶数 直接ok。原创 2023-06-14 16:33:59 · 36 阅读 · 0 评论 -
B. Random Teams (1300
f原创 2023-06-13 22:57:05 · 118 阅读 · 0 评论 -
Challenging Cliffs ( 1200
1原创 2023-06-03 11:41:53 · 60 阅读 · 0 评论 -
Fedor and New Game (1100
【代码】Fedor and New Game (1100。原创 2023-06-02 11:18:59 · 39 阅读 · 0 评论 -
Mahmoud and a Triangle (1000
考虑 x y z 如果能构成一个三角形,那么其三边长度应该尽量接近,因此排序后直接考虑连续三个位子的长度,其一定按照x<=y<=z进行排序 只要满足 x+y > z 即可,不需要比较俩边之差小于第三边。如果x+y <= z,那么x+1 和 z-1 都是更可能构成三角形的,因此x,z应该尽量向y靠近,对于越接近的越能构成三角形,可以这么考虑 假设x<=y<=z, 同时中间量y不变,于是乎对于 一个y 应该取离他最近的 x ,z(先排序在选)对一组边来说,任意俩个边满足俩边之长 的定理就行了。原创 2023-06-01 20:24:28 · 33 阅读 · 0 评论 -
A. K-divisible Sum
如果k不能整除n 那么就需要通过在平均值周围取数来平衡 ,平均值+1。如果k原创 2023-06-01 17:23:58 · 31 阅读 · 0 评论 -
ARC 161 B
1原创 2023-05-30 12:58:59 · 42 阅读 · 0 评论