ssl2331&&OJ1373-鱼塘钓鱼 之1【纯贪心】
2018-03-09 18:35
211 查看
前言
dp做法堆优化贪心做法
题目:OJ1373
正题
有N个鱼塘,给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟(不能回头)。求限定时间内最多能够钓到的鱼数解题思路
由于数据较小,我们枚举一下最后到达的池塘,然后在开始计算时间时就减去路程然后就可以在计算时不需要计算路程问题了。然后每次找最多鱼的池塘钓,然后减那个池塘的鱼数(这里讲一下原理,由于我们不能确定这时是继续钓好还是去下一个池塘钓好,于是我们就用这种方法确定每个池塘应该钓多久),以此类推直到时间耗尽,然后每次更新最大答案。代码
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int tn,lt,num[101],t[101],mov[101],sum,n,m,a[101]; int main() { scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&num[i]); for (int i=1;i<=n;i++) scanf("%d",&mov[i]); for (int i=1;i<n;i++) scanf("%d",&t[i]); scanf( 4000 "%d",&m);//输入 for (int k=1;k<=n;k++) { int time=m-lt,ans=0,maxn; for (int i=1;i<=k;i++) a[i]=num[i];//初始化 while (time>0)//直到时间耗尽 { maxn=0; for (int i=1;i<=k;i++) if (a[i]>a[maxn]) maxn=i;//找最大值 if (maxn==0) break; ans+=a[maxn];//钓 a[maxn]-=mov[maxn];//减少鱼数 time--;//时间减少 } sum=max(sum,ans);//更新最大值 lt+=t[k];//路程提前计算 } printf("%d",sum); }
相关文章推荐
- ssl2331&&OJ1373-鱼塘钓鱼 之2【贪心堆优化】
- ssl2331&&OJ1373-鱼塘钓鱼 之3【dp】
- SSL 2331 洛谷 1717 信息学奥赛一本通 1373 鱼塘钓鱼 贪心
- 第八届河南省赛 zzuoj 10412: G.Interference Signal (DP&&贪心)
- SSL 2331 信息学奥赛一本通 1373 洛谷 1717 鱼塘钓鱼 动态规划
- 【杭电oj】5246 - 超级赛亚ACMer(二分 & 贪心 & STL)
- 【杭电oj】1052 - Tian Ji -- The Horse Racing(田忌赛马,贪心 & 双端队列)
- 【贪心】【POJ-1065&&HDOJ-1051&&AOJ-224】Wooden Sticks
- 【杭电oj】5248 - 序列变换(贪心 & 二分)
- 【贪心】【POJ-2231&&AOJ-231】Moo Volume
- NYJO71&南阳理工oj_71(独木舟上的旅行) (贪心)
- 【贪心】【POJ-1328&AOJ-195】Radar Installation
- 【杭电oj】4004 - The Frog's Games(STL & 二分 & 贪心)
- CodeForces - 344E Read Time && CodeForces - 830A Office Keys 二分+贪心
- <OJ_Sicily>LIS最长上升子序列
- nyoj 113 字符串替换<南阳oj 100道>
- 2017 CCPC 秦皇岛 & ZOJ 3987 - Numbers (贪心+大数)
- AOJ-AHU-OJ-517 序列(贪心)
- HDU-5242 Game (贪心&&树链剖分&&线段树)
- ZOJ 2971 && HNUOJ 16490 Give Me the Number