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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

poj-1042 nyoj-30(Gone fishing)

發布時間:2025/3/16 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj-1042 nyoj-30(Gone fishing) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:poj ->http://poj.org/problem?id=1042

nyoj->http://acm.nyist.net/JudgeOnline/problem.php?pid=30

題意;有n個湖,每個湖都有fi條魚,每釣一次就會減少di條魚,

問一個人在給定的時間內在按照從 1~n 湖中釣的魚最多是多少,

并輸出這個人在些湖中停留的時間

題解: 貪心 + 枚舉

注: 枚舉所有情況(即1~n的湖)每次找湖中魚最大的

#include<stdio.h> #include<string.h> int f1[30],f2[30]; int t[30],t1[30],t2[30]; int res[30]; int main() {int n,m,i,j,ret,q = 0;int time, time1 , time2;while(scanf("%d",&n),n){scanf("%d",&m);time = m * 60;memset(f2,0,sizeof(f2));for(i = 0 ; i < n; i ++){scanf("%d",&f1[i]);f2[i] = f1[i] ;}for(i = 0 ; i < n; i ++) scanf("%d",&res[i]);for(i = 1; i < n;i ++) scanf("%d",&t[i]);if(q) printf("\n");q = 1;int Max = -1;//這個max要小于0memset(t2,0,sizeof(t2));for(i = 0 ; i < n; i ++){memset(t1,0,sizeof(t1));for(j = 0; j < n ; j ++) f1[j] = f2[j];//還原time1 = time;for(j = 0 ; j <= i;j ++) time1 -= t[j] * 5;//去湖之間所用的時間time2 = time1;int sum = 0;while(time2 > 0){int max = 0;//注:這個max要等于0int flag = 0,p=0;for(j = 0 ; j <= i; j ++) //每次查找魚最多的湖{if(max < f1[j]){max = f1[j];p = j ;flag = 1;}}if(flag) t1[p] += 5;sum += max ;if(f1[p] > 0) f1[p] -= res[p] ;time2 -= 5;}if(Max < sum ){Max = sum ;ret = time1;for(j = 0 ; j < n ; j ++)t2[j] = t1[j] ;}}int ans = 0 ;for(i = 1; i < n;i ++) ans += t2[i];t2[0] = ret - ans ;printf("%d",t2[0]);for(i = 1; i < n;i ++)printf(", %d",t2[i]);printf("\n");printf("Number of fish expected: %d\n",Max);} }



總結

以上是生活随笔為你收集整理的poj-1042 nyoj-30(Gone fishing)的全部內容,希望文章能夠幫你解決所遇到的問題。

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