gone fishing
来源:互联网 发布:超玩fifaol3数据库 编辑:程序博客网 时间:2024/04/28 16:09
题目:
枚举加贪心,枚举,从第一个到最后一个,将每一个作为最后结束钓鱼的池塘,这样就可以将从1走到最后结束的池塘的时间从总时间里减去,
剩下的时间就是钓鱼的时间,然后每次选出在i池塘可以钓到最大鱼数的池塘,一直循环,直到池塘没鱼(将剩下的时间全部给第一个池塘,也就是耗时间)
或者没时间,直接结束本次枚举。
其实这样处理就相当与在各个池塘之间瞬移,实际是做不到的,只是可以将问题抽象化成这样,这样,每次钓到的鱼都是最多的,最后回归到现实,将钓鱼的
次数从左到右分配给每个池塘,这样得出来的结果是最优化的。
转自别人代码:
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int N = 30; int f[N], d[N], ans[N], tmp[N], time[N]; int ff[N]; int main() { int n, h, i, j, t, cas = 0; while(~scanf("%d",&n) && n) { scanf("%d",&h); h *= 60; for(i = 0; i < n; i++) scanf("%d",&f[i]); for(i = 0; i < n; i++) scanf("%d",&d[i]); time[0] = 0; for(i = 1; i < n; i++) { scanf("%d",&t); time[i] = time[i-1] + t*5; } memset(ans, 0, sizeof(ans)); //注意初始化 int maxsum = -1; for(i = 0; i < n; i++) { int sum = 0, left_time = h - time[i]; for(j = 0; j <= i; j++) ff[j] = f[j]; //注意不要直接对f[i]进行操作,不然会影响下一次的结果 memset(tmp, 0, sizeof(tmp)); while(left_time > 0) { int mmax = 0, id = 0; for(j = 0; j <= i; j++) { if(ff[j] > mmax) { mmax = ff[j]; id = j; } } if(mmax == 0) break; sum += mmax; tmp[id] += 5; ff[id] -= d[id]; left_time -= 5; } if(left_time > 0) tmp[0] += left_time; if(sum > maxsum) { maxsum = sum; for(j = 0; j <= i; j++) ans[j] = tmp[j]; } } if(cas > 0) printf("\n"); printf("%d",ans[0]); for(i = 1; i < n; i++) printf(", %d",ans[i]); printf("\n"); printf("Number of fish expected: %d\n",maxsum); cas++; } return 0; }
0 0
- Gone Fishing
- gone fishing
- Gone fishing
- POJ 1042 Gone Fishing
- POJ1042 Gone Fishing(贪心)
- PKU1042 gone fishing
- pku 1042 Gone Fishing
- pku 1042 Gone Fishing
- pku 1042 Gone Fishing
- poj 1042 Gone Fishing
- 1042 Gone Fishing //贪心
- PKUOJ1042 Gone Fishing
- POJ1042 Gone Fishing 贪心
- POJ 1042 Gone Fishing
- poj 1042 gone fishing
- POJ-1042:Gone Fishing
- poj 1042 Gone Fishing
- poj 1042 Gone Fishing
- 斯坦福大学卷积神经网络教程UFLDL Tutorial - Convolutional Neural Network
- 堆排序之java
- Go语言学习(九)文件操作
- 第4周项目4-程序分析(1)
- 【OJ中级】坐标移动
- gone fishing
- 数据结构-题目1
- 标记
- 电话面试1 20160323_1916_18min
- oracle 找不到监听
- 基础排序算法
- Eclipse 下 查询和复制类路径的快捷方法
- 递归 example ruler
- 字符编码笔记:ASCII、Unicode、UTF-8 和 Base64