NWERC 2015B/bzoj 4426 Better Productivity

来源:互联网 发布:淘宝xbox360手柄正品 编辑:程序博客网 时间:2024/05/29 15:44
#include<bits/stdc++.h>#define N 210using namespace std;struct Node{int x,y;}a[N],b[N],c[N];int dp[N][N];int n,p,B,C;inline bool cmp1(Node a,Node b){if(a.x!=b.x) return a.x<b.x;return a.y<b.y;}inline bool cmp2(Node a,Node b){return a.y-a.x>b.y-b.x;}int main(){scanf("%d%d",&n,&p);for(int i=0;i<n;i++) scanf("%d%d",&a[i].x,&a[i].y);for(int i=0;i<n;i++){int f=0;for(int j=0;j<n;j++){if(i==j) continue;if(a[i].x==a[j].x&&a[j].y==a[i].y){if(i>j) continue;}if(a[i].x<=a[j].x&&a[j].y<=a[i].y) f=1;}if(f) b[B++]=a[i];else c[++C]=a[i];}sort(b,b+B,cmp2);sort(c+1,c+C+1,cmp1);int bes=0;for(int i=0;i<=p;i++)for(int j=0;j<=C;j++)dp[j][i]=-1008610086;dp[0][0]=0;for(int k=1;k<=p;k++){for(int i=1;i<=C;i++){for(int j=1;j<=i;j++){if(c[j].y-c[i].x<=0) continue;dp[i][k]=max(dp[i][k],dp[j-1][k-1]+c[j].y-c[i].x);}}}for(int l=0;l<=p;l++){int ans=0;for(int j=0;j<l;j++) ans+=b[j].y-b[j].x;bes=max(bes,dp[C][p-l]+ans);}printf("%d\n",bes);return 0;}

原创粉丝点击