炉石传说
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=115624#problem/D
Description
GG學長雖然并不打爐石傳說,但是由于題面需要他便學會了打爐石傳說。但是傳統的爐石傳說對于剛入門的GG學長來說有點復雜,所以他決定自己開發一個簡化版的爐石傳說。
在簡化版的爐石傳說中:
每個隨從只有生命值和攻擊力,并且在你的回合下,你的每只隨從在本回合下只能選擇一個敵方隨從進行攻擊。當兩個隨從a,b交戰時,a的生命值將減去b的攻擊力,b的生命值將減去a的攻擊力,(兩個傷害沒有先后順序,同時結算)。如果a或b的生命值不大于0,該隨從將死亡。
某一次對局中,GG學長和對手場面上均有n個隨從,并且是GG學長的回合。由于GG學長是個固執的boy,他一定要在本回合殺死對方所有隨從,并且保證自己的隨從全部存活。他想知道能否做到。
Input
第一行為T,表示有T組數據。T<=100。
每組數據第一行為n,表示隨從數量(1 <= n <= 100)
接下來一行2 * n個數字a1, b1, a2, b2, ... , an, bn (1 <= ai, bi <= 100)
表示GG學長的n個隨從,ai表示隨從生命,bi表示隨從攻擊力
接下來一行2 * n個數字c1, d1, c2, d2, ... , cn, dn (1 <= ci, di <= 100)
表示對手的n個隨從,ci表示隨從生命,di表示隨從攻擊力。
Output
每組數據,根據GG是否能完成他的目標,輸出一行”Yes”或”No”。
Sample Input
2 3 4 4 5 5 6 6 1 1 2 2 3 3 3 4 4 5 5 6 6 1 4 2 4 3 4Sample Output
Yes No?求指點錯哪了:
#include<iostream> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int T,n; int i,j; int c[2100][2100]; int link[2100],used[2100]; struct node{int att, life; }a[2100],b[2100]; bool find(int x){for(i=1;i<=n;i++){if(c[x][i]&&!used[i]){used[i]=1;if(link[i]==-1||find(link[i])){link[i]=x;return true;}}}return false; } int main() {while(cin>>T)while(T--){cin>>n;memset(c,0, sizeof(0));for(i=1;i<=n;i++)scanf("%d %d",&a[i].life,&a[i].att);for(i=1;i<=n;i++)scanf("%d %d",&b[i].life,&b[i].att);for(i=1;i<=n;i++)///學長;{for(j=1;j<=n;j++)///對手;{int Life1=a[i].life-b[j].att;///學長打對手;int Life2=b[j].life-a[i].att;///對手打學長;if(Life1>0&&Life2<=0)c[i][j]=1;}}memset(link,-1,sizeof(link));int ans=0;for(int k=1;k<=n;k++){memset(used,0,sizeof(used));if(find(k))ans++;}if(ans==n)puts("Yes");else puts("No");}return 0; }總結
- 上一篇: JeeCG团队招聘啦!
- 下一篇: 微信小程序,技术创业的时代可能要来了,但