- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
搜索+拓扑排序+欧拉回路+二分+三分+stl+杂碎知识+概率算法 手动扩栈#pragma comment(linker, /STACK:1024000000,1024000000)三分查找和二分查找有什么区别呀?二分是要满足在二分的区间单调才行,而三分可以除了单调还适用先增后减或先减后增(y=x*x)的情况。大致的流程是,开始l=a,h=b;令 m1=l+(h-l)/3 ,m2=l+2*(h-l)/3 ,即3等分(l,h) (这个可以随意不必要等分)如果f(m1)f(m2)的话,证明m2一定在最小值的右边(否则在(m1,m2)区间的单调递减的),这样就可以令h=m2,新的(l,h)同样包含最小值点同理f(m1)=f(m2) 证明m1一定在最小值的左边 (否则在(m1,m2)区间的单调递增的),,这样就可以令l=m1, 新的(l,h)同样包含最小值点得到新的(l,h)之后重复上述步骤,直到l与h相差很小zoj 1649 bfs/*步数最小的不一定是时间最少的常规的bfs只能求出步数最少的。而在这题中一个点可以多次走,所以必须记录最优的那个值*/#includestdio.h#includequeue#includestring.husing namespace std;#define inf 0x3fffffff#define N 300char s[N][N];struct node {int x,y,step,time;}ss,tt,next;int n,m;int mintime[N][N];int dis[4][2]={1,0,-1,0,0,1,0,-1};int judge(int x,int y) {if(x=1x=ny=1y=ms[x][y]!=#) return 1;return 0;}int bfs() { queuenodeq; q.push(ss); int i; ss.step=0; ss.time=0; q.push(ss); mintime[ss.x][ss.y]=0; while(!q.empty()) { ss=q.front(); q.pop(); for(i=0;i4;i++) { int xx=next.x=ss.x+dis[i][0]; int yy=next.y=ss.y+dis[i][1]; next.step=ss.step+1; next.time=ss.time+1; if(judge(xx,yy)) { if(s[xx][yy]==x)next.time+=1; if(next.timemintime[xx][yy]) {//重点 mintime[xx][yy]=next.time; q.push(next); } } } } return mintime[tt.x][tt.y];}int main() { int i,j,k; while(scanf(%d%d,n,m)!=EOF) { for(i=1;i=n;i++) scanf(%s,s[i]+1); for(i=1;i=n;i++) for(j=1;j=m;j++) { mintime[i][j]=inf;//初始化 if(s[i][j]==r) { ss.x=i; ss.y=j; } if(s[i][j]==a) { tt.x=i; tt.y=j; } } k=bfs(); if(k=inf) printf(Poor ANGEL has to stay in the prison all his life.\n); else printf(%d\n,k); }return 0;}hdu 5040bfs+优先队列 需要存状态/*剪枝:四秒后状态会变得和原来一样,所以四秒后如果再经过这个点肯定不是最优的舍去易错点:在一个是从.到.这两个点都没有被照到并且不是摄像机,也可能需要等3秒,因为后面的结果可能再这三秒中发生改变,要单独判断*/#includestdio.h#includequeue#includeiostream#includestring.h#includealgorithmusing namespace std;#define N 510char s[N][N];struct node {int x,y,time; friend bool operator(node a,node b) {//优先队列 return a.timeb.time;//从小到大出队 }}ss,tt,next,cu;int ma[N][N][4],n;int judge(int x,int y) { if(x=1x=ny=1y=n) return 1; return 0;}void update(int i,int j,cha
您可能关注的文档
- 提高初中英语教学质量措施.doc
- 提高土石方工程量计算准确度的方法.doc
- 提高初中学生科学作业布置和批改有效性的策略研究.doc
- 提高初中教学质量的措施.doc
- 提高多媒体课件在课堂教学的实效性.doc
- 提高学习能力的活动课.doc
- 提高学困生解决问题能力的策略.doc
- 提高学校教育科研实效性.doc
- 提高学生“算用结合”的策略研究.doc
- 提高学生学习主动性和积极性的研究.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
最近下载
- 文献综述中小企业成本控制研究.docx VIP
- (2025春新版本)人教版七年级历史下册全册教案.pdf
- 北京市一零一中学2023-2024学年七年级下学期期中考试英语试卷(含答案).pdf
- 物业管理服务报价表完整优秀版 .pdf VIP
- 文献综述--中小企业成本控制的研究.doc VIP
- 莒县鸿瑞矿业有限公司新型节能环保型石灰窑项目(三期)竣工环境保护验收监测报告.docx VIP
- 第9课 近代西方的法律与教化 教案-统编版(2019)高中历史选择性必修1国家制度与社会治理.pdf
- ZOOM声乐乐器L-12 快速入门 (Chinese)说明书用户手册.pdf
- 基于单片机的宠物喂养系统的设计与实现.docx
- 中小学(三阶魔方的复原)校本教材.doc VIP
文档评论(0)