![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Codeforces
四维2000
SW2000
展开
-
Codeforces 1452F Divide Powers (模拟)
题意:有cnt_i个大小为2^i的数,你可以把一个数拆成两个大小一半的数,问最少拆几次可以拆成k个小于等于2^x的数 分析:就是贪心模拟,发现如果只拆小于等于x^2的数时,说每拆一次多一个,而如果时把大于2^x的数全都拆成2^x时,是可以节省一次的,因此我们只需要在保证小于等于2^x的数大小足够的情况下,尽可能地把大于2^x的数完整地拆成2^x就是最少的拆法 细节真的挺多的,硬撕出来一大坨乱七八糟的代码,这种大模拟题也懒得优化简洁代码了 代码: #include<bits/stdc++.h&原创 2020-11-20 10:53:39 · 210 阅读 · 0 评论 -
Codeforces 1452E Two Editorials (预处理优化)
题意:在长度为n的范围内有m个区间,现要求另选两个长度为k的区间染色,现求每个区间被最大染色和的最大值。 分析:对于每个位置i往后染k个颜色预处理对最终答案的贡献ans[i],以及染完这k个之后如果下一个区间从j开始染,由于j处染色部分大,i处的染色无法计算而丢失的贡献sub[i][j]。 维护好ans[N],sub[N][N]这两个数组后就只需要O(n^2)找出哪选哪两个最大就好了。 大体思路就是这样,具体细节还需要注意很多,比如预处理sub[N][N]数组时需要用到差分,区间内染色大小相同时都要减原创 2020-11-20 10:45:22 · 485 阅读 · 0 评论 -
Codeforces Round #618(部分)
Anu Has a Function 题意:定义了一种运算f(x,y)=(x|y)−y,给你一个数组要求重新排列,使得依次做这种运算后得到的答案最大 思路:观察运算中又位运算,手推几个运算后发现这种运算结束后y的各个为都是0,所以推算出f(x,y)=x-(x&y)。因此当数组依次运算之后,结果就是第一位的数字各个位减去后面数字的各个位,所以答案最大时需要满足数组的第一个数各位减去后面的...原创 2020-02-10 11:31:54 · 145 阅读 · 0 评论