標籤:就是 using nbsp space print scanf 貪心 amp bsp
瞎扯
很經典的一道題
考前才打
我太菜了QAQ
就是先貪心排序了好
然後在DP
這樣比直接DP更容易理解
(其實這題做法還有很多)
代碼
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define N 1005 5 using namespace std; 6 int n,money,t[N],q[N]; 7 int f[N][N]; 8 bool cmp(int a,int b) 9 {10 return a>b;11 }12 int cpt(int i,int j){13 if(t[i]>q[j]) return 200;14 else if(t[i]==q[j]) return 0;15 return -200;16 }17 int main()18 {19 int i,j,ans=-999999999;20 while(scanf("%d",&n)==1&&n){21 memset(f,0,sizeof(f));22 memset(t,0,sizeof(t));23 memset(q,0,sizeof(q));24 ans=-99999999;25 for(int i=1;i<=n;i++){26 scanf("%d",&t[i]);27 }28 for(int i=1;i<=n;i++){29 scanf("%d",&q[i]);30 }31 sort(q+1,q+1+n,cmp);32 sort(t+1,t+1+n,cmp);33 for(int i=1;i<=n;i++){34 f[i][j]=f[i-1][j-1]+cpt(i,i);35 f[i][0]=f[i-1][0]+cpt(n-i+1,i);36 for(int j=1;j<=n;j++){37 f[i][j]=max(f[i-1][j-1]+cpt(j,i),f[i-1][j]+cpt(n-(i-j)+1,i));38 }39 }40 for(int j=0;j<=n;j++){41 if(ans<f[n][j]) ans=f[n][j];42 }43 printf("%d\n",ans);44 }45 return 0;46 }
[Poj2287][Tyvj1048]田忌賽馬 (貪心+DP)