搜索+拓扑排序+欧拉回路+二分+三分+stl+概率算法.docxVIP

搜索+拓扑排序+欧拉回路+二分+三分+stl+概率算法.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
报名方式:1,将该表交到电教楼522室,时间下周一,二,三。 2, 将个人简历发送。 搜索+拓扑排序+欧拉回路+二分+三分+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.h using namespace std; #define inf 0x3fffffff #define N 300 char 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);

文档评论(0)

茉莉花的香味 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档