摘要: 树状数组 本题数据有误 对于每一个点用权值树状数组维护在这个点之后之前的比他大和比他小的数 cpp include include include include include include include using namespace std; define lson rt 1; if(po 阅读全文
posted @ 2018-03-19 20:12 Mr_Wolfram 阅读(337) 评论(0) 推荐(0) 编辑
摘要: Treap 的合并 首先感谢 @Capella 的DeBug 其次,这是由一个 & 号引发的血案 注意对于所有修改操作都要 & Treap的合并, 启发式合并,对于每一个节点都 insert ,注意垃圾回收 cpp include include include include include de 阅读全文
posted @ 2018-03-19 19:40 Mr_Wolfram 阅读(208) 评论(1) 推荐(0) 编辑
摘要: 区间DP 手动模拟一下,我们发现本题就是一个左右加数的区间DP cpp include include include include include include using namespace std; const int MAXN = 1005, MOD = 19650827; int nu 阅读全文
posted @ 2018-03-19 15:07 Mr_Wolfram 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 区间DP 拆链成环,然后区间DP即可,注意初始化,以及每个地方都要遍历到 cpp include include include include include define inf 0x3f3f using namespace std; int num[205], dp[205][205][2], 阅读全文
posted @ 2018-03-19 11:06 Mr_Wolfram 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 多重背包 + 贪心 本题是一道多重背包问题,但是如果用朴素的多重背包会T,可以考虑二进制拆分,或单调队列优化 但是本题是一道判定性问题,所以我们有贪心策略,即对于没一种面值来说,选用尽量少的 i 种硬币, 用 used 数组来记录当前面值所需的 i 种硬币最少是多少 cpp include incl 阅读全文
posted @ 2018-03-19 08:41 Mr_Wolfram 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 树状数组求法(权值树状数组) $O((N + M) log M)$ 对于值域较大的要离散化 cpp include include include include include using namespace std; const int MAXN = 40005; int init() { in 阅读全文
posted @ 2018-03-19 08:17 Mr_Wolfram 阅读(144) 评论(0) 推荐(0) 编辑