摘要: 题解:显然可以dp[i][j]表示到第i个,选了j个的最优解 单调队列优化 1 #include<bits/stdc++.h> 2 #define ll long long 3 #define pii pair<ll,int> 4 #define mp(a,b) make_pair(a,b) 5 # 阅读全文
posted @ 2019-03-30 20:34 幽蝶 阅读(128) 评论(0) 推荐(0)
摘要: 题解: 你能确定的集合一定是k个重量一样的,重量为m 然后考虑dp(j,k)为选了j个,重量和为k的方案,我们现在只需要判定唯一性,所以状态只有0,1,2三种 然后dp就行 坑点:1 1 1 1 1 2 2 2 2 2这种,可以全部确定 1 #include<bits/stdc++.h> 2 #de 阅读全文
posted @ 2019-03-30 18:53 幽蝶 阅读(187) 评论(0) 推荐(0)
摘要: 题解: 考虑这个东西是带约束条件的完全背包 想办法把xi>xj的约束条件消掉 那么我们把限制条件(xi > xj)看成边 i -> j,连成有向图 发现这个有向图是一堆环和链 有环显然就GG了,然后我们只要考虑全是链的情况 考虑全是链,那么我们消掉约束条件就是每次原有权值加上所有前驱的权值 然后就是 阅读全文
posted @ 2019-03-30 17:49 幽蝶 阅读(266) 评论(0) 推荐(0)
摘要: 题解: 考虑这个每个数字少个数是可二分的(答案关于个数单调) 然后我们dp dp[i][S]表示到第i个数,已选完的数字集合为S 转移是贪心取连续一段 预处理转移右端点可以降下复杂度 1 #include<bits/stdc++.h> 2 #define maxn 1005 3 using name 阅读全文
posted @ 2019-03-30 00:51 幽蝶 阅读(170) 评论(0) 推荐(0)