loj 1017(dp)
来源:互联网 发布:兔子白网络 编辑:程序博客网 时间:2024/05/21 22:42
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25843
思路:我们可以发现题目与点的X坐标没有关系,于是可以直接对y坐标进行排序,然后进行dp,dp[i][j]表示以j个区间覆盖前i个点的最大覆盖数。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define MAXN 111 7 #define FILL(a,b) memset(a,b,sizeof(a)) 8 9 int n,w,k,dp[MAXN][MAXN];10 int y[MAXN];11 int pre[MAXN],num[MAXN];12 13 int main()14 {15 int _case,x,t=1;16 scanf("%d",&_case);17 while(_case--){18 scanf("%d%d%d",&n,&w,&k);19 for(int i=1;i<=n;i++){20 scanf("%d%d",&x,&y[i]);21 }22 sort(y+1,y+1+n);23 FILL(dp,0);24 int p1=1,p2=1;25 pre[1]=0,num[1]=1;26 while(p1<=n){27 p1++;28 while(y[p1]-y[p2]>w)p2++;29 pre[p1]=p2-1;30 num[p1]=p1-p2+1;31 }32 for(int i=1;i<=n;i++){33 for(int j=1;j<=k;j++){34 dp[i][j]=max(dp[i-1][j],dp[pre[i]][j-1]+num[i]);35 }36 }37 printf("Case %d: %d\n",t++,dp[n][k]);38 }39 return 0;40 }
0 0
- loj 1017(dp)
- LOJ 1017 普通dp
- loj 1004(dp)
- loj 1032(数位dp)
- loj 1036(dp)
- loj 1037(状压dp)
- loj 1030概率dp
- loj 1032 数位dp
- loj 1357(树形dp)
- LOJ 1422(区间DP)
- loj 1018(状压dp+记忆化搜索)
- loj 1038(dp求期望)
- loj 1044(dp+记忆化搜索)
- loj 1316(spfa预处理+状压dp)
- LOJ 1422 Halloween Costumes【区间DP】
- loj 1021(状压dp+记忆化搜索)
- loj 1031(区间dp+记忆化搜索)
- [暴力DP][暴力STL]SNOI2017 && LOJ#2256. 英雄联盟
- poj 2378(树形dp)
- poj 1463(树形dp)
- loj 1011(状态压缩+记忆化搜索)
- loj 1013(LCS+记忆化搜索)
- loj 1154(最大流+枚举汇点)
- loj 1017(dp)
- loj 1018(状压dp+记忆化搜索)
- loj 1021(状压dp+记忆化搜索)
- loj 1025(记忆化搜索)
- loj 1155(最大流)
- loj 1156(二分+最大流)
- loj 1150(spfa预处理+二分+最大匹配)
- loj 1031(区间dp+记忆化搜索)
- loj 1032(数位dp)