![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
专题
chunyo
04年蒟蒻 <- cf & atcoder & nowcoder
展开
-
String Bags
分组背包原创 2024-03-28 12:17:33 · 413 阅读 · 0 评论 -
Watering an Array
贪心 假如 a[] 全是0 那么答案是 day / 2现在考虑a[] 最开始那一次 该怎么做?枚举在哪一天清零即可 然后模拟b[]的操作 遍历a[]原创 2024-03-27 00:50:17 · 317 阅读 · 0 评论 -
Bitwise Operation Wizard
位运算XOR原创 2024-03-14 22:10:42 · 391 阅读 · 0 评论 -
Rudolf and k Bridges
切记看清题目: 最后需要把答案进行一个遍历求范围答案 不是sort最小值 因为是连续的桥!我们考虑一下每次其实只是需要前一个范围内的最小值 所以只需要用优先队列维护就行。当这个最小值对应的index适用就直接 f[i] = value + a[i]暴力dp不行 因为m为2e5 不可能来回遍历数组。优先队列里存 value 和 index。不适用的时候及时 pop。原创 2024-03-13 21:22:51 · 519 阅读 · 0 评论 -
Rudolf and the Ball Game
题目说了n*m <= 2e5 所以我们应该手写 清零。原因在每次都memset了1010*1010。暴力枚举每一个妆台的转换条件。原创 2024-03-12 22:19:15 · 700 阅读 · 1 评论 -
Find a Mine
【代码】Find a Mine。原创 2024-03-09 23:57:34 · 366 阅读 · 1 评论 -
Copil Copac Draws Trees
前提:建树用的是 vector<PII> v[N] 代表着 u:{v1,i} {v2,i} {v3,i} i为编号,u->v是一条边。之后dfs它们,观察它们出现的次序,如果v比u先出现就得 f[v] = f[u] + 1 否则 f[v] = f[u]令f[u]代表u节点需要经历多少次这样。我们先假设把这颗树建完。最后输出最大的f就行。原创 2024-03-07 17:19:29 · 761 阅读 · 1 评论 -
anon的私货
第一个单独讨论 最后一个不需要单独讨论,直接默认a[n+1] = INF就行。从头到尾充分利用每一个数即可。原创 2024-03-03 17:15:35 · 353 阅读 · 1 评论 -
人生的起落
全部按 2 1 2 1 构造情况比较多:n = 1 只有 k = 0 才能满足n = 2 只有k = 0 才能满足(1) n >= 3的时候才可以有:k = 0 直接 1 1 1 …… s-n+1 构造(2) k!= 0:首先 n < 2 * k + 1 是不可能的n > 2 * k + 1 的时候直接 2 1 2 1……(n-(3 * k + 2)-(n-2*k+1-1))由于是恰好出现k次 所以在第2*k+2的数字一定把他搞大一点 后面全是1就行(这里怎么凑都行)原创 2024-03-03 01:06:55 · 345 阅读 · 1 评论 -
绝妙的平衡
小红希望你给每个节点的权值赋值为 1 或者 2,需要满足每个红色节点的子树节点权值之和为 3 的倍数。如果和取模后为1 比如只有两个点 (2+2)%3 = 1那么就让一个点变成1就好。总结 我们需要做的就是找到所有以红点为root的子树遍历它有至少两个节点就可以了。小红拿到了一棵有根树,其中有一些节点被染成了红色。树的根节点是 1 号节点。首先 全是红色不行 因为只能赋值 1 或 2。那么在以一个红点为root的树中是什么样子呢?所以只要满足至少有两个点 就可以满足情况。2呢 就让那两个点变成1。原创 2024-03-01 21:57:42 · 544 阅读 · 1 评论