摘要:
多重背包...----------------------------------------------------------------------------#include #define rep(i, n) for(int i = 0; i > n; rep(i, n) scanf("%... 阅读全文
摘要:
建颗权值线段树就行了...连离散化都不用...没加读入优化就TLE, 加了就A掉了...而且还快了接近1/4....------------------------------------------------------------------------------------------#i... 阅读全文
摘要:
这种题做法应该很多吧...说说我的做法设b出现位置为pos, 从pos开始向右扫一遍顺便维护( x )(> b 的数的个数 - b 的数的个数 - #include#include#include #define rep(i, n) for(int i = 0; i > n >> b; rep(i... 阅读全文
摘要:
贪心...先枚举k, 然后从左往右扫一遍, 发现位置p的牛的状态不符合就将 [p, p + k ) 的牛都转身, 假如p + k - 1 已经超过了最右边牛的位置那这个k就不符合要求. 符合要求的就可以用来更新answer.这个贪心的正确性是很显然的.前p - 1头牛都已朝前, 再改动它们也做不到更... 阅读全文
摘要:
话说本来想200AC就把题目总结一下...但是我现在挺懒的..不想弄...以后再来吧. 阅读全文
摘要:
我们假设每天买完第二天就卖掉( 不卖出也可以看作是卖出后再买入 ), 这样就是变成了一个完全背包问题了, 股票价格为体积, 第二天的股票价格 - 今天股票价格为价值.... 然后就一天一天dp...---------------------------------------------------... 阅读全文
摘要:
我真想吐槽USACO的数据弱..= = O(n^3)都能A....上面一个是O(n²), 一个是O(n^3)O(n^3)做法, 先排序, dp(i, j) = max{ dp(j, p) } + w( i ) ( t #include#include#include#include#include#... 阅读全文
摘要:
先二分答案m, 然后对于原序列 A[i] = A[i] - m, 然后O(n)找最大连续子序列和, 那么此时序列由 L + mx + R组成. L + mx + R = sum - n * m, sum为原序列的和.假如二分的答案m是可行的, 那么 L + R = sum - n * m - mx ... 阅读全文
摘要:
软件构成了一些树和一些环, 对于环我们要不不选, 要么选整个环. 跑tarjan缩点后, 新建个root, 往每个入度为0的点(强连通分量) 连边, 然后跑树dp( 01背包 )-------------------------------------------------------------... 阅读全文
摘要:
线段树...区间开方...明显是要处理到叶节点的之前在CF做过道区间取模...差不多, 只有开方, 那么每个数开方次数也是有限的(0,1时就会停止), 最大的数10^9开方10+次也就不会动了.那么我们线段树多记个max就可以少掉很多不必要的操作---------------------------... 阅读全文