随笔分类 - cf 杂题
摘要:链接 : C. Moamen and XOR 题意 : 给定 \(n\) 个数和 \(k\), 保证每个数 \(a_i\lt 2^k\), 问使得 \(a_1 \ \&\ a_2\ \&\ a_3\ \&\ ...\ \&\ a_n \ge a_1 \oplus a_2 \oplus a_3 \op
阅读全文
摘要:C. AquaMoon and Strange Sort 思路 : 对于任意一个数$a_i$, 它在原序列中出现在奇数位置的次数也一定等于在正确序列中出现在奇数位置的次数, 否则, 就一定会出现$left$, 也就是相当于移动了奇数次. 同理, 在原序列中出现在偶数位置的次数也一定等于在正确序列中出
阅读全文
摘要:[D. Make The Fence Great Again](Problem - 1221D - Codeforces) 思路 每个数最多加两次, 想明白这个直接 dp 就可以了. \(f[i][j]:表示前i个满足题意并且第i个数加j次的最小花销.\) #include <bits/stdc++
阅读全文
摘要:C. Valera and Elections dp + dfs 题意 一棵树, 树边有的有标记有的没标记, 如果选择一个点, 能将点到根最短路径上的边全部打上标记, 问最少选几个点, 使所有的边都被打上标记. 思路 \(f[i]:表示最少需要选择的点数使以i为根的子树都被标记.\) 因此如果u的邻
阅读全文
摘要:D. Min Cost String 如果有k个字母能用, 那么可以去构造一个长度为k * k的序列使其价值为0(即不存在s[i] == s[j] && s[i + 1] == s[j + 1]). 如何构造? 比如当k = 3时: \(s:aabacbbcc\) 这个序列的价值为0. 再如k =
阅读全文
摘要:http://codeforces.com/contest/1513/problem/C dp $f[i][j]:$表示当前数位上为i(0~9), 加法次数为j最终形成的数位. f[i][j] = f[i - 1][j + 1]; f[9][j] = f[1][j + 1] + f[0][j + 1
阅读全文
摘要:C. 1D Sokoban 思路参考 思路 \(我们去枚举每一个b[i]为k,将其作为向右推箱子走到的最远的下标,那么答案就有左右两部分:\) \(右边:最远动过的箱子到k,那么对于初始位置\ge k且处于特殊位置的箱子要算入答案.f[i]表示从i到n箱子已经在特殊位置的个数.\) \(左边: 对于
阅读全文
摘要:B. Berland Crossword \(直接去枚举四个角落,注意枚举的方法,本题如何写的简洁很关键.\) #include <bits/stdc++.h> using namespace std; #define IO ios::sync_with_stdio(false);cin.tie(0
阅读全文
摘要:Maximum width $如何在m个点中找到最大的间隔? $ \(预处理l[],r[]分别表示第i个点最左可以在哪和最右可以在拿\) \(ans=max(ans,r[i+1]-l[i])\) #include <bits/stdc++.h> using namespace std; #defin
阅读全文
摘要:Max Median \(题意:给定长度为n的序列,找到一个子序列长度\ge k的a[l..r],使中位数最大\) \(二分答案\) \(将大于等于x的数标记为1,否者标记为-1,求一遍前缀和可快速确定x能否为这一段的中位数\) \(因为长度不确定所以再记录前缀的最小值,那么若满足s[i]-ms[i
阅读全文
摘要:Glass Half Spilled \(dp\) \(f[k][j]表示选k个杯子,总体积为j的条件下装水的最大值\) \(转移方程:f[k][j]=max(f[k][j],f[k-1][j-v[i]]+w[i])\) \(注意初始化,很多方案是不合法的\) \(对于每一个f[k][j],它的答案
阅读全文
摘要:http://codeforces.com/contest/1467/problem/B 题意 \(一个数列里有波峰波谷\) \(波谷:a[i]<min(a[i+1],a[i-1]])\) \(波峰:a[i]>max(a[i+1],a[i-1])\) \(sum = 波峰数+波谷数\) \(若可以任
阅读全文
摘要:http://codeforces.com/contest/1481/problem/C 题意 \(给n个数,要变成另外n个数,问依次做出m次变换能否成功.\) 思路 \(对于这m个数\) \(如果c[i]不在b中:\) \(如果是最后一个,一定不能成功.\) \(不是最后一个,要考虑它被后面的数覆
阅读全文
摘要:https://codeforces.com/contest/1476/problem/D 题意 给 \(n + 1\) 个点和它们之间连接关系, 两点之间是单向的, 每走过一条边, 所有的边反向, 问从某个点开始出发, 能走过的最长的路径是多少 思路 一开始以为要建图, 实际上算是线性dp \(用
阅读全文
摘要:链接 : https://codeforces.com/contest/1475/problem/D 排序 + 双指针 #include <bits/stdc++.h> using namespace std; #define IO ios::sync_with_stdio(false);cin.t
阅读全文
摘要:链接 : http://codeforces.com/problemset/problem/1426/E 代码 #include <bits/stdc++.h> using namespace std; #define IO ios::sync_with_stdio(false);cin.tie(0
阅读全文
摘要:链接 : http://codeforces.com/problemset/problem/1446/B 最长公共子序列的变式 代码 #include <bits/stdc++.h> using namespace std; #define IO ios::sync_with_stdio(false
阅读全文
摘要:链接 : http://codeforces.com/problemset/problem/1428/D 参考于 : https://blog.csdn.net/qq_45928596/article/details/109140414 看了别人的思路写的, 狂wa, 惨! 代码 #include
阅读全文
摘要:链接 : http://codeforces.com/problemset/problem/1437/D 标签 : trees greedy *1600 题意 : 用bfs序构造一棵树, 保证每个根节点的子节点按升序排列, 问高度最低是多少. 思路 : 先处理出一个记录每一个递增序列中元素个数的数组
阅读全文
摘要:链接 : http://codeforces.com/problemset/problem/1436/D 思路见 : https://www.cnblogs.com/blacktion/p/13872413.html 代码 #include <bits/stdc++.h> using namespa
阅读全文

浙公网安备 33010602011771号