随笔分类 - CF
好好加油
摘要:"D. Irreducible Anagrams" 存在$irreducible\ anagram$只有三种情况: ①长度为1 ②长度为2,且 ③长度大于2 ①和③很容易可以得出,这里只证明一下情况② 假设只存在 a,b,开头和结尾都是 a,那么匹配肯定是这样的:$\begin{cases}a...
阅读全文
摘要:"D Same GCDs" 参考: "欧拉函数" "CF1295D Same GCDs" 题意很明显要求出当$k\in [a,a+m),gcd=gcd(a,m)$时,满足$gcd(k,m)=gcd$的$k$的个数,由欧拉函数可以转换为$gcd(k/gcd,m/gcd)=1,k\in [a,a+m)$
阅读全文
摘要:"E Obtain a Permutation" 参考: "Codeforces Round 615 (Div. 3) Editorial" 其实这个算法的本质也就是暴力,只不过是更为有效的暴力 每一列之间不互相影响,那么只需要求出每一列的最小值即可 对于每一列:进行贪心,具体的贪心代码: 代码:
阅读全文
摘要:"C Hacker, pack your bags!" 谨记 函数是$O(nlog(n))$的复杂度。 我们对每一个旅途进行遍历,分别找到开始符合条件的那一个旅途,这里的复杂度可以用二分来降低,但是我们还需要找到一个满足条件而且权值最大的旅途,如果我们此时进行遍历的话,就是$O(n^2)$的复杂度了
阅读全文
摘要:"D. Aroma's Search" 首先根据数据范围可以知道,数据点最多只有50多个,因此这道题可以暴力来解 另外我们还知道,最优解的数据点一定是连续的,因为第$i+1$个点必然在第$i$个点的右上方。 因为其数据范围很小,所以我们只需要遍历所有的情况即可。 代码:
阅读全文
摘要:"C. Elections" 证明自己赢的时候获得的票数与贿赂所需的最小代价的函数是一个凸函数: 从自己赢的票数等于 n 的时候往小推,每一次减去一个最大的代价,但是要保证在该情况下能赢 刚开始是单调递增的,但是随着自己的票数越来越少以及某些人的票数越来越多,我们想要自己赢的票数再少一点,那么就应该
阅读全文
摘要:"D Minimax Problem" 首先先排除最暴力的$O(n^2)$做法。 当没有思路的时候,看看能不能够对答案进行二分,但是这个题是输出一对数组的下标,所以我们可以对最小值的最大值进行二分,看这个最大值存不存在。 对于每一行对 mid 的关系,我们可以对其进行状态压缩,大于等于的那一位就为1
阅读全文
摘要:"C. Two Arrays" $dp[i][j]$表示有$j$个数每个数的范围为$1~i$时的非递减排列种数,因为 n 和 m 的数据范围也不大,用记忆化搜索很快可以得出每一个值。 再来看满足条件时的$(a,b)$,$a$为非递减序列,$b$为非递增序列,所以$b$的最后一个数大于等于$a$的最后
阅读全文
摘要:"C. Petya and Exam" 重要的事情说三遍!认真读题!认真读题!认真读题! 思维要开阔一点,不要被局限住了。 因为 t 很大,所以我们不能遍历 t,但是 n 只有1e5,所以我们可以遍历每道题的截止时间。然后在其多余的时间内尽可能多的做后面还没有做过的简单题,做完了再做难题。 对于这组
阅读全文
摘要:"B. K for the Price of One (Hard Version)" 赛时失手推错了规律... 这个题不是单调递增的 但是它有一个规律:当买同样多的东西时,优先买便宜的 所以我们可以求出买 i 个东西时最便宜的价格 因为考虑到 n 只有2e5的范围,所以把每一个$dp[i]$都遍历一
阅读全文
摘要:"C. Mafia" 参考: "Editorial for Codeforces Round 202" 假设最终答案为$x$,则$(x a[i])$表示的是第$i$个人可以充当监护者的局数,而$\sum^n_{i=1}{(x a_i)}$表示得则是在进行$x$局游戏保证每一个人完过瘾的情况下,可以用
阅读全文
摘要:"C. Molly's Chemicals" 这道题的思路跟 "C. Summarize to the Power of Two" 十分的相似。都是要求关于某个数的倍数。 优化方式都是用一个 map 来储存存在的数字,然后用某个数的幂次方减去当前遍历数字,看 map 是否存在有这个值。因为转化为幂次
阅读全文
摘要:"C. DNA Alignment" 来推导一下这个题: 假设在给定的 s 串中,A,T,C,G分别有 a,b,c,d 个,而要匹配的串中有 A,B,C,D 个,所以其 ρ 值为$Aa+Bb+Cc+Dd$,而 $A+B+C+D=a+b+c+d=n$,我们可以自己掌控 A B C D 的多少, 试想一
阅读全文
摘要:"C. Vasya and Robot" 关键算法:二分、前缀和 刚看到题的时候一点想法都没有... 先观察一下数据范围$(1≤n≤2⋅10^5)(−10^9≤x,y≤10^9) $ 可以用两个数组$x[i],y[i]$来表示在$i$操作完之后的机器人的位置 然后可以发现题目要求的是最大位置和最小位
阅读全文
摘要:"E1. Median on Segments (Permutations Edition)" 参考: "CF1005E1 Median on Segments (Permutations Edition) 思维" 中位数为m的条件为,在那一段中,小于 m 的数的个数为 x 个,大于 m 的数有 y
阅读全文
摘要:"D. Polycarp and Div 3" 参考: "1005D Polycarp and Div 3" 做这道题要明白一些东西: 能够被3整除的数,其数位之和为3的倍数 如果把数分成一位一位,相邻三个不为0位置一定能够组成一个被3整除的数(111,112,121,122,211,212,221
阅读全文
摘要:"D Dr. Evil Underscores" 参考: "Codeforces Round 613 (Div. 2) Editorial" 其实比赛的时候就已经想到了基本上一样的解法,可是最后还是没有写出来... 具体思路就是分治,在二进制中,如果$a_1{\sim}a_n$,在该位上既有1又有0
阅读全文
摘要:"C Garland" 参考: "Codeforces Round 612 (Div. 2) A~E2 题解" 试了试暴力的方法,感觉不大行,所以转战dp 总共有四个状态$dp[x][i][j][bj]$,表示还有 i 个奇数,j 个偶数可以使用,x~n 位置的复杂度之和的最小值,且位置 x 1 的
阅读全文
摘要:"B Hyperset" "Codeforces Round 612 (Div. 2) A~E2 题解" 如果直接枚举的话,复杂度是$O(n^3)$,显而易见会超时,但是我们会发现一个道理,当其中两个确定的时候,另外一个也就已经确定下来了,而我们要做的工作只是去寻找有没有这样一个东西,与其遍历每一个
阅读全文
摘要:"D Portals" 参考: "CF1271D Portals dp 贪心" 主要要明白两点: 如果a和b都能够派兵前去把守c,且a b,那么从a派兵去把守c是更优解 派兵要派往分数最大的地方,要把有限的派兵机会用在最值的地方 要实现这两步,要学会反悔贪心法,即如果当前兵力不足以攻打下一个城池,那
阅读全文