POJ_1042_贪心
题目描述:
每组数据给你n个胡,h小时时间,每个湖一次可钓鱼数量,每个湖每次钓鱼后下次可钓鱼数量的减少量,从每个湖到下一个湖所需时间。求最大钓鱼量。
要注意的是,刚开始在第一个湖,每次移动只能往下一个湖移动,每次钓鱼数量最多可减少到0。
若多种情况钓鱼数量一样,则取前面的湖钓鱼次数最多的。
思路:
先把时间统一。
可以按跑了多少个湖分n种情况,也就是最后呆在哪个湖。
对于每一种情况,减去跑路的时间,总的钓鱼的时间是一样的,问题就变成了,怎么在跑过的湖分配时间,使效益最大。
贪心,每次取最大值,湖的状态更新之后,再取最大值......
一直到时间耗光,上面的值相加就是这种情况下的钓鱼最大数量。
然后每种情况取最大值便是最终答案,另外,每种情况还需要一个数组保存每个湖钓鱼次数。
最后要注意的是,钓鱼数量一样取前面的湖钓鱼次数最多的,若当前每个湖钓鱼数量均为0,可以直接把剩余时间全部投入第一个湖,结束此次过程。
#include<iostream>
#include<cstdio>
using namespace std; int n,h,t[],f[],d[],ans[]; int main()
{
while(cin >> n && n)
{
cin >> h;
h = h*;
int i,j;
for(i = ;i <= n;i++) cin >> f[i];
for(i = ;i <= n;i++) cin >> d[i];
for(i = ;i < n;i++) cin >> t[i];
int sum = -;
for(i = ;i <= n;i++)
{
int point,temp_h = h,temp_sum = ,temp_f[],temp_ans[] = {};
for(j = ;j <= n;j++) temp_f[j] = f[j];
while(temp_h)
{
int maxf = ;
for(j = ;j <= i;j++)
{
if(temp_f[j] > maxf)
{
maxf = temp_f[j];
point = j;
}
}
if(maxf)
{
temp_ans[point] += ;
temp_sum += temp_f[point];
if(temp_f[point] >= d[point])
temp_f[point] -= d[point];
else
temp_f[point] = ;
}
else
{
temp_ans[] += temp_h;
break;
}
temp_h -= ;
}
if(h > t[i]*)
{
h -= t[i]*;
}
else
{
h = ;
} if(temp_sum > sum)
{
for(j = ;j <= n;j++)
{
ans[j] = temp_ans[j];
}
sum = temp_sum;
}
}
for(i= ;i < n;i++) cout << ans[i] << ", ";
cout << ans[n] << endl;
cout << "Number of fish expected: " << sum << endl;
cout<<endl;
}
return ;
}
POJ_1042_贪心的更多相关文章
- BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]
1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1383 Solved: 582[Submit][St ...
- HDOJ 1051. Wooden Sticks 贪心 结构体排序
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 786 Solved: 391[Submit][S ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【BZOJ-4245】OR-XOR 按位贪心
4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 486 Solved: 266[Submit][Sta ...
- code vs 1098 均分纸牌(贪心)
1098 均分纸牌 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有 N 堆纸牌 ...
- 【BZOJ1623】 [Usaco2008 Open]Cow Cars 奶牛飞车 贪心
SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. #include <iostream> #include <cstdi ...
- 【贪心】HDU 1257
HDU 1257 最少拦截系统 题意:中文题不解释. 思路:网上有说贪心有说DP,想法就是开一个数组存每个拦截系统当前最高能拦截的导弹高度.输入每个导弹高度的时候就开始处理,遍历每一个拦截系统,一旦最 ...
随机推荐
- npm安装报错npm ERR! Refusing to install package with name "xxxx" under a packagexxxx
npm ERR! code ENOSELF npm ERR! Refusing to install package with name "webpack" under a pac ...
- 实现github的自动钩子
实现github的自动钩子 最近在学习go,也写了一些玩具放到自己的服务器中,但是感觉每次写完在本地交叉编译后上传到服务器略显麻烦,上传代码到服务器中编译也是略显麻烦,把编译文件加入到git管理中会导 ...
- 《图解机器学习-杉山将著》读书笔记---CH1
CH1 什么是机器学习 重点提炼 机器学习的种类: 常分为:监督学习.无监督学习.强化学习等 监督学习是学生从老师那获得知识,老师提供对错指示 无监督学习是在没有老师的情况下,学生自习 强化学习是在没 ...
- ENS 域名注册表智能合约(ENSRegistry.sol)解析
ENS 注册表合约是 ENS 系统中的核心合约,了解这个合约可以敲开我们理解 ENS 域名系统的大门. 打开下面的折叠区域可以查看用 Solidity 语言编写的详细代码.当前部署在以太坊中的 ENS ...
- 字符串 hash - 不停地删掉字母
Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text p . Her j ...
- 使用Robot Framework框架远程操作UNIX系统
bot Framework是一个强大的自动化测试框架,依靠社区力量编写的Test Library为它提供了非常强的扩展性.下面我将介绍的就是如何使用第三方提供的扩展测试库(Test Library)来 ...
- “Your build settings specify a provisioning profile with the UUID “”, however, no such provisioning profile was found”
解决方法: 终端命令行输入下面语句,删除所有的Profilescd ~/Library/MobileDevice/Provisioning\ Profiles/rm *.mobileprovision
- threding.local
作用:为每一个线程开辟一个独立的内存空间 示例 from threading import Thread, local import time obj = local() def test(i): o ...
- python实现数据结构-栈
注:本文档主要是学习<Python核心编程(第二版)>时的练习题. 栈是一种"后进先出"的数据结构(LIFO),是一种操作受限的线性结构,数据只能从栈顶进入和栈顶出去. ...
- 玩转Django2.0---Django笔记建站基础十二(Django项目上线部署)
第十二章 Django项目上线部署 目前部署Django项目有两种主流方案:Nginx+uWsGI+Django或者Apache+uWSGI+Django.Nginx作为服务器最前端,负责接收浏览器的 ...