(~ ̄▽ ̄)~*

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; const int N=30;
int n,h,H;//H:记录原本有多少小时的时间;h:贪心的时候,防止H被修改
int res[N],RES[N];//res[]:贪心的时候保存结果;RES[]:用于记录最终结果
int maxn,sum;//maxn:保存最终结果,即捕到的鱼最大值;sum:每轮贪心的时候,用来保存鱼最大值 struct ff
{
int f,d,t;//f:第i个湖里原本有的鱼数,d:第i个湖被捕过之后的鱼数,t:从第i-1到第i个湖需要的时间
};
ff f[N],F[N]; int main()
{
while(scanf("%d",&n)&&n)
{
memset(RES,0,sizeof(RES));
maxn=0;
scanf("%d",&H);
H*=12; //以5min为单位,输出结果的时候,记得乘以5
RES[0]=H;//赋初值H,因为有可能1……n-1湖都没有鱼,时间就都花在第一个湖了
for(int i=0;i<n;i++)
scanf("%d",&F[i].f);
for(int i=0;i<n;i++)
scanf("%d",&F[i].d);
for(int i=1;i<n;i++)
scanf("%d",&F[i].t); for(int k=0;k<n;k++)
{//在第0到第k个湖之间捕鱼
h=H;
sum=0;
memset(res,0,sizeof(res));
for(int i=0;i<n;i++)
f[i].f=F[i].f;//避免F[]被修改
for(int i=1;i<=k;i++)
h-=F[i].t; //把到第k个湖之前所用的时间全部减去,剩下的时间来捕鱼
if(h<=0) break; while(h--)
{//只要有时间,每次都去鱼最多的湖抓鱼(贪心)
int index=0;
for(int i=1;i<=k;i++)
if(f[i].f>f[index].f)
index=i;
sum+=f[index].f;
f[index].f-=F[index].d;//第index个湖被捕之后,就会少掉d条鱼,要更新f[].f值
if(f[index].f<0)
f[index].f=0;//还要注意避免负值
res[index]++;//只要在第index个湖捕鱼,那么在第index个湖就花去了时间1(单位为/5min)
}
if(sum>maxn)
{//更新最大值maxn,找到最优的状态,把数据记录在RES[]中,因为res[]会清零并用于下一轮的记录
maxn=sum;
for(int i=0;i<=k;i++)
RES[i]=res[i];
}
}
for(int i=0;i<n-1;i++)
printf("%d, ",RES[i]*5);//记得*5
printf("%d\n",RES[n-1]*5);//记得*5
printf("Number of fish expected: %d\n\n",maxn);
}
return 0;
}

POJ 1042 Gone Fishing#贪心的更多相关文章

  1. POJ 1042 Gone Fishing (贪心)(刘汝佳黑书)

    Gone Fishing Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 30281   Accepted: 9124 Des ...

  2. poj -- 1042 Gone Fishing(枚举+贪心)

    题意: John现有h个小时的空闲时间,他打算去钓鱼.钓鱼的地方共有n个湖,所有的湖沿着一条单向路顺序排列(John每在一个湖钓完鱼后,他只能走到下一个湖继续钓),John必须从1号湖开始钓起,但是他 ...

  3. POJ #1042 Gone Fishing - WA by a DP solution. TODO

    I used DP instead of Greedy. But got WA on PoJ, though it passed all web-searched cases. Maybe I hav ...

  4. POJ 1042 Gone Fishing

    题意:一个人要在n个湖中钓鱼,湖之间的路径是单向的,只能走1->2->3->...->n这一条线路,告诉你每个湖中一开始能钓到鱼的初始值,和每钓5分钟就减少的数量,以及湖之间的 ...

  5. POJ 1042 Gone Fishing( DP )

    题意:小明打算做一个h((1 <= h <= 16))个小时钓鱼旅行.发现这里有n(2 <= n <= 25)个湖,而且所有的湖都在一条路的旁边.小明打算从第1个湖开始钓起,每 ...

  6. POJ 3190 Stall Reservations贪心

    POJ 3190 Stall Reservations贪心 Description Oh those picky N (1 <= N <= 50,000) cows! They are s ...

  7. POJ 2392 Space Elevator(贪心+多重背包)

    POJ 2392 Space Elevator(贪心+多重背包) http://poj.org/problem?id=2392 题意: 题意:给定n种积木.每种积木都有一个高度h[i],一个数量num ...

  8. Poj/OpenJudge 1042 Gone Fishing

    1.链接地址: http://bailian.openjudge.cn/practice/1042/ http://poj.org/problem?id=1042 2.题目: Gone Fishing ...

  9. Gone Fishing POJ 1042

    #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> us ...

随机推荐

  1. Android 6.0 M userdebug版本执行adb remount失败

    [FAQ18076]Android 6.0 M版本默认会打开system verified boot,即在userdebug和user版本会把system映射到dm-0设备,然后再挂载.挂载前会检查s ...

  2. SHELL中,如何分割字符串

    done.csv中,形如 amoy9812@163.com的数据 #!/bin/shwhile read linedo ar=(${line//@/ }) echo ${ar[0]} #说明:分解出账 ...

  3. perl's Favorite Default: $_

    If you omit the control varibele from the beiginning of foreach loop, Perl uses its favrorite defaul ...

  4. Python网络编程学习_Day10

    一.进程与线程 1.区别 进程:一个程序要运行时所需要的所有资源的集合,进程是资源的集合. 一个进程至少需要一个线程,这个线程称为主线程 一个进程里面可以有多个线程 两个进程之间的数据是完全独立,不能 ...

  5. deployd使用归纳

    deployd:一个生成后端数据的软件,简单的说就是大部分的前端不会后端,即使会也很难在深入到数据库进行设置一些前端所需数据的创建与查询的后端程序的书写,所以此时就是deployd大显身手的时候了. ...

  6. linux xfce4普通用户 mount usb提示: Not authorized to perform operation

    问题:xfce4下,USB 硬盘能自动挂载并显示,但是普通用户操作时,提示:Not authorized to perform operation. 时间:20160928 os:gentoo + x ...

  7. Objective-C Runtime 运行时之三:方法与消息(转载)

    前面我们讨论了Runtime中对类和对象的处理,及对成员变量与属性的处理.这一章,我们就要开始讨论Runtime中最有意思的一部分:消息处理机制.我们将详细讨论消息的发送及消息的转发.不过在讨论消息之 ...

  8. matlab中选择图片路径

    %读取训练图片数据文件 [FileName,PathName] = uigetfile('*.*','选择测试图片数据文件t10k-images.idx3-ubyte'); %暴露图片路径 saved ...

  9. 驱动相关Error

    驱动中 fltKernel.h报 EPROCESS和PETHREAD重定义异常解决办法 驱动编写中经常会莫名出现 error C2371: 'PEPROCESS' : redefinition; di ...

  10. LVM

    LVM (简体中文) pvdisplay -v -m命令查看物理分段 Create logical volume from another LV free space PVMOVE(8)