![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Codeforces
Deep_Kevin
我太弱了
展开
-
Tree Destruction,CF911F,直径+细节证明
正题 很容易想到一个贪心,就是将直径提出来,对于不在直径上的点,都可以取到删除它的最大贡献,对于直径上的点随便删答案都是一样的.这个贪心在题解中也只证明了选任意两条不相同的直径答案一样,且对于不在直径链上的其他点有最大答案,但是并没有证明为什么这种"链"的划分一定是最优的. 苦思冥想很久才证明了正确性: 对于一种方案来说,如果删除x所选择的点y不是当前树中的最远点,那么在这一步就肯定不是最优方案,所以我们只需要考虑一个长度为n-1,值域在[1,n]的排列a,表示第i...原创 2020-09-14 10:00:47 · 124 阅读 · 0 评论 -
Codeforces Round #668 (Div. 1)
正题 A. Balanced Bitstring 这样来考虑:当前区间k合法,那么要往右移一位依然合法,那么必须要保证加进来的位置=弹出去的位置,也就是说对于i<=n-k,要保证,我们判断一下输入的式子是否满足这样的性质就可以了,如果一个相等集合内只有问号,那么我们就待定它,最后看一下01个数是否都没有超过k/2即可. #include<bits/stdc++.h> using namespace std; const int N=300010; char...原创 2020-09-07 16:16:07 · 834 阅读 · 0 评论 -
Codeforces Round #670 (Div. 2)
正题 A. Subset Mex 开个桶,相当于只需要知道什么时候第一次出现某个值出现次数<2,和某个值出现次数<1,加起来就是答案 #include<bits/stdc++.h> using namespace std; const int N=110; int a[N],T,n; int main(){ scanf("%d",&T); while(T--){...原创 2020-09-13 19:55:13 · 225 阅读 · 0 评论