数学
每天一道1500
永夜天
小呆呆
展开
-
CF1771C
大意:只要一组数据中存在两个数有公约数即输出YES,否则输出NO。我们可以先进行预处理筛出 1e5以内的素数,然后暴力筛即可。由素数定理可得:任何一个自然数都可以拆成若干个质数的积。而每一组最多只有1e5个数,所有由抽屉原理。原创 2022-12-14 14:52:03 · 300 阅读 · 1 评论 -
CF1299D (1500)
给定一个长度为 n 数列 a,定义 f(f..f(f(a1,a2),a3),...an−1),an)现在,请你将数列改变一种顺序,使得最后的值最大。输出你改变后的数列。也容易得知,最后的结果跟 除第一个数字外 其它数字的顺序是无关的。即从第一个数字的二进制中抠掉后面所有数字的二进制。定义一个函数f(x,y) = (x∣y)−y。但是有共同的最高位时,这个最高位会被抠掉!那么,我们只需要让第一个数字最大(那么对整个序列的操作其实也就是。的数字到最前面就好啦。原创 2022-12-13 22:33:45 · 393 阅读 · 0 评论 -
CF27E (2000) (反素数)
根据上面的三个引理,我们可以直接DFS,一次确认前 个质数的指数,并满足指数单调递减,总成绩不超过 ,同时记录约数的个 数即可。, 且 c1 >= c2 >= c3 >= c4 >= c5 >= c6 >= c7 >= c8 >= c9 >= c10,我们可以把当前走到每一个素数前面的时候列举成一棵树的根节点,然后一层层的去找。引理1: 1 ~ N 中的反素数,就是 1 ~ N中约数个数最多的数中 最小 的一个。x的质因子是连续的若干个最小的质数,并指数单调递减。原创 2022-11-30 17:41:52 · 517 阅读 · 0 评论 -
CF1579C (1500) 枚举
暴力枚举每一个点作为 "V" 的交点,尽可能地延伸,即尽量地去找更长的满足条件的边,如果长度小于 k 就找到不为 " * " 的点,就不更新,否则就一直往上找,不断地更新 vis 数组。最后判断所有需涵盖是否全部涵盖就行了。给出 n,m,k,给出一个大小为 nm 的矩形。矩形仅包含 " * " 和 " . "。需要你用任意个仅包含 " * " 的开口向上 v 形结构,两边斜率为1,且边长严格大于 k(包含交点),来包含所有矩形的 " * "。用 st(i,j) 表示第 i 第 j 列有没有被涵盖。原创 2022-11-29 21:16:31 · 230 阅读 · 0 评论 -
CF1579D (1400) 贪心+优先队列
n 个人中,每个人都有一个社交能力值,其中第 i 个人的社交能力值是一个非负整数 ai,它表示这个人可以与另一个人社交的次数。由于我们要最大化选择次数,所以我们希望能选出 2 个大于 0 的数的次数尽可能的多,也就是使得可以被选择的数的数量尽可能多。一旦一个数字被减到 0,那么它在之后的决策中就不可以被选,而选不出 2 个大于 0 的数,就意味着必须结束选择。而选择非最大、次大的数会导致可以选择的数的数量更快的减小,故选择最大、次大两个数一定不会更劣。综上,每次贪心的选择最大、次大两个数是正确的。原创 2022-11-29 10:33:34 · 380 阅读 · 0 评论 -
CF1305C (1600) (抽屉原理)
1≤i原创 2022-11-28 20:48:55 · 127 阅读 · 0 评论 -
CF1307C (1500)(贪心+DP/暴力)
出现在s的下标1,3,5,这刚好构成了一个等差数列,而公差是 2。个 s 中的子序列是不同的当且仅当两个字符串在 s 中出现的下标是不同的。她认为一个字符串 t 是隐藏的当且仅当 t 是 s 的子序列且 t 在 s 中出现的下标构成了一个等差数列(公差必须为一个。因此长度为2的序列的最优解必然包含了长度大于2的最优解。假设长度大于2的序列是秘密信息,那么我们取这种序列的前两个字符,同样可以构成数量相等的长度为2的子序列。因为题目中要求等差,所以在同一长度的序列中,原创 2022-11-28 16:53:52 · 108 阅读 · 0 评论 -
CF1312C (1400)
观察到,对于k=1,无论序列如何,都是可行的。那么除了1之外,最小的是2,所以我们暴力将一个数拆成上面形式的复杂度不超过O(log2 10^16).复杂度显然可以过。对于一个可以做到的序列,那序列中每一个数绝对能分解成k^p1+k^p2+k^p3+...的形式.对于拆分出来的指数用数组存储次数,一旦>1就可以跳出输出答案了。对于第i次操作,我们可以放弃,或给数组中任意一个元素加上k^i。能否对一个数组执行任意次操作,使得其变为目标数组。当序列中的数所拆分出的k的指数有重合,则该序列无解。原创 2022-11-28 15:43:29 · 82 阅读 · 0 评论 -
CF750C (1600)
拿第一个样例,假设一开始分数为0,分数线为x(即当分数线为1900时原始分数为1900-x),则0>=x,-7原创 2022-11-23 20:11:18 · 304 阅读 · 0 评论 -
CF785C (1600)
可以得出第 m+1 天减少 1 ,第 m+2 天减少 2 ,第 m+3 天减少 3 ...... 而实际应该减少的即为 n - m,用等差数列求和即 可,但从第1天开始枚举会超时,所以根据等差数列求和公式可以从sqrt(2*(n - m))开始 枚举。如果有m个谷物不适合放进谷仓,谷仓就会变满,不适合的谷物就会被带回来(在这个问题上,我们可以假设不适合放进谷仓的谷物没有被考虑在内)。第一天结束时,一只麻雀来了,吃了一粒粮食,所以还剩下5-1=4粒粮食。原创 2022-11-23 16:01:29 · 370 阅读 · 0 评论 -
CF804B(1400)
我们有一串字母'a'和'b'。我们想对它进行一些操作。在每一步中,我们选择字符串中的一个子字符串“ab”,并将其替换为字符串“bba”。如果我们没有“ab”作为子字符串,我们的工作就完成了。如果字符串中某个位置的字母“a”后面紧接字母“b”,则字符串“ab”将显示为子字符串。第二个例子:"aab"→"abba"→" baba"→"bbbbaa"。第一行包含由字母'a'和'b'组成的初始字符串,长度从1到10^6。输出按109 + 7取模的最小步数。第一个例子:"ab"→"bba"。原创 2022-11-22 22:17:38 · 90 阅读 · 0 评论 -
CF809A(1500)
求数列所有的不同子集(元素个数大于等于2),然后求所有子集内最大数减最小数的和。快速幂求2的幂次即可。原创 2022-11-22 22:08:46 · 96 阅读 · 0 评论