程序设计实习w3-动归之灌溉草场_第1页
程序设计实习w3-动归之灌溉草场_第2页
程序设计实习w3-动归之灌溉草场_第3页
程序设计实习w3-动归之灌溉草场_第4页
程序设计实习w3-动归之灌溉草场_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息科学技术学程序设计实 刘家 1信息科学技术学院《程序设计实习》刘家例题:灌溉草2在一片草有一条长为L(1<=L=,,,为偶的线段。hN(1=N<=100)头奶都着场这条段草牛的活动围是个开区(E都整同奶的动围以有 。John要在这条线段上安装喷水头灌溉草场。每个喷水头意调节,调节范围是 B](1<=A<=B<=1000),A,B都是整数。要线段上的每个整点恰好位于一个喷水头的喷洒范围每头奶牛的活动范围要位于一个喷水任何喷水头的喷洒范围不可越过线段的两端(左端是0,右端是L34输第1行:整数N、L第2行:整数A、B第3到N+2行:每行两个整数S、E0SEL表范围的起点和终 段上的坐标(即到线段起点的距离)输出:最少需要安装的多少个喷水头;若没有符合要求的喷,则输出-1输入样2163

35从线段的起点向终点安装喷水头,令f(X)恰好覆盖直线上的区间显然,X应满足下列条X为偶

时,最少X所在位置不会出现奶牛,即X不属于任何一个当X2B时,存在Y[X- X-2A]且Y满足上述三个条件,使f(XXf(X)=∝:X<f(X)=∝:X处可 f(X)=1+min{f(Y):Y[X-2B 之外}X>2B

!(FX2-A而且,X的点X队列中可以出现坐标小于X-2B的点。这样的点若出现在队头,则直将其抛弃求出X点的F值后,将(X-2A+2,F(X-2A+2))放入队列,为求F(X+2)作备队列里只要存坐标为偶数的点即#include<iostream>#include<cstring>#include<queue>usingnamespacestd;constintINFINITE=1<<31;constintMAXL= constintMAXN=1010;intF[MAXL];F[L]intcowThere[MAXL];//cowThere[i]为1表示点 intstructFxint intbooloperator<(constFx&a)constFx(intxx=0,intff=0):x(xx),f(ff){};在优先队列里,fpriority_queue<Fx>

returnf> int{cin>>N>>cin>>A>>A1B1;//A,Bfor(inti=0;i<N;++i)intcin>>s>>++cowThere[s+1//从s+1];}intinCows0//for(inti=0;i<=L;i++){//算出每个点是 F[i]=inCows+=cowThere[i]=inCows>}for(intiA;iBi2//if(!cowThere[i])F[i]=ifiB2A//在求F[i]的时候,要确保队列里的点x,xi}for(inti=B+2;i<=L;i+=2)if(!cowThere[i]) Fxwhile(!qFx.empty())fx=if(fx.x<i-B}

if(!qFx.empty()F[i]=fx.f+}if(F[iA2INFINITE)//队列中增加一个+1可达下个点的点qFx.push(Fx(iA+2,F[iA+2]))

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论