
CF200题计划
JingLuoZZZ
为什么努力?因为喜欢的人很优秀
展开
-
CodeForces 1249 F Maximum Weight Subset(树形dp))
题目: F.Maximum Weight Subset思路: 显然是树形dp没错了,重点在于如何处理和如何转移.我的做法是: dp[i][j] 表示距结点 i 最近为 j 的点集的最大权重和. 每次由叶子结点往父亲节点转移,很明显对于父亲结点 u, 叶子结...原创 2019-10-24 22:14:04 · 407 阅读 · 0 评论 -
CodeForces 1003 F - Abbreviation(暴力+kmp)
Problem:传送门Solution:直接暴力枚举每个区间,然后kmp找这个区间出现的次数.Ac_Code:#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <stack>#include <bits...原创 2019-10-13 15:45:55 · 355 阅读 · 0 评论 -
CodeForces 1228E Another Filling the Grid (组合数 + dp)
题目: 传送门思路: dp[ i ] [ j ] 表示到 第 i 行时 已经有 j 列有 1 的方案数. 设该行新增的有 1 的列数为 x,组合数位C,则 对于 x 的 取值有两种转移方式. 如果 x == 0 : 因为每行必须...原创 2019-09-30 00:26:35 · 275 阅读 · 0 评论 -
Codeforces Round #563 (Div. 2) A-D
A: 将2*n个数进行排序,然后检验一下前面n个和 后面n个和是否相同。AC_code原创 2019-06-04 10:18:09 · 222 阅读 · 0 评论 -
Codeforces Round #565 (Div. 3)
A:题目: A. Divide it!思路: 很明显变成 4/5n, 2/3n后又能被2整除,所以我们直接暴力就可以了。long long getans(long long x) { long long ans = 0; while( x!=0 && x%5 == 0) { ans += 3; ...原创 2019-06-12 21:05:23 · 238 阅读 · 0 评论 -
CodeForce 538-F A Heap of Heaps(主席树)
题目: 传送门思路: 咱用 离线+树状数组 逃了好多次课 ,终究还是 被抓回来补课了; 对于每个k,每个点我们都去查询 [k*(I-1)+2,min(n,k*I+1)] 区间中小于 a[I]的个数,我们写出这种区间的总数,用调和级数可知范围在 nlog n 以内,因为查询的区间太大了,而且...原创 2019-05-24 09:27:08 · 159 阅读 · 0 评论 -
CodeForce 915-EPhysical Education Lessons(线段树+离散化)
题目: 传送门思路:网上看了好多 动态开点的题解,但我好像离散化搞了一下就过了,就写了一下我的逃课写法。其本质还是一道区间修改板子题。我们将 q 次操作的所有点 都 统计起来离散化一下 ,同时 我们在 从小到大排序后 两个相邻值 之间还有间隙的位置之间再离线化一个新数取表示他们之间的一个区间。然后后面只要进行正常的线段树操作就行了。参考代码...原创 2019-05-16 23:07:21 · 147 阅读 · 0 评论 -
CodeForces 1136D - Nastya Is Buying Lunch (贪心)
题目: 传送门思路: 很明显,如果编号为 i 的同学要跟编号 为 j 的同学交换位置,他必须能跟它们之间所有的人都能交换,这样 i 同学才能到达j同学的前面相邻的位置,而这样对 j 同学的位置的贡献只是向前 +1 位. 有了上述的结论,那么对于最后一个位置的同学也是如此,而且从贪心的角度来考虑,我们...原创 2019-05-21 22:38:59 · 171 阅读 · 0 评论 -
CodeForces 1165 F1+F2 Microtransactions
题目: F1 F2思路:我们可以用 二分 + 贪心 的方法 来做.我们不妨 二分 天数 ,判断这天如果采用最优策略能不能买到所有物品, 那么 一定有一天 D恰好能买到所有物品,而D的左边天数是就算采用最优策略也不能买到的,D的右边的天数是一定可以采用最优策略买到的,所以我们可以反证二分的方法是合理的,D就是我们要求的天数.现在我们确定了基本思路,要考虑最优策略的问题,当我们判断...原创 2019-05-16 01:38:43 · 395 阅读 · 0 评论 -
CodeForces 1166C A Tale of Two Lans(尺取法)
题目: 传送门思路:我们可以通过分情况讨论 , 发现只要 X,Y的绝对值 满足 x >= y/2(y > x) 就是合理的二元关系。那我们不妨将输入的数据存其的绝对值,然后 sort 排序一下 ,然后找 a[i] /2 的 部分 更新ans 就可以了。你可以直接采用 二分 的,但是 其实可以 用 尺取法 来 解决问题 复杂度是 o(2n),比二分更优我们能采用 尺取法的原因是...原创 2019-05-21 03:38:25 · 413 阅读 · 0 评论 -
Code Foreces 1165 -E Two Arrays and Sum of Functions
题目: 传送门思路: 首先我们要知道的是两个数组匹配相乘,大的数乘小的数,小的数乘大的数之和这样结果是最小的。(挑战程序设计 P125有证明,我不再多述).知道上述理论了之后我们不妨考虑转换成 两个数组匹配相乘的情况.我们不妨认为 c 数组 为 a i * b i 得到的 ,对于第 i 位 我们所要求的最小值一定 加了 i*(n-i+1) 次。 那么该最小值可以用 c i * i * ...原创 2019-05-15 15:40:04 · 122 阅读 · 0 评论 -
CodeForces - 620E New Year Tree(bitset + 线段树)
题目: 传送门思路: 第二次遇到要用bitset的题,这道题还是很简单的, 先dfs预处理一下,然后我们用bitset来记录每种颜色是否存在即可. 不了解bitset的小伙伴可戳bitset介绍Ac_Code#include <iostream>...原创 2019-07-29 10:02:09 · 171 阅读 · 0 评论 -
CodeForces-453B Little Pony and Harmony Chest(状压DP)
题目:传统们思路: 我们把每个数的质因子都压成状态,dp[i][j]表示在第i位已经是状态 j的最小和. 对于一个状态j如果其第k位为1,表示从2开始第k个质因子已经出现过.Ac_Code#include <iostream>#include <algorithm>#include...原创 2019-07-30 20:16:13 · 178 阅读 · 0 评论 -
CodeForces 920E-Connected Components?(线段树暴力)
题目: 传送门思路: 因为题目给出了没有相连的点,那么我们不妨假设刚开始所有点都是相连的,然后再逐渐删边,很明显对于一个联通块,如果有点到这个联通块有至少一条边,那么说明这个点也在联通块内. 那我们不妨从某点开始,初始其他点到该点都有一条路径(为1),然后将没有相连的点-...原创 2019-08-01 12:40:31 · 309 阅读 · 0 评论 -
CodeForces 1238 F The Maximum Subtree(树形dp)
题目:传送门思路:分析题意会发现,每个所选择的点只能有两条分支长度大于 2, 其他长度只能为1.我们考虑树形dp,对于每个节点我们先考虑他和他的两个儿子分支构成的结果,在更新其分支的最大值,向上传递Ac_Code:#include <iostream>#include <cstdio>#include <algorithm>#include &...原创 2019-10-10 13:41:04 · 400 阅读 · 0 评论 -
CodeForces 1238-E Keyboard Purchase(状压DP)
题目:传送门思路:先预处理出所有的字符的贡献对,例如 abcd,则贡献对为(a,b),(b,c),(c,d) 均为一个.如果在新建盘中一个字符 位置 pos , 则与其有关的贡献对中,编号比他大的对中就要减去它,即为 - pos, 反之就是加上它,即为 +pos 。可以看出我们可以把 单个字符的贡献单独放出来算,所以我们考虑直接枚举顺序,每次维护最小值.而状压dp转移的过程中恰好可以将...原创 2019-10-10 13:36:02 · 318 阅读 · 0 评论 -
CodeForces 1238-D AB-string
题目:传送门思路:因为字符串只有A和B两种字符,我们不妨研究一下符合条件的特点.对于一个字符串我们将相同的连续的分为一段,如果分成了三段,则可以构成 ABA 或者 BAB类的回文串,则三段以上都是成立的,如果分成了两段,如果有一段连续的个数为 1,则是构不成回文串的,如果只有一个段,很明显个数为 1不符合其他均符合.可以发现不符合条件的串的特点很明显,所以我们考虑计算不符合条件的串,然后...原创 2019-10-09 22:17:00 · 623 阅读 · 0 评论 -
CodeForces 999 -F Cards and Joy (dp)
题目:传送门思路:贪心角度出发,牌 i 肯定全部都要发给 喜欢 牌 i 的 人;那么题目就转换为了 i 个人 拿 k 张喜欢的牌的最大值求和问题.dp[i][j] 表示 i 个人 拿了 j 张牌的 最大值. 转移 : dp[i][j] = max(dp[i-1][j-l]+h[l]);Ac_Code:#include <iostream>#include <cst...原创 2019-10-06 22:25:39 · 211 阅读 · 0 评论 -
CodeForces - 999E Reachability from the Capital(贪心 + dfs暴力)
题目:传送门思路:网上博客好像不是虚拟边就是缩点,其实只要每次对与首都不链接的点dfs一次,找到能经过点最多的点,将其与首都连边就可以了,复杂度分析其实是和虚拟边的复杂度相同.要加个小优化,因为可能最多要进行 n2 次 dfs , 我们直接更新标记数组会T, 我们考虑新增一个 now变量,每次dfs前 now++ ,通过 标记数组是否等于 now 来判断这次dfs 是否经过该点.(这样我们...原创 2019-10-06 21:53:17 · 190 阅读 · 0 评论 -
CodeForces 1208-F Bits And Pieces (SosDp)
Problem: 传送门Solution: Dp[i] 表示 i 出现的次数,注意我们这里的出现次数不是单纯的 i 出现多少次 , 如果某个数的子集包含 i , 则 i 的出现次数也会增加. 如果dp[i] >= 2,说明一定存在两个数 按位与 的值是 包含 i 的...原创 2019-10-05 14:50:36 · 237 阅读 · 0 评论 -
CodeForces 1230-F Konrad and Company Evaluation(图论)
题目: 添加链接描述思路: 每进行一次操作,该点就会成为最大的点,所有指向它的边都要反转,我们讨论一下结果. 设被修改的节点是 B,A为指向B的节点,out[x]表示节点X指向其他节点的边数. 在对B进行操作了之后, A->B->out[B]的贡献全部消失,但增加了 B->A->out[A]的贡献.那我们考虑每次枚举指向 B的节...原创 2019-10-02 11:07:49 · 243 阅读 · 0 评论 -
CodeForces 1231-E Middle-Out (思维 + 指针)
题目: 传送门思路: 我们从逆向的思维考虑,即每次将 T串的头部或尾部放到任意位置,使其成为 S串. 那么从贪心的角度想我们肯定希望每个数最多只进行一次交换,最终就能符合结果. 很明显 如果我们可以把T串分为三部分, 分别为 需要移动的部分,不需要移动的部分,需要移动的部分,不需要移动的部分肯定是 S串的子序列,这样他才能满足不需要移动就可以让最终结果满...原创 2019-10-01 16:23:33 · 328 阅读 · 0 评论 -
CodeForces 1165-D Almost All Divisors
题目:传送门思路: 给出了除了它本身 和 1 的所有因子,那么我们只要凑成对子然后看他们乘积是否相同即可 , 算出的 ans 要判断他的因子个数是否与题目所给的因子个数相同,如果不同则输出“-1” (例如 1 4 , 2 4 12 这种情况)参考代码:long long a[310];int n;bool is_ok(long long x) { int len = 0; ...原创 2019-05-15 15:23:14 · 277 阅读 · 0 评论 -
CodeForces 1165-C Good String
题目: 传送门思路: 可以证明的是,从头到尾直接遍历,是合理的方法.证明: 如果在原串中存在多个不合理的位置,那么前面的位置一定是要被删去的,因为前面的位置不受后面位置删去的影响,而后面位置的可能因为前面位置的删去使得这个位置合理了,虽然可能前面删去会导致后面原本不合理的位置变得不合理...原创 2019-05-15 15:14:40 · 699 阅读 · 0 评论 -
CodeForces 1165-B Polycarp Training
题目: 传送门思路: 将所有比赛进项排序,对于 第k天,我们从贪心的角度出发肯定要选最接近 k 题的 比赛(不能比k题小)。这样的话第 k-1天所选比赛的题数小于等于 k 天 的比赛题数,所以我们的这个方法的复杂度是线性的。参考代码如下int a[200050];int main() { int n; cin>>n; for(int i=0;i<n...原创 2019-05-15 14:50:40 · 426 阅读 · 0 评论 -
Codeforces-1140D Minimum Triangulation(假DP贪心+真水题)
题目: 传送门思路: 将一个多边形划分成多个三角形,一定有个顶点,所有三角形会经过这个点,我们不妨把这个点成为聚点,用dp[i]表示聚点为i时三角形的权值和,当n为5时,i 为1是,dp[1] = 1* 2* 3+1* 3* 4+1* 4* 5.dp[2] = 2* 3* 4+2* 4* 5+2* 5* 1.可以得出dp[2] = (dp[1] - 1*2 3) / 1 2+215.则 dp...原创 2019-03-28 16:34:13 · 450 阅读 · 2 评论 -
CF 1141 - B Maximal Continuous Rest
题目: 传送门思路: 即求最长的 1 连续子串,可以DP。因为数据范围不大,当时我直接考虑所有情况暴力了。#include <iostream>#include <algorithm>using namespace std;int a[200010];int main() { int n; cin>>n; for(int...原创 2019-04-11 11:35:55 · 208 阅读 · 0 评论 -
CF 1141-A Game 23(简单数学)
题目: 传送门思路: 要保证 a 能通过 乘法得到 b ,则 最大公约数GCD(a.b) == a.否则一定不能 得到,同时, b/a 的值一定并只能 是 二或 三的倍数,否则就不能得到.#include <iostream>#include <algorithm>using namespace std;long long gcd(long long a,lo...原创 2019-04-11 11:22:47 · 166 阅读 · 0 评论 -
CF 1139-C Edgy Trees(并查集)
题目: 传送门思路: 因为选拔赛做过一道类似的题,所以直接就想到并查集了,不得不说这很巧妙。对于题目给的每条线路,如果为 1 就不并 , 为 0 就 将二者合并 , 这样最后会的到几个集合,如果要从一个集合的某点到另一个集合的某点,则一定会经过 1 的道路。 反过来 ,集合内的点到集合内的点是不会经过含有 1 的道路的,所以我们只要用所有走法减去这样的走法就可以了。#include <...原创 2019-04-11 11:12:02 · 217 阅读 · 0 评论 -
Codeforces 1140B - Good String (思维)
题目: 传送门题意: 现在给你一个只含 ‘<’ , ‘>’ 字符串,‘<’ 可以移走与它相邻的左边的字符,’>‘ 相反。现在问你在我们进行移走字符操作之前,我们最少要先删除多少个字符,才能得到一个Good String (整个字符串只含有一个字符).思路: 我们得到的Good String 无非就是两种类型,只含有’<’或者只含有‘>‘。那如果求得最小的删除...原创 2019-03-28 10:43:16 · 380 阅读 · 0 评论 -
Codeforces-1140A Detective Book(思维)
题目:传送门题意: 我们拥有一本书,书中每一页都有一个谜题,在后面的页或当前页会有解释。Ivan每天都会看这本书,而且他还有个习惯,就是每天要把看到的所有谜题的题解看到才会停下来,问Ivan看完这本书需要多少天.样例输入样例输出9 1 3 3 6 7 6 8 8 94思路: 很明显,每天看到的最多页数,就是之前看的页数中谜题解释最大的页数。for遍历一遍就好了。代...原创 2019-03-28 10:23:51 · 333 阅读 · 0 评论 -
codeforeces 1140C Playlist(贪心)
题目: 传送门思路: 我们选择K个物品的时候,最高的beauty取决于最小值和总长度,我们可以先考虑按beauty从大到小排序,这样我们选择到第i个物品时,该物品的beauty一定是最小的,这是我们只要选择前 i个中长度前k-1个物品就可以得到一个可能的最大值.AC代码:...原创 2019-03-28 00:00:48 · 155 阅读 · 0 评论 -
CF 1139-B Chocolates(贪心)
题目:传送门思路: 因为0之后一定是递增序列,我们可以从后往前DP,根据贪心思想每次尽量取最大值.代码:#include <iostream>#define maxn 1000000090using namespace std;long long a[200050];int main() { long long n; cin>>n; l...原创 2019-04-01 08:49:25 · 361 阅读 · 0 评论 -
CF 1139A-Even Substrings(签到题)
题目:传送门思路: FOR一遍遍历即可。 int n; cin>>n; string s; cin>>s; long long ans =0; for(int i=0;i<n;i++) { if((s[i]-'0')%2==0) ans+=(i+1); else continue; ...原创 2019-04-01 08:45:20 · 258 阅读 · 0 评论 -
CF 1141-C. Polycarp Restores Permutation
题目: 传送门思路:原创 2019-04-15 08:51:10 · 232 阅读 · 0 评论 -
CodeForces1141D - Colored Boots(贪心 + 模拟)
题目: 传送门思路: 先统计每个字符串每个字符的数量,然后针对每个不为"?“的字符,先让两个字符串的该字符相配对,如果不够,便使用”?",最后将两边剩余的"?“配对即可,难度感觉不大,就是操作繁琐,细节处理.int n;queue<pair<int,int> > q_ed;queue<int> q1[27];queue<int> q2;s...原创 2019-04-15 08:57:09 · 220 阅读 · 0 评论 -
CodeForces 1141E - Superhero Battle(数学)
题目: 传送门思路: 一道数学,大体就是计算一下每个循环的净伤害量,然后看要几个循环才能杀死,如果为正数则永远杀不死,注意有个特殊情况,例如 怪兽血量为 100 时 回合的情况为 -100 +200, 这种情况的循环净伤害量为 +100,但是在第一回合就能杀死。long long hp,n;long long a[200050];int main() { cin>>...原创 2019-04-15 09:05:06 · 337 阅读 · 0 评论 -
CodeForces 1165-A Remainde
题目:传送门**思路:**考虑从 0 位 到 x 位之间 的 情况即可, 在这个区间除了 第 y 位其他位置都不能有 1,第 x 位有 1 无 1 都无影响 ,遍历一遍即可。赛后很多人的 A 题都被hack掉了,看了一下test 好像大部分都是因为这个原因.参考代码如下: int n,x,y; string s; cin>>n>>x>&g...原创 2019-05-15 14:42:40 · 435 阅读 · 0 评论 -
CodeForces 1144D -Equalize Them All
题目: 传送门思路: 很明显题中所给的操作就是将相邻的两个数变成相等的,我们假设最后的数都变为K,很明显我们从本身就等于K的位置开始,向左边和右边进行该操作,每个不等于 K 的位置只要进行一次操作就能变为K,为了这种位置更少,我们理所当然的要选择 原序列中 出现次数最多的数当K。int vis[200050];int a[200050];int main() { int n,ma...原创 2019-04-18 11:37:50 · 290 阅读 · 0 评论 -
CodeForces1144 C - Two Shuffled Sequences
题目: 传送门思路: 判断是否有三种以上重复的数,如果有则不能构成,原创 2019-04-15 10:40:54 · 253 阅读 · 0 评论