CodeForces练习计划
- UPD1.0:2018.11.28
- UPD2.0:2018.11.29
- UPD3.0:2018.12.01
原则:有div1就做div1,否则div2,div3通常基本不做。
- 【CFRD#524】 6/6
- 【CFRD#523】0/6
- 【CFRD#522】4/5
- 【CFRD#521】7/7
- 【CFRD#520】6/6
- 【CFRD#518】4/5
- 【CFRD#517】div1[4/5]-div2[6/6]
- 【CFRD#516】6/6
- 【CFRD#514】5/5
- 【CFRD#513】5/8
- 【CFRD#508】5/6
- 【CFERD#48】5/7
- 【CFRD#498div3】1/6
后期逐步更新,有空的话就写写每套我做了的题目大意和题解,会同步放到这里。尽量做到不咕咕咕
还需深入理解和有其它更优秀的做法还未写的题:
CFRD513:{
- A:枚举用多少个8组成号码,剩下的数字看看除以10可不可以组成即可。
- B:贪心,第一个选最大的999999…,另外一个选这个数即可。
- C:枚举为矩阵有多高,选一个最小的,然后再扫一遍宽度即可,复杂度
- D:摆放位置没有影响,所以将分别排序后,对于每一个选,最后答案为,复杂度
- E:可以发现每两个点的最短距离变为原来的二分之一向下取整,但是原长为的还是,所以先算总的除以二,再加上原长为1的即可,复杂度
- FGH:不会,QAQ
}
CFRD514 :{
- A:模拟题意即可。
- B:扫一遍覆盖即可。
- C:因为是全排列,贪心,每次删除剩余序列的奇数位置的数即可,因为每次可以删掉一半,复杂度。
- D:先判断有无解,二分半径r,然后每次求距离x轴距离为r的那条线与所有点为圆心的半径r的在线段上的交集,有交集则可行,否则不可行,复杂度。
- E:按照bfs序,从叶子节点贪心往上合并即可。
}
CFRD516:{
- D:分段求取做法,n小于2e6枚举答案,2e6的复杂度,枚举转了多少轮的复杂度。
- E:置换贪心构造的方法,一开始对应就直接输出,否则一定可以构造到,随便舍弃一个,以那一个位置为置换的空位置换即可。
- F:hash+暴力可以卡过去,因为答案不超过1000,正解为后缀数组或者sam求lcp,线段树维护,dp转移,复杂度,目前没写后面的这种做法【推荐大佬blog】。
}
CFRD517 :{
- A:枚举能看的最大的页数,从后往前贪心枚举分配给第一天和第二天即可。
- B:贪心+DP,维护尽量需要放‘a’少的路径
- C:大区间每次贪心翻转3个,小区间二进制暴力枚举
- D:预处理质数因子的幂的排列,并hash,flyod贪心跑最小操作次数,每次枚举将其变成因子的幂的情况。假如,那么的因子个数为,所以只有因子的幂次数才影响因子个数。
}
CFRD518:{
-
A:设置表示当前在第个数字,值为,与前面一个相等,小于,大于的答案,转移用前缀和优化,复杂度为,发现等于的一维可以和大于或者小于的一维合并,再加滚动数组,可以优化到
-
B:直接拓扑排序判断,每次拿出度数为1的点,要判断除了第一层,每层的每个点有3个及其以上的儿子数,最后一层为k且只有一个点。
-
C:贪心构造,如,因为这样每层减少4个,而开始有几层是减少不到4个人,所以期望为个的。
-
D:首先找到最大,然后最大一直用的贪心会WA在105组数据,所以正解是凸包斜率优化dp+(矩阵优化或者等比数列求和)【推荐大佬blog】。
-
E:神仙题,不会,要用行列式和矩阵之类的东西,但是最后可以转化为求这颗树上的期望最大匹配数,用表示以为根的子树,匹不匹配的期望最大匹配数,然后的树形DP即可。
}
CFRD520 :{
- A:贪心找一个最长的连续的即可。
- B:最后肯定是将每一个质因子的次数变为1为最优答案,操作次数就是找出最大的一个质因子幂的次数,这个次数向上取整就是答案(因为每次开根,幂是除以2的)。
- C:贪心先吃1,然后再吃0,维护一个2的幂次的前缀和,推推式子,每次就可以的回答了。
- D:求一个最大欧拉回路,其实就是每个数和它的倍数都有正负,所以可以的值,暴力枚举一下倍数,复杂度为调和级数。
- E:每次都只删除当前区间在dfs序里面最左边或者最右边的一个点是最优的,所以线段树维护dfs序在原区间的最大最小值,再维护个区间lca就可以了
- F:拓扑排序两次,一次正向,一次反向,所以建两个图,找到一个点可以到它的和它可以到的点数,点数大于等于的才是重要或者次重要点(细节很多要注意)。
}
CFRD522 :{
- A:贪心分类讨论一下即可。
- B:bitset+背包暴力,或者每次组合数判断一下,只有全部一样的才能判断出来,(只有两种砝码的要特判,因为判断出一种另一种就知道了)
- C:树形DP,定义表示以为根的子树,与父亲匹配,与其中一个儿子匹配,不参与匹配的方案数。只有剩下的匹配点总数为偶数,黑白染色后黑白点的个数一样多才满足最大唯一,dp时已经保证这一点。
- D:
鹦鹉咕咕咕(滑稽,维护log棵倍增的线段树,每次跳即可,复杂度 - E:构造题,不会QAQ
}
CFRD521 :{
- A:求个奇偶个数即可。
- B:每次贪心,遇到一个101的就将这三个中最后那个1变成0即可。
- C:排序,维护个前缀和即可。
- D:二分次数,每次扫一遍判断即可。
- E:离散化将同种缩在一起,枚举开始选多少个,二分跳多少场即可,期望
- F:dp加个分层单调队列优化前缀最大即可。
}
CFRD523 :{
- A:直接除,向上取整即可。
- B:正负奇偶分类讨论一下,等差数列前缀和即可。
- C:覆盖,判断坐标和的奇偶便可以知道黑白,先分别算两个矩形,然后减去矩形交的即可。
- D:贪心构造,首先判断能否分次,然后二进制枚举去分,看是否在操作次数区间内即可。
- E:hash一下一个行区间的字母种类出现次数,枚举子矩阵判断即可,复杂度。
- F:将线段双关键字从大到小排序,然后维护主席树,下标为权值,对于每种权值维护前缀右端点最小,然后每次询问先lower_bound找到左端点符合的位置,查询前缀右端点最小的最大,看是否在询问区间内即可。
}