题目

总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB

描述

佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”。在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会。一共有n个同学, 编号从1到n。一开始,同学们按照1,2,……,n的顺序坐成一圈,而实际上每个人都有两个最希望相邻的同学。如何下命令调整同学的次序,形成新的一个圈,使之符合同学们的 意愿,成为摆在佳佳面前的一大难题。

佳佳可向同学们下达命令,每一个命令的形式如下:

(b1, b2,… bm -1, bm)

这里m的值是由佳佳决定的,每次命令m的值都可以不同。这个命令的作用是移动编号是b1,b2,…… bm –1,bm的这m个同学的位置。要求b1换到b2的位置上,b2换到b3的位置 上,……,要求bm换到b1的位置上。

执行每个命令都需要一些代价。我们假定如果一个命令要移动m个人的位置,那么这个命令的代价就是m。我们需要佳佳用最少的总代价实现同学们的意愿,你能帮助佳佳吗?

输入

输入文件fire.in的第一行是一个整数n(3 <= n <= 50000),表示一共有n个同学。其后n行每行包括两个不同的正整数,以一个空格隔开,分别表示编号是1的同学最希望相邻 的两个同学的编号,编号是2的同学最希望相邻的两个同学的编号,……,编号是n的同学最希望相邻的两个同学的编号。

输出

输出文件fire.out包括一行,这一行只包含一个整数,为最小的总代价。如果无论怎么调整都不能符合每个同学的愿望,则输出-1。

样例输入

4

3 4

4 3

1 2

1 2

样例输出

2
代码

#include<bits/stdc++.h>
using namespace std;
int i,j,m,n,temp;
int a[50001],x[50001],y[50001];
int gs[50001],gs2[50001];int r()
{int ans=0,f=1;char ch;while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){ans*=10;ans+=ch-'0';ch=getchar();}return ans*f;
}
int main()
{n=r();for(i=1;i<=n;i++){x[i]=r(),y[i]=r();}a[1]=1,a[2]=x[1];for(i=3;i<=n;i++){if(x[a[i-1]]==a[i-2]) a[i]=y[a[i-1]];else a[i]=x[a[i-1]];}int le,ri;for(i=1;i<=n;i++){le=i-1;ri=i+1;if(!le)le=n;if(ri==n+1)ri=1;if((x[a[i]]!=a[ri]||a[le]!=y[a[i]])&&(y[a[i]]!=a[ri]||a[le]!=x[a[i]])){cout<<-1;return 0;}}int dis1,dis2;for (i=1; i<=n; i++){dis1=(a[i]-i+n)%n;dis2=(a[i]+i-1)%n;gs[dis1]++;gs2[dis2]++;}int ans=0;for (i=0; i<n; i++) {if (ans<gs[i]) ans=gs[i];if (ans<gs2[i]) ans=gs2[i];}cout<<n-ans;return 0;
}

【NOIP2005 提高组】篝火晚会相关推荐

  1. P1053 [NOIP2005 提高组] 篝火晚会

    这题很好,先要用图的知识来判断,然后再思维,很牛,等我晚上回去写题解 noip2005(提高组)讲解 - 百度文库官方题解牛牛子 AC代码: #include<bits/stdc++.h> ...

  2. 信息学奥赛一本通 1839:【05NOIP提高组】谁拿了最多奖学金 | OpenJudge NOI 1.9 04:谁拿了最多奖学金 | 洛谷 P1051 [NOIP2005 提高组] 谁拿了最多奖学金

    [题目链接] ybt 1839:[05NOIP提高组]谁拿了最多奖学金 OpenJudge NOI 1.9 04:谁拿了最多奖学金 洛谷 P1051 [NOIP2005 提高组] 谁拿了最多奖学金 [ ...

  3. [NOIP2005] 提高组 洛谷P1051 谁拿了最多奖学金

    题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1 ...

  4. vijos p1002——过河(noip2005提高组T2)

    描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上 ...

  5. [NOIP2005提高组]过河

    题目描述 描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点 ...

  6. NOIP1998-2018 CSP-S2 2019 2021提高组解题报告与视频

    CSP-S 2020 讲题录屏 CSP-S 2020 讲题录屏_哔哩哔哩_bilibili 冠军说题--ACM世界冠军吴卓杰,带你复盘2020 CSP-S2 冠军说题--ACM世界冠军吴卓杰,带你复盘 ...

  7. [原创][NOIP2005]篝火晚会(超详细题解,3种思路)

    原题 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了"小教官".在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有n个同学,编号从1到n.一 ...

  8. [noip2005]篝火晚会

    佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了"小教官".在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有n个同学,编号从1到n.一开始, ...

  9. noip2005篝火晚会 2008.10.18

    noip2005篝火晚会 2008.10.18 注意: 1.       刚开始,我用的是图来标记这两个人是否已经输出过,一直出错,后来看了标称,方法很好 2.       求出序列后,因为是圆环,要 ...

最新文章

  1. matlab最大化函数,求助,最大化一个函数
  2. c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2
  3. python Authentication plugin ‘caching_sha2_password‘ is not supp
  4. 玩转木浪云数据管理免费版使用篇之内容搜索与颗粒度恢复
  5. 为什么需要软件过程改善(Software Process Improvement)?
  6. jquery 日期选择器
  7. JSON.Stringify
  8. 西门子触摸屏脚本程序_西门子触摸屏程序如何上传
  9. JS保留小数 去尾法 进一法 四舍五入法
  10. 【论文笔记】ASNet:基于生成对抗网络(GAN)的无监督单模和多模配准网络(范敬凡老师)
  11. win8dns服务器没响应,win8笔记本dns服务器未响应怎么办
  12. 进化优化算法--第二章:爬山法
  13. 购买网易企业邮箱后,怎么用手机移动端办公?
  14. 非对称加密和对称加密的优缺点
  15. face to face
  16. Unity3d制作菜单栏
  17. 清华大学计算机刘云鹏,除北京外,咱省是清华大学最大的生源地!为啥河南高分学子青睐清华,来看看...
  18. 华为云智慧物流解决方案
  19. 移动信号最好的服务器,三大运营商哪家的“信号”最好?真实体验分析
  20. PHP后端美化,PHPCMS V9后台模板美化 PHPCMS后台美化模版 - 下载 - 搜珍网

热门文章

  1. 八字易经算法之用JAVA实现硬币卜卦辅助工具
  2. SoC设计与验证流程
  3. CAD梦想画图中的“绘图工具——椭圆弧”
  4. ftp下载工具绿色版,绿色版ftp下载工具好用推荐
  5. 微软语音识别引擎Speech
  6. 关于全量与增量 的思考
  7. 使用RecyclerView自定义实现二级联动列表
  8. 蓝牙协议栈测试,蓝牙协议栈认证:蓝牙BQB认证中End Product/Subsystem和Component的认证区别
  9. android下怎样伪装mac,Android刷成iOS?史上最强苹果伪装教程
  10. 【论文阅读一】Adaptive Cross-Modal Few-shot Learning