日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu4536 水搜索

發布時間:2025/6/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu4536 水搜索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:

XCOM Enemy Unknown

Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 814 Accepted Submission(s): 242


Problem Description XCOM-Enemy Unknown是一款很好玩很經典的策略游戲.
在游戲中,由于未知的敵人--外星人入侵,你團結了世界各大國家進行抵抗.


隨著游戲進展,會有很多的外星人進攻事件.每次進攻外星人會選擇3個國家攻擊,作為聯盟的指揮者,你要安排有限的聯盟軍去支援其中一個國家,抵抗進攻這個國家的外星人.



戰斗勝利之后這個被支援的國家恐慌值就會-2點(恐慌值最少減為1),而其他兩個未被支援的國家恐慌值就會+2點,同時和這兩個國家在相同大洲的其他國家恐慌值也會+1點.
當一個國家的恐慌值超過5點,這個國家就會對聯盟失去信心從而退出聯盟.
現在給你外星人將會進攻的地點,問你最多能在不失去任何一個國家信任的情況下抵擋多少次外星人的進攻.
Input 第一行有一個整數T代表接下來有T組數據
每組數據第一行是三個整數,n,m,k分別代表聯盟國家的個數,大洲的個數,外星人的進攻次數.
第二行是n個數字代表各個國家所屬的大洲(大洲序號從0到m-1)
第三行是n個數字代表各個國家初始的恐慌值
接下去k行代表外星人進攻
每行有三個數字,表示該次外星人進攻的國家(國家序號從0到n-1)

[Technical Specification]
0<T<=100
8<n<=16
2<m<=5
0<k<=100
0<初始恐慌值<=5
每個州至少有三個國家
每次外星人進攻一定發生在不同州的三個國家

Output 首先輸出case數(見sample),接著輸出在不失去任何一個國家的情況下能抵擋外星人進攻最多的次數.

Sample Input 1 9 3 2 0 0 0 1 1 1 2 2 2 3 3 3 3 3 3 3 3 3 0 3 6 0 3 6
Sample Output Case #1: 1Hint 第一次如果選擇了0,那么3和6的恐慌值就會增加到5,第二次不管怎么選擇,3和6總會有一個超過5.思路:暴搜時間過得去,數據很小,每次分三種情況就行了.. #include<stdio.h> #include<string.h>#define N 20 typedef struct {int hp ,zhou; }NODE;typedef struct {int a ,b ,c; }Q;int Z[10][N]; NODE node[N]; Q qq[105];int max_ans; int K ,n;void DFS(int deep) {if(max_ans < deep) max_ans = deep;if(deep == K + 1) return ;int a = qq[deep].a;int b = qq[deep].b;int c = qq[deep].c;//1 NODE mk_node[N]; int i;for(i = 1 ;i <= n ;i ++)mk_node[i] = node[i]; node[a].hp -= 2;if(node[a].hp < 1) node[a].hp = 1;node[b].hp += 1,node[c].hp += 1;for(i = 1 ;i <= Z[node[b].zhou][0] ;i ++)node[Z[node[b].zhou][i]].hp ++;for(i = 1 ;i <= Z[node[c].zhou][0] ;i ++)node[Z[node[c].zhou][i]].hp ++;for(i = 1 ;i <= n ;i ++)if(node[i].hp > 5) break;if(i == n + 1 && max_ans != K + 1)DFS(deep + 1);for(i = 1 ;i <= n ;i ++)node[i] = mk_node[i];//2 for(i = 1 ;i <= n ;i ++)mk_node[i] = node[i]; node[b].hp -= 2;if(node[b].hp < 1) node[b].hp = 1;node[a].hp += 1,node[c].hp += 1;for(i = 1 ;i <= Z[node[a].zhou][0] ;i ++)node[Z[node[a].zhou][i]].hp ++;for(i = 1 ;i <= Z[node[c].zhou][0] ;i ++)node[Z[node[c].zhou][i]].hp ++;for(i = 1 ;i <= n ;i ++)if(node[i].hp > 5) break;if(i == n + 1 && max_ans != K + 1)DFS(deep + 1);for(i = 1 ;i <= n ;i ++)node[i] = mk_node[i];//3 for(i = 1 ;i <= n ;i ++)mk_node[i] = node[i]; node[c].hp -= 2;if(node[c].hp < 1) node[c].hp = 1;node[a].hp += 1,node[b].hp += 1;for(i = 1 ;i <= Z[node[a].zhou][0] ;i ++)node[Z[node[a].zhou][i]].hp ++;for(i = 1 ;i <= Z[node[b].zhou][0] ;i ++)node[Z[node[b].zhou][i]].hp ++;for(i = 1 ;i <= n ;i ++)if(node[i].hp > 5) break;if(i == n + 1 && max_ans != K + 1)DFS(deep + 1);for(i = 1 ;i <= n ;i ++)node[i] = mk_node[i]; }int main () {int i ,j ,m ,t ,cas = 1;int a;scanf("%d" ,&t);while(t--){scanf("%d %d %d" ,&n ,&m ,&K);memset(Z ,0 ,sizeof(Z));for(i = 1 ;i <= n ;i ++){scanf("%d" ,&node[i].zhou);node[i].zhou ++; Z[node[i].zhou][0]++;Z[node[i].zhou][Z[node[i].zhou][0]] = i;}for(i = 1 ;i <= n ;i ++)scanf("%d" ,&node[i].hp);for(i = 1 ;i <= K ;i ++){scanf("%d %d %d" ,&qq[i].a ,&qq[i].b ,&qq[i].c);qq[i].a ++ ,qq[i].b ++ ,qq[i].c ++;}max_ans = 1;DFS(1);printf("Case #%d: %d\n" ,cas ++ ,max_ans - 1);}return 0; }

總結

以上是生活随笔為你收集整理的hdu4536 水搜索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。