每日一题
FoggyForest
这个作者很懒,什么都没留下…
展开
-
CF1406D(20-10-16)
CF1406D codeforce 1406D Three Sequences 思想 考虑假如b[1]=x,c[1]=y 如果a2>a1,那么b[2]=x+a2-a1,c[2]=y 如果a2<a1,那么b[2]=x,c[2]=y+a2-a1 以此类推,可以通过差分来解决,答案就是max(b[n],c[1]),所以要让这两个数尽可能相等 代码 //#include <bits/stdc++.h> #include <iostream> #include <cstd原创 2020-10-16 21:07:28 · 165 阅读 · 0 评论 -
CF1354E(20-10-15)
CF1354E codeforce 1354E Graph Coloring 思想 与2相邻的点都是1或3 与1或3相邻的点都是2 由黑白染色法可以先判断是否有解(必要条件) 因为可能是非连通图,所以要用背包判断能不能凑出n2个点的独立集,如果凑不出也无解 时间复杂度O(n2) 代码 //#include <bits/stdc++.h> #include <iostream> #include <cstdio> #include <cstdlib> #in原创 2020-10-15 13:01:34 · 161 阅读 · 0 评论 -
CF1364D(20-10-14)
CF1364D codeforce 1364D Ehab’s Last Corollary 思想 这一题要点是证明无论如何解都存在 假如这个图没有环,是一个森林,那么将所有点黑白染色,则颜色多的数量一定大于等于⌈n/2⌉,也就大于等于⌈k/2⌉,符合条件1 假如这个图有环,那么一定可以找到一个”最小环“,这个最小环的定义是:环中任何两点除了环上的边,没有其他直连边。找到后,如果这个环中的结点数小于等于k,则符合条件2。如果这个环结点数大于k,那么对这个环间隔取点,取出来的点大于等于⌈k/2⌉,符合条件1原创 2020-10-14 15:29:45 · 112 阅读 · 0 评论 -
CF1407D(20-10-12)
CF1407D codeforce 1407D Discrete Centrifugal Jumps 思想 首先想到用dp,dp[i]表示跳到i最小步数,如果 i 能跳到 j ,则 dp[j]=min(dp[j],dp[i]+1) 利用单调栈性质,如果一个严格单调增加的栈x中要放入,已经退到y,y和x之间的数就大于等于y和x,说明x可以跳到y 在退栈过程如果y小于x,就不能继续退了 严格单调减的栈同理 时间复杂度:每个数入栈一次,出栈一次,均摊复杂度O(n) 代码 //#include <bits原创 2020-10-14 15:08:51 · 164 阅读 · 0 评论