




免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Gone Fishing算法详解及源码 这道题其实难在读题上,因为这道题的细节太多,往往容易搞混,造成WA的情况,所以,学好英语还是有作用的。 解此题的主要方法是枚举+贪心。刚开始的时候还没想到一个好方法,因为当前鱼最多的池塘是变化的,而题目所给描述里面的钓鱼又是有顺序的,即:John starts at lake 1, but he can finish at any lake he wants. He can only travel from one lake to the next one, but he does not have to stop at any lake unless he wishes to.所以,不可能在池塘中间瞬移,所以贪心貌似不能用。 但转念一想,瞬移还是有可能的,当确定了结束池塘ep(endpond)之后(结束池塘由1枚举到n),我们便可以把从1到ep的交通费用从h中减去,然后用剩下的时间贪心即可。因为在分析问题时,对于一个池塘,John在它上面什么时候钓鱼并不重要,所以可以先把John看成很聪明的人,然后假设他已经知道了在确定了结束池塘后,在每个池塘花多少时间使收益最大(实际上John是在贪心之后才知道的),这时我们就可以先减去交通费用,然后在1ep的池塘中找现在的最大的即可。 这道题还比较容易WA,但最容易WA的地方还是全零的情况。法2,没问题:简单题 直接枚举结束湖泊+贪心选择就可以了为什么可以贪心?(反正你要取的是最优解 你可以假定自己知道最优解 一路走过去的路上就直接取最优解就可以了)因为集训的时候这个题目莫名WA 故再A一遍 以解心头之恨!using namespace std; 不能用time G+ CE多次 faintGone FishingSolution:/ by oyjpArt#include #include using namespace std;const int N = 30;struct node int nf, idx; void set(int nn, int ii) nf = nn; idx = ii;int nl, time, fN, tN, dN, totf, stayN, beststayN;typedef priority_queue PQ;bool operator b.idx; return a.nf b.nf; int main () int i, j; while(scanf(%d, &nl), nl) scanf(%d, &time); time *= 12; int maxf = -1; for(i = 0; inl; i+) scanf(%d, f+i); for(i = 0; inl; i+) scanf(%d, d+i); for(i = 0; inl-1; i+) scanf(%d, t+i); for(i = 0; i0) time -= ti-1; node now; PQ pq; for(j = 0; j=i; j+) now.set(fj, j); pq.push(now); for(j = 0; jtime; j+) now = pq.top(); pq.pop(); staynow.idx += 5; totf += now.nf; now.nf -= dnow.idx; if(now.nf maxf) maxf = totf; memcpy(beststay, stay, sizeof(stay); printf(%d, beststay0); for(i = 1; inl; i+) printf(, %d, beststayi); printf(nNumber of fish expected: %dnn, maxf); return 0;includeusing namespace std;const int size=26;int n,h,ca;int fsize,tsize,dsize,tfsize;int anssize,tanssize,flag;int main() int i,j,k,sum,time,tt,tnum,maxsum,nextmin,t1;while(cinn) if(n=0)break;ca+; if(ca 1) cout h;maxsum=-100;h*=60;t1=0; for(i=1;ifi;tfi=fi; for(i=1;idi; for(i=1;iti; for(i=1;i=n;i+) ansi=tansi=0; for(i=1;i=n;i+) t1+=ti-1; time=(h-t1*5)/5;sum=0; for(j=1;j=tt) sum=(f1+f1-(tt-1)*d1)*tt/2; else sum=(f1+f1-(time-1)*d1)*time/2; time=0; else if(i=1&d1=0) tans1=time; sum=time*f1; time=0; while(time0) tnum=0;k=1;nextmin=0;flag=0; for(j=1;j=i;j+) if(tnumfj) tnum=fj; for(j=1;j=i;j+) if(nextminfj&fj!=tnum) nextmin=fj; for(j=1;ji;j+) if(fj!=fj+1) flag=1;break; if(tnum=0) tans1+=time; break; if(flag=0|f1=tnum) sum+=f1; f1-=d1; if(f10)f1=0; tans1+; time-; continue; for(j=1;j0) sum+=fj; tansj+; fj-=dj; time-;if(time0)time=0; if(fj0) tansj+=time; sum+=time*fj; time=0; break; if(maxsumsum) maxsum=sum; for(j=1;j=i;j+) ansj=tansj; for(j=1;j=n;j+) fj=tfj; for(i=1;i=n;i+) coutansi*5; if(i!=n) cout, ; else coutendl; coutNumber of fish expected: maxsumendl; return 0;问题描述:给定由n个整数(包含负整数)组成的序列a1,a2,.,an,求该序列子段和的最大值。当所有整数均为负值时定义其最大子段和为0。依此定义,所求的最优值为: 例如,当(a1,a2, a3, a4, a5,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为: 一个简单算法:int MaxSum(int n, a, &besti, &bestj) int sum=0; for(i=1;i=n;i+) for(j=1;j=n;j+) int thissum=0; for(k=i;ksum) sum=thissum; besti=i; bestj=j; return sum;算法有3重循环,复杂性为O(n3)。由于有:算法可作如下改进:int MaxSum(int n, a, &besti, &bestj) int sum=0;for(i=1;i=n;i+) int thissum=0;for(j=i;jsum)sum=thissum;besti=i;bestj=j; 改进后的算法复杂性为O(n2) 。从问题的解的结构可以看出,它适合于用分治策略求解:如果将所给的序列a1:n分为长度相等的两段a1:n/2和an/2+1:n,分别求出这两段的最大子段和,则a1:n的最大子段和有三种情形:a1:n的最大子段和与a1:n/2的最
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 通信专业安全员考试题库完整版及答案解析
- 企业级网络通信系统定制开发合同书
- 信息技术咨询与培训协议
- 土地流转农业种植技术推广合作协议
- 农贷风险管理与农业金融创新
- 实验设计与数据处理规章制度
- 共享电车停车场建设指南
- 全身养生保健秘籍大揭秘
- 商业连锁品牌经营及加盟合作协议
- 人工智能在医疗诊断中的应用细则
- GA/T 1678-2019法庭科学鞋底磨损特征检验技术规范
- 工程地质学:第7章 岩体结构及其稳定性
- 《数字媒体专业认知实习》课程教学大纲
- 中西方婚礼文化差异毕业论文Word版
- 预备队员考核表
- 庆阳地区地下水供水水文地质条件评价
- 储能项目竣工报告
- 打印版唐能通
- 37°球面型管路连接件
- 择菜洗菜和切菜
- 主体沉降观测的大概内容主体沉降观测方案.doc
评论
0/150
提交评论