POJ 1042
2016-02-14 22:09
211 查看
题意:
John去钓鱼,在一个单向的很多条湖的路边钓鱼,每条湖每5分钟能钓到的鱼的数量随着时间减少,每条湖之间的行走时间也是不同的,但是固定不变。问的是,给出总的时间h小时,编写算法,求出能钓到最多的鱼的解决方案。
输入:湖的数量,给定的总时间,每条湖头5分钟能钓到的数量,每条湖钓鱼的衰减速率,每两条湖之间的行走时间
输出:每条湖上 钓鱼的时间,以及最大的钓鱼的数量
分析:枚举算法 加上 贪心算法
首先,无论选择哪种方案,最后John肯定会有一条最后钓鱼的湖。所以,最终方案肯定是以下方案的一个:在第i条湖收工(i=1,2,3,4……n).
以上是枚举,枚举中每一种情况之后,再看看下一个5分钟,哪一条湖能钓的鱼最多,就选择哪条湖,“瞬间转移”,这样持续下去,直到把时间耗尽
这就是贪心算法,每次选择最优的方案。
如果出现负数,时间全部累加到 第一条湖 上;当出现钓鱼最多的方案有多个时,将前几个湖中耗时最长的找出来就可以了。
最后要注意的是,输出格式。(一个空格花了我好久才AC)
John去钓鱼,在一个单向的很多条湖的路边钓鱼,每条湖每5分钟能钓到的鱼的数量随着时间减少,每条湖之间的行走时间也是不同的,但是固定不变。问的是,给出总的时间h小时,编写算法,求出能钓到最多的鱼的解决方案。
输入:湖的数量,给定的总时间,每条湖头5分钟能钓到的数量,每条湖钓鱼的衰减速率,每两条湖之间的行走时间
输出:每条湖上 钓鱼的时间,以及最大的钓鱼的数量
分析:枚举算法 加上 贪心算法
首先,无论选择哪种方案,最后John肯定会有一条最后钓鱼的湖。所以,最终方案肯定是以下方案的一个:在第i条湖收工(i=1,2,3,4……n).
以上是枚举,枚举中每一种情况之后,再看看下一个5分钟,哪一条湖能钓的鱼最多,就选择哪条湖,“瞬间转移”,这样持续下去,直到把时间耗尽
这就是贪心算法,每次选择最优的方案。
如果出现负数,时间全部累加到 第一条湖 上;当出现钓鱼最多的方案有多个时,将前几个湖中耗时最长的找出来就可以了。
最后要注意的是,输出格式。(一个空格花了我好久才AC)
#include<iostream> #include<cstring> #define MAX 26 using namespace std; int t[MAX],f[MAX],F[MAX],d[MAX],ans[MAX],ANS[MAX]; //ANS为最终在每条湖上的停留时间 int main(){ int i,j,k,h,time,n,p,sum,max; memset(t,0,sizeof(t)); while(cin>>n&&n!=0){ cin>>h; h = h * 12; for(i=0;i<n;i++) cin>>F[i]; for(i=0;i<n;i++) cin>>d[i]; for(i=1;i<n;i++){ cin>>time; t[i] = time + t[i-1]; } memset(ANS,0,sizeof(ANS)); for(max=0,i=1;i<=n;i++){ memset(ans,0,sizeof(ans)); for(k=0;k<i;k++) f[k] = F[k]; for(sum=0,j=0;j<h-t[i-1];j++){ for(p=0,k=1;k<i;k++){ if(f[k]>f[p]) p = k; } if(f[p]<=0){ ans[0]+= h - t[i-1] - j; break; } sum += f[p]; f[p] -= d[p]; ans[p]++; } if(sum>max){ max = sum; memcpy(ANS,ans,sizeof(ans)); } if(sum == max){ for(j=0;j<i;j++){ if(ans[j]!=ANS[j]) break; } if(ans[j]>ANS[j]){ memcpy(ANS,ans,sizeof(ans)); } } } for(i=0;i<n;i++){ if(i==n-1){ cout<<ANS[i]*5<<endl; break; } cout<<ANS[i]*5<<", "; } cout<<"Number of fish expected: "<<max<<endl<<endl; } return 0; }
相关文章推荐
- A题 AC自动机+状压dp
- [转]Mybatis极其(最)简(好)单(用)的一个分页插件
- Computational Geometry Templates
- makefile_2
- Exchange 2010 (三) HUB NLB部署
- Android SDK Manager 更新代理配置
- 查看windows系统配置的方法
- 从头认识Spring-2.3 注解装配-@autowired(5)-限定器@Qualifier(1)
- Linux中du命令:同样可以查看使用的空间,但是与df有不同
- iOS开发之网络编程--XCode7 更新以来需要手动设置的内容
- hadoop(教程,资料参考网站)
- 把REACT-NATIVE需要的安装程序都打了个包,就不用网上下了
- 线程基础:JDK1.5+(9)——线程新特性(中)
- 有关eclipse for java ee版本遇到的坑( Context initialization failed)
- poj 3132
- Multiple representations of the same entity are being merged解决方法
- 学习Discuz! X3.2记录:修改标签“Powered by Discuz!”的一种方法
- eclipse中离线安装genymotion插件
- poj 1050(矩阵求和问题dp)
- 让jsp页面自动跳转方法