随笔分类 -  Codeforces

摘要:来自某个废物时隔n天的补题 我怎么这么菜.jpg 有了B1的经验,我们很容易想到对于长度奇偶的分类 首先明确两件事情(根据B1): 回文时,偶数后手必胜 回文时,奇数中间是1或者有n-1个1的时候后手必胜,中间为0且不是n-1个1时时先手必胜 基于上面两点,很容易扩展到这道题(真的吗?) 对于长度为 阅读全文
posted @ 2021-05-31 17:11 cminus 阅读(90) 评论(0) 推荐(0)
摘要:场上糊了一个小时都没糊出来(我甚至写了个假算法前半个多小时还没找到反例) 因为题目最后要求我们得到的是一条链,删除的边的数量和加边的数量一样多,所以我们要让删除的边最少。又因为我们要得到的一条链肯定是由多条组合起来的,而原树是由多条链构成的,我们最少要删除链数-1条边,那么问题转换成了如何把树划分成 阅读全文
posted @ 2021-05-10 19:31 cminus 阅读(112) 评论(0) 推荐(0)
摘要:我到底是多菜才能这道题都做不出来啊 似乎是t神几分钟就写出来的题目 这道题的重点在于求长度为k的最短路,我的误区在于我一直想用各种最短路算法来解决,但是完全不需要 显然这种限制具体步数的问题可以用DP或者说是分层图来解决,当然从本质上来说分层图就是一种DP,考虑dp[k][i][j]表示从(i, j 阅读全文
posted @ 2021-05-07 21:20 cminus 阅读(43) 评论(0) 推荐(0)
摘要:这题在场上卡了我很久,研究了一段时间题解之后觉得非常精妙,所以决定认真写一写题解 第一种方法: 就是题解方法,我们考虑对于数字串的每个数字加入哪一个串,此时第一个串末尾是t1,第二个是t2,当前这个是x \(x \neq t1\) && \(x = t2\) 或者 \(x = t1\) && \(x 阅读全文
posted @ 2021-02-16 16:24 cminus 阅读(69) 评论(0) 推荐(0)
摘要:简单构造,推了一会就推出来了,无法理解为啥有2500分,感觉还不如一些1900的题( #include <bits/stdc++.h> using namespace std; int main() { int t; scanf("%d", &t); while (t--) { int n; sca 阅读全文
posted @ 2021-02-02 15:06 cminus 阅读(78) 评论(0) 推荐(0)
摘要:最优贸易 分层图SPFA,三层图,第二层是购买,第三层是卖出,但是虽然没有卡SPFA,最坏情况下复杂度是会到$O(n^2)$的 Tarjan强连通分量缩点+DP(ps:很麻烦) 最优解,把所有的点从小到大排序,从最小的点开始尽可能BFS更新所有点,所以复杂度是$O(m + n)$ 飞行路线 分层图裸 阅读全文
posted @ 2021-01-25 01:29 cminus 阅读(69) 评论(0) 推荐(0)
摘要:\(x > y\) 的时候,每次都在降低,直接看能不能撑住t次 \(x <= y\) 的时候,情况比较复杂一些,可以这样考虑,只有在当前的水量已经没办法再减少,又无法加 \(y\) 的情况下,才会出现超出范围,所以如果 \(l-r\) 的范围是超过或者等于 \(x+y\) 的,是不会出现这种情况的, 阅读全文
posted @ 2021-01-17 22:07 cminus 阅读(63) 评论(0) 推荐(0)
摘要:用了很神奇的办法,对于每一个数,取反,暴力找它所有子集,如果dfs到的数字又是我们输入的数字,就继续取反暴力找子集 #include <bits/stdc++.h> using namespace std; const int N = (1 << 23) + 10; int a[N]; bool v 阅读全文
posted @ 2020-12-06 20:20 cminus 阅读(91) 评论(0) 推荐(0)
摘要:显然,为了让 max(b[n], c[1]) 最小,当 a[i] > a[i - 1]时,b[i] = b[i - 1] + a[i] - a[i - 1], c[i] = c[i - 1]。当a[i] < a[i - 1]时,b[i] = b[i - 1], c[i] = c[i - 1] + a 阅读全文
posted @ 2020-09-24 20:55 cminus 阅读(158) 评论(0) 推荐(0)
摘要:我无法形容出这道题的题解,实在是太麻烦了,但是自己开的题,跪着也要做完,放个std仅供对拍 #include <cstdio> #include <algorithm> #include <vector> #include <cstring> using namespace std; const i 阅读全文
posted @ 2020-04-08 18:13 cminus 阅读(380) 评论(0) 推荐(0)
摘要:挂机一个多小时都没想出来这道题,不过好在前四题切的快还是上分了 看到有人说这题是区间DP裸题...我怀疑我要回炉再造了 两种解法,一种是O(n^3)的区间DP 先预处理哪些段可以合并成为一个数字,复杂度n^3,再区间DP f(i, j) = min(f(i, k) + f(k + 1, j)) ( 阅读全文
posted @ 2020-03-11 13:39 cminus 阅读(205) 评论(0) 推荐(0)
摘要:又上分了,好像打的还可以就会懒得补后面的题 A.Kuroni and the Gifts sort一下,没什么好说的 B.Kuroni and Simple Strings 很容易(并非)可以看出最多只需要一次就可以了,举个例子假设你两次删除的分别是(())和 (),你会发现你只需要删除( ( )  阅读全文
posted @ 2020-03-04 15:53 cminus 阅读(152) 评论(0) 推荐(0)
摘要:从左往右扫,找到比第i个小的第一个数字,l[i] = l[last] + (i - last) * m[i],用单调栈O(n)维护这个过程,再从右往左扫,同理可以算出r数组,注意一下long long #include <bits/stdc++.h> using namespace std; con 阅读全文
posted @ 2020-02-27 17:10 cminus 阅读(110) 评论(0) 推荐(0)
摘要:ABC实在是没什么好说的,但是D题真的太妙了,详细的说一下吧 首先思路是对于a相等的分类,假设有n个,则肯定要把n-1个都增加,因为a都是相等的,所以肯定是增加t小的分类,也就是说每次都能处理一个分类,复杂度是O(n^2),这个思路很好写,优先队列随便搞一下就行了,但是题目中N = 2 * 1e5, 阅读全文
posted @ 2020-02-26 17:36 cminus 阅读(239) 评论(0) 推荐(0)
摘要:又是隔了一年才来补题的我 A、B水题就不用说了 C - Yet Another Walking Robot C题我居然卡了一会,最后决定用map水,结果出来看了看题解,居然真的是map...没想到会出这样题解用stl的方法,是我失策了 #include <cstdio> #include <algo 阅读全文
posted @ 2020-02-16 13:49 cminus 阅读(119) 评论(0) 推荐(0)
摘要:最近网课也开始了,牛客上一堆比赛题目也没补,所以就D题后面的也懒得补了 A.Three String 水题 #include <cstdio> #include <cstring> using namespace std; char a[100010], b[100010], c[100010]; 阅读全文
posted @ 2020-02-14 14:03 cminus 阅读(180) 评论(0) 推荐(0)
摘要:过了n天补的题解:D AB就不用说了 C. Obtain The String 思路挺简单的,就是贪心,但是直接贪心的复杂度是O(|s|*|t|),会超时,所以需要用到序列自动机 虽然名字很高端但是就是个数组啦(不过我自己想不到就是了) next[i][j]表示i之后第一次出现j字符的位置,用这个函 阅读全文
posted @ 2020-02-10 17:56 cminus 阅读(124) 评论(0) 推荐(0)
摘要:水题 阅读全文
posted @ 2019-12-02 19:21 cminus 阅读(168) 评论(0) 推荐(0)
摘要:快乐二分 用前缀和随便搞一下 阅读全文
posted @ 2019-11-30 20:53 cminus 阅读(132) 评论(0) 推荐(0)
摘要:tag里有二分,非常的神奇,我用暴力做的,等下去看看二分的题解 但是那个数组的大小是我瞎开的,但是居然没有问题233 阅读全文
posted @ 2019-11-30 18:27 cminus 阅读(134) 评论(0) 推荐(0)