本文主要是介绍Alice’s Stamps HDU - 6249,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这两天带新生都快把我带傻了。
还没get到精髓
;
;
;
;
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <cstdio>using namespace std;
const int maxn = 2e3+50;
int dp[maxn][maxn];
struct node
{int l,r;node(int ll=0,int rr=0){l = ll;r = rr;}bool operator<(const node &s)const{if(l!=s.l)return l<s.l;elsereturn r<s.r;}
};
node a[maxn];int main()
{int T;int n,m;int k;scanf("%d",&T);for(int ka= 1; ka<=T; ka++){scanf("%d%d%d",&n,&m,&k);for(int i=0; i<m; i++){scanf("%d%d",&a[i].l,&a[i].r);}sort(a,a+m);int pos = 0;int num = 0;memset(dp,0,sizeof(dp));for(int i=0; i<n; i++){// cout<<a[pos].l<<endl;while(pos<m && a[pos].l==i+1){num = max(num,a[pos].r-a[pos].l+1);// cout<<num<<endl;pos++;}for(int j=0; j<=k; j++){dp[i+1][j] = max(dp[i+1][j],dp[i][j]);dp[i+num][j+1] = max(dp[i+num][j+1],dp[i][j]+num);}if(num)num--;}printf("Case #%d: %d\n",ka,dp[n][k]);}return 0;
}
这篇关于Alice’s Stamps HDU - 6249的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!