标签:
尽量让每一个随从击败一个对手且随从全部存活,关键是为每一个随从找对手(递归过程),"腾"。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int used[110]; int g[110][110]; //建立随从和对手的对战关系 int ee[110]; int n; struct people{ int live; int attack; }man[110],enemy[110]; bool find(int j) { for(int k=1;k<=n;k++) { if(g[j][k] && used[k]==0) { used[k]=1; if(ee[k]==0 || find(ee[k])) { ee[k]=j; return true; } } } return false; } int main() { int test,all; scanf("%d",&test); while(test--) { cin>>n; all=0; memset(ee,0,sizeof(ee)); memset(g,0,sizeof(g)); for(int i=1;i<=n;i++) { scanf("%d%d",&man[i].live,&man[i].attack); } for(int i=1;i<=n;i++) { scanf("%d%d",&enemy[i].live,&enemy[i].attack); } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { g[i][j]=man[i].attack>=enemy[j].live&&man[i].live>enemy[j].attack; } } int flag=1; for(int i=1;i<=n;i++) { memset(used,0,sizeof(used)); if(!find(i)) { flag=0; break; } } if(flag==1) { printf("Yes\n"); } else { printf("No\n"); } } return 0; }
标签:
原文地址:http://www.cnblogs.com/LinesYao/p/5463655.html