Vijos P1008 篝火晚会


描述

佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”。在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会。一共有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。我们需要佳佳用最少的总代价实现同学们的意愿,你能帮助佳佳吗?
对于30%的数据,n <= 1000;
对于全部的数据,n <= 50000。
格式

输入格式

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

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

样例输入1

4
3 4
4 3
1 2
1 2

样例输出1

2

限制

1s


题解

考虑到如果该数据有解,那么一定会以节点111先向左/右走一步,那么这整个环就确定下来了,但是它会有两个(镜像环)

然后就是用一个贪心的方法,从环上任意一个节点开始走,求出走到该点所要的时间,以及改点的id" role="presentation" style="position: relative;">ididid他们的差值,记录这个差值

显然,某个差值出现次数越多,说明以这些差值出现的节点所构成的环所需要调整的人数越少,答案就是 nnn-出现次数的最大值

然后,就是判断是否存在解

首先,对于一个节点,它被需要的次数超过2" role="presentation" style="position: relative;">222次 ,那么一定不存在解,因为是一个环,一个人的临近位置只有两个

其次,对于一个环,如果他不能包括所有的点,那么它也一定不存在解(数据的第二个点,我开始只AA<script type="math/tex" id="MathJax-Element-707">A</script>了第二个点,所以知道)

最后,对于一个点,如果它上一个点的下一个点不是它自己,那么它也没有解(好像这个只适用于起点,反正我也写上去了)


代码

#include<cstdio>
#include<cstring>
#define maxn 50005
using namespace std;int n,tot,ans,last;
int p[maxn],cnt[maxn],l[maxn],r[maxn],hash[maxn];
bool vis[maxn];int readln()
{int x=0;char ch=getchar();while (ch<'0'||ch>'9') ch=getchar();while ('0'<=ch&&ch<='9') x=x*10+ch-48,ch=getchar();return x;
}int max(int x,int y){return x>y?x:y;}int main()
{n=readln();for (int i=1;i<=n;i++){l[i]=readln();r[i]=readln();cnt[l[i]]++;cnt[r[i]]++;if (cnt[l[i]]>2||cnt[r[i]]>2) {printf("-1");return 0;}}last=l[1];for (int i=1;!vis[i];i=(vis[r[i]]?l[i]:r[i])){vis[i]=true;if (l[last]!=i&&r[last]!=i) {printf("-1");return 0;}p[++tot]=i;hash[(i-tot+n)%n]++;last=i;}if (tot<n) {printf("-1");return 0;}for (int i=0;i<n;i++) ans=max(ans,hash[i]);memset(vis,false,sizeof(vis));memset(hash,0,sizeof(hash));tot=0;for (int i=1;!vis[i];i=(vis[l[i]]?r[i]:l[i])){vis[i]=true;p[++tot]=i;hash[(i-tot+n)%n]++;}for (int i=0;i<n;i++) ans=max(ans,hash[i]);printf("%d",n-ans);
}

Vijos P1008 篝火晚会相关推荐

  1. 五一惠州双月湾游,海滩,帐篷,野营,烧烤、篝火晚会

    惠州沙滩周末两日一晚游 活动介绍 线路特色 行程安排 费用说明 粉丝优惠价 注意事项 客服专线 报名入口 路上干点啥呢 惠州双月湾帐篷露营.烧烤BBQ.篝火晚会狂欢.出海捕鱼二日游 为公司企业团体策划 ...

  2. NOIP 2005 篝火晚会

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

  3. P1053 篝火晚会

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

  4. 【NOIP2005 提高组】篝火晚会

    题目 总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB 描述 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了"小教官& ...

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

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

  6. 涛涛打保龄球 【map】篝火晚会(两道题)

    涛涛打保龄球 目录 [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [代码] 2. 题目描述 输入格式 输出格式 输入输出样例 输入 #1 输出 #1 说明/提示 代码 (今天的 ...

  7. RQNOJ 篝火晚会

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

  8. NOIP2005 篝火晚会 解题报告

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

  9. 洛谷P1053篝火晚会题解--zhengjun

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

最新文章

  1. 前端每周清单第 33 期:React 16 发布与特性介绍,Expo AR 教程,ExtJS 从崛起到沉寂...
  2. nsswitch.conf文件详解
  3. Android ListView 详解
  4. 为什么Android要采用Binder作为IPC机制?
  5. JS模块化工具requirejs教程
  6. pandas之表格样式
  7. 研发中会使用到的工具
  8. C++builder Tokyo 调用com 不正确的变量类型
  9. 计算机网络考试难吗,网络教育统考中的计算机考试难不难,
  10. Spring Boot Admin Reference Guide
  11. 网站安全webshell扫描
  12. html5怎么联网,HTML5--离线web应用
  13. 射频识别技术漫谈(16)——Mifare UltraLight
  14. 思科交换机配置trunk模式及vtp
  15. Falcon(一)——数据集管理和数据处理平台
  16. Python自动登录校园网
  17. Linux内核模块最简驱动
  18. 亚马逊云科技发布“云拓计划”赋能企业加速上云及数字化转型
  19. 生活随记-参观一大会址须知
  20. 现代化物流对应术语解释

热门文章

  1. 差分信号,共模与差模,共模滤波,差模滤波
  2. 请你谈谈TCP协议与UDP协议的区别
  3. 深度学习巨头—杨立昆
  4. 神经架构搜索(NAS)2020最新综述:挑战与解决方案
  5. 前端JS校验银行卡卡号和身份证号码(附ES6版方法)
  6. 使用vscode开发vue项目
  7. 闭合导线的近似平均差(工程测量)
  8. 多地“摇号购房” 开发商迎来了良机?
  9. 期货涨跌与什么有关(期货和股市涨跌有关系吗)
  10. [Poi2012]Rendezvous