码迷,mamicode.com
首页 > 其他好文 > 详细

【codevs1106】 篝火晚会

时间:2017-01-05 23:45:40      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:href   const   time   http   mat   ios   print   out   cstring   

http://codevs.cn/problem/1106/ (题目链接)

题意

  将1~n顺序排列的环改成另一个环,问n-不动点数。

Solution

  啊智障啦,不会做×_×

  左转hzwer

代码

// codevs1106
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf 1<<30
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std;

const int maxn=50010;
int vis[maxn],t1[maxn],t2[maxn],a[maxn],b[maxn],c[maxn],n;

int main() {
	scanf("%d",&n);
	for (int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
	c[1]=1;c[2]=a[1];
	vis[c[1]]=vis[c[2]]=1;
	for (int i=2;i<n;i++) {
		if (c[i-1]==a[c[i]]) c[i+1]=b[c[i]];
		else if (c[i-1]==b[c[i]]) c[i+1]=a[c[i]];
		else {puts("-1");return 0;}
		vis[c[i+1]]=1;
	}
	for (int i=1;i<=n;i++) if (!vis[i]) {puts("-1");return 0;}
	int ans=1;
	for (int i=1;i<=n;i++) {
		int t=(c[i]-i+n)%n;
		t1[t]++;
		ans=max(ans,t1[t]);
		t=(c[n-i+1]-i+n)%n;
		t2[t]++;
		ans=max(ans,t2[t]);
	}
	printf("%d",n-ans);
	return 0;
}

 

【codevs1106】 篝火晚会

标签:href   const   time   http   mat   ios   print   out   cstring   

原文地址:http://www.cnblogs.com/MashiroSky/p/6254349.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!