摘要: E1. String Coloring (easy version) 观察样例我们发现要是最长下降子序列要是>=3 那我们显然不可能有解 然后我们考虑构造 要是最长最长下降子序列只是2的话 那显然我们只需要让在后面的比较小的值 也就是下降子序列的第二个位置变成1 其他位置都是0 即可 #includ 阅读全文
posted @ 2022-10-31 20:51 ycllz 阅读(15) 评论(0) 推荐(0)
摘要: E. Count The Blocks 我们注意他不是一个数里面选出一个来这种很恶心的 这种计数不管该数里有啥其他的我们只需要构造一定有这一种的就可以了 我们设当前我们要的是长度为len都相同的数字 这个长度为len的段可以放置的位置有n-len+1个 我们分类讨论: 要是他放在头和尾 就是前面没有 阅读全文
posted @ 2022-10-31 20:06 ycllz 阅读(19) 评论(0) 推荐(0)
摘要: B. Unmerge 看完样例发现 3 1 2 4 3后面跟着的1 2肯定是和3一组的 因为他们不如3大所以他们一定是被直接排出来的 就这样我们可以将这个序列分成好多组 然后就是金典背包 选与不选 注意的是他的n是2000 然后序列就是4000 所以我们数组要开成4000 #include <bit 阅读全文
posted @ 2022-10-31 16:49 ycllz 阅读(21) 评论(0) 推荐(0)
摘要: A. Extreme Subtraction 我们知道一个性质就是要是能把一个序列全部变成0 当且仅当他们可以变成所有数都是一样的 我们观察操作考虑差分 性质就变成了 if(i>=2&&i<=n)a[i]=0; 我们两个操作就变成了: 1.a[1]-- a[i]++ 2.a[i]-- a[n+1]+ 阅读全文
posted @ 2022-10-31 15:40 ycllz 阅读(22) 评论(0) 推荐(0)
摘要: B. Catching Cheaters 对于我们做过的模板提来说 这道题是子串 那显然我们要改变一下我们的状态表示 dp[i][j]表示以ai,bj结尾的max 我们状态转移就是 dp[i][j]=max{dp[i-1][j-1]+2} [ai==bj] dp[i][j]=max{dp[i-1][ 阅读全文
posted @ 2022-10-31 14:47 ycllz 阅读(21) 评论(0) 推荐(0)
摘要: D. Playoff Tournament 观察完题 发现没改变一个 只会修改自己及以上的权值 所以我们直接暴力qlogn 但是这个题恶心的就是他那个是倒着给的 我们要reverse一遍 注意这时候因为反了一遍 左右子树也会反 #include <bits/stdc++.h> using names 阅读全文
posted @ 2022-10-31 11:47 ycllz 阅读(37) 评论(0) 推荐(0)
摘要: F. Maximum White Subtree 观察题意 发现金典的就是一个全集的意思 显然我们考虑转化成一个图左边+右边这样情况 对于节点u 我们考虑其子树的贡献 显然该点v贡献要是为负数 我们直接不要 否则我们才要 然后我们钦定1为根节点 先自下而上统计每一个节点子树方向的最大贡献 然后我们再 阅读全文
posted @ 2022-10-31 00:43 ycllz 阅读(23) 评论(0) 推荐(0)