b 变换序列【DOC精选】.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
窗体顶端 窗体底端 您查询的关键词是:变换序列?报告? 。如果打开速度慢,可以尝试快速版;如果想保存快照,可以添加到搜藏。 (百度和网页/logshtml的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。) Sachs的酱油记 酱油,酱油~~~~ ??[HNOI2008]玩具装箱toy | 首 页 | [HNOI2009]梦幻布丁?? [NOI2009]变换序列 - [noi] 2010-03-22 Tag:hnoi hnoi2008 2008 变换序列 transform 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 /logshtml 提交地址:?32:8080/JudgeOnline/showproblem?problem_id=1562 [NOI2009]变换序列 Time Limit:5000MS? Memory Limit:655367 Case Time Limit:1000MS Description ? Input ?????? 第一行包含一个整数N,表示序列的长度。接下来的一行包含N个整数Di,其中Di表示i和Ti之间的距离。 Output 如果至少存在一个满足要求的变换序列T,则输出文件中包含一行N个整数,表示你计算得到的字典序最小的T;否则输出”No Answer”(不含引号)。注意:输出文件中相邻两个数之间用一个空格分开,行末不包含多余空格。 ? ? Sample Input 5 1 1 2 2 1 ? Sample Output 1 2 4 0 3 ? Hint 30%的数据中N≤50; 60%的数据中N≤500; 100%的数据中N≤10000。 此题可参考郭家宝大牛的报告: /blog/noi-2009-transform/ 此题构造二分图还是不难想的,主要是输出最小字典序 由于匈牙利算法的修改匹配是后匹配的点优先,所以在匈牙利的时候倒着做就可以得到最小字典序了 ? my code: var ??????? pre,son:array[0..20000] of longint; ??????? now,link,ans:array[0..10000] of longint; ??????? b:array[0..10000] of boolean; ??????? n,tot:longint; ??????? ok:boolean; procedure edge(a,b:longint); begin ??????? inc(tot); ??????? pre[tot]:=now[a]; ??????? now[a]:=tot; ??????? son[tot]:=b; end; procedure init; var ??????? i,t1,t2,x:longint; begin ??????? readln(n); ??????? for i:=1 to n do ??????? begin ??????????????? read(x); ??????????????? t1:=x+i; ??????????????? if t1n then t1:=t1-n; ??????????????? t2:=i-x; ??????????????? if t21 then t2:=t2+n; ??????????????? if t1=t2 then ??????????????????????? edge(i,t1) ??????????????? else ??????????????? if t1t2 then ??????????????? begin ??????????????????????? edge(i,t2); ??????????????????????? edge(i,t1); ??????????????? end ??????????????? else ??????????????? begin ??????????????????????? edge(i,t1); ??????????????????????? edge(i,t2); ??????????????? end; ??????? end; end; function find(x:longint):boolean; var ??????? p,y:longint; begin ??????? p:=now[x]; ??????? while p0 do ??????? begin ??????????????? y:=son[p]; ??????????????? if

文档评论(0)

taotao0b + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档