
DP
文章平均质量分 72
thy_asdf
我也不知道说什么...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
codeforces 580D Kefa and Dishes
传送门:http://codeforces.com/problemset/problem/580/d思路:状压DP,f[i][j]表示最后一个为i,已选取的菜的状态为j。#include#include#includeconst int maxt=540000;using namespace std;typedef long long ll; int n,m,k,g[2原创 2015-09-25 11:40:06 · 570 阅读 · 0 评论 -
codeforces568E.Longest Increasing Subsequence
传送门:http://codeforces.com/problemset/problem/568/E思路:首先没有空位,我们是记录一个low数组表示长度为i的上升子序列的最小结尾。对于一个末尾新的数x,我们只要二分出一个位置low[i]现在有空位和m个数可用,每个数只能用一次。其实每个数只能用一次这个条件并没有什么用,因为这是严格的LIS,用两次也没有用所以可以先去重。然后原创 2015-10-23 15:10:55 · 1013 阅读 · 1 评论 -
codeforces572D. Minimization
传送门:http://codeforces.com/problemset/problem/572/D思路:首先可以根据下标对k的模将他们分成互不相关的k组,组内可以贪心地使元素按大小顺序排,然后这组的贡献即为max-min那我们就把a数组排序,那么每组元素一定是连续的。那么题目就变为把有序数组a分为k组,其中第一种有n%k组,长度为(n/k+1),第二种有n-n%k组,长度为n/k原创 2015-10-23 16:22:21 · 479 阅读 · 0 评论 -
3999:孤独一生
传送门:然而并没有题目大意:思路:首先是O(n^2)的DP设f[i][j]表示第1个集合结尾为i,第2个集合结尾为j,其中i>=j分两种情况f[i][j]=f[i-1][j]+|h[i]-h[i-1]| (i>j+1)(第2个集合结尾是j,那么j+1到i这一段都是第一个集合的)=min(f[j][k]+|h[i]-h[k]|) (i=j+1) (其中第一个集合结尾已原创 2015-10-30 08:33:32 · 397 阅读 · 0 评论 -
codeforces573D. Bear and Cavalry
传送门:http://codeforces.com/problemset/problem/573/d思路:首先如果没有限制,那么根据排序不等式,肯定按顺序匹配战士和马最好。但是现在有了战士不能和自己的马匹配的限制。于是就有了一个重要的性质:最优匹配的前提下,排序后第i号战士只会与[i-2,i+2]号马匹配至于证明,可以自己YY,也可以分情况讨论(好像很复杂...)于是就可以原创 2015-10-23 16:43:43 · 676 阅读 · 0 评论 -
APIO2015&2014题解
传送门:似乎uoj都有思路:APIO2015:巴厘岛的雕塑:看到位运算,又要求结果最小,最外层肯定是个从高位到低位的按位贪心这里有两个部分分,task1:Ntask2:N先考虑task1令sum[i]表示雕塑权值的前缀和假设我们考虑到了第bit位那么我们怎么知道在前面位数满足要求的前提下,当前位能否是0DP即可设f[i][j]表示前i原创 2016-04-26 10:03:20 · 1545 阅读 · 0 评论