首先造出所要求的得到的环。如果将位置一一对应上,答案就是不在所要求位置的人数。因为显然这是个下界,并且脑补一下能构造出方案达到这个下界。

  剩下的问题是找到一种对应方案使错位数最少。可以暴力旋转这个环,然而是n2的。诶是不是特别熟悉……这好像很像卷积?然而好像没有什么优美的函数能方便的计算出两个排列的不匹配数,所以就别想NTT了。(是不是只有我这种弱智会往这上面想啊)

  应该可以类似暴力的移动开头利用偏移量之类的来计算,然而容易被绕晕。注意到每个人向右移动到目标位置的最少次数之间的关系是不变的,相同的总是相同不同的总是不同,直接统计即可。

  注意还可以将环翻转,需要再搞一次。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{int x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
#define N 50010
#define P 998244353
int n,a[N],b[N],q[N],cnt[N<<1],ans=0;
bool flag[N];
void solve()
{memset(cnt,0,sizeof(cnt));for (int i=1;i<=n;i++) cnt[(q[i]-i+n)%n]++;for (int i=0;i<n;i++) ans=max(ans,cnt[i]);
}
int main()
{
#ifndef ONLINE_JUDGEfreopen("1053.in","r",stdin);freopen("1053.out","w",stdout);const char LL[]="%I64d\n";
#elseconst char LL[]="%lld\n";
#endifn=read();for (int i=1;i<=n;i++) a[i]=read(),b[i]=read();int x=a[1],from=1;q[1]=1;flag[1]=1;for (int i=2;i<=n;i++){if (flag[x]) {cout<<-1;return 0;}q[i]=x;flag[x]=1;if (a[x]==from) from=x,x=b[x];else if (b[x]==from) from=x,x=a[x];else {cout<<-1;return 0;}}if (x!=1) {cout<<-1;return 0;}solve();reverse(q+1,q+n+1);solve();cout<<n-ans;return 0;
}

转载于:https://www.cnblogs.com/Gloid/p/9800973.html

Luogu1053 NOIP2005篝火晚会相关推荐

  1. noip2005篝火晚会 2008.10.18

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

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

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

  3. NOIP2005 篝火晚会 解题报告

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

  4. [noip2005]篝火晚会

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

  5. noip2005篝火晚会

    这是一道不算太难的题,但愚蠢的我并没有想到. 首先,判断无解的情况:他想相邻的不想与他相邻. 然后,构造出合法的数列,因为第一位左边有两种选择,且构造出的环不等价,所以要做两次. (这一点我并没有想清 ...

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

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

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

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

  8. NOIP 2005 篝火晚会

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

  9. P1053 篝火晚会

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

最新文章

  1. LogiCORE IP Clocking Wizard 之 Core Architecture(时钟IP核的核架构介绍)
  2. “代理”那点事儿-使用代理和搭建简单代理服务
  3. php mysql 实现原理_php+mysql分页原理实现
  4. java 结构体数组初始化_C数组结构体联合体快速初始化
  5. zookeeper3.5.4源码环境搭建
  6. git复制迁移--SmartGit
  7. 时序数据库InfluxDB 2.0 alpha 发布:主推新的Flux查询语言,TICK栈将成为整体
  8. Morris Traversal
  9. Parser-Free Virtual Try-on via Distilling Appearance Flows代码解析
  10. JDK1.8中文帮助文档下载
  11. windows_98.css—— 实现Win98效果的网页样式
  12. 海德汉伺服驱动器电源维修UVR150D北京
  13. 红外万能遥控器2.0,把家里的红外遥控器改成能用语音和手机app控制
  14. 云服务器被攻击了怎么办
  15. python 处理阻尼正弦
  16. 如何将vob格式转换成mp4
  17. 自定义桌面开始按钮(winxp、7、8、8.1、10)
  18. 百问网物联网智能家居学习笔记day6
  19. Oracle数据库断电致使控制文件不一致的恢复方法
  20. 周志明论架构之道:从SOA时代到微服务时代

热门文章

  1. C语言 求出平面直角坐标系中两点的距离
  2. php将多个页面写在一个页面,php – 将多个标签添加到WooCommerce单个产品页面
  3. git push github SSL报错处理
  4. java如何学习javaweb学习课程
  5. 那传说中的P、NP以及NPC问题
  6. String 和Integer、int之间互转
  7. Linux 访问权限
  8. php连接mssql的一些方法总结
  9. JQUERY使用技巧~总结
  10. 让VisualStudio的StartPage关联自己的博客