题目不完整

P1053 [NOIP2005 提高组] 篝火晚会

谢谢了
by 2200w @ 2015-02-24 16:14:31


谢0v0
by icecathy @ 2015-08-01 21:14:53


已改
by yyy2015c01 @ 2016-03-13 23:13:35


.
by 孤河 @ 2016-08-16 10:35:38


十分感谢您
by disabled @ 2016-11-04 20:41:00


```cpp #include<cstdio> #define MAXN 50001 int a[MAXN], b[MAXN]; int s[MAXN], cnt1[MAXN], cnt2[MAXN],ans; int i,j,n; int main() { scanf("%d",&n); for (i=1; i<=n; i++) scanf("%d%d",&a[i],&b[i]); s[1]=1; s[n]=a[1]; s[2]=b[1]; for (i=3; i<n; i++) if (a[s[i-1]]==s[i-2]) s[i]=b[s[i-1]]; else s[i]=a[s[i-1]]; for (i=1; i<=n; i++) { int t1=i+1, t2=i-1; if (t1>n) t1=1; if (t2<1) t2=n; if ((s[t1]!=a[s[i]] || s[t2]!=b[s[i]]) && (s[t2]!=a[s[i]] || s[t1]!=b[s[i]])) { printf("-1"); return 0; } } for (i=1; i<=n; i++) { cnt1[(s[i]-i+n)%n]++; cnt2[(s[i]+i-1)%n]++; } for (i=0; i<n; i++) //注意注意,%n后存放的地址为0..n-1。否则会爆第10个点 { if (ans<cnt1[i]) ans=cnt1[i]; if (ans<cnt2[i]) ans=cnt2[i]; } printf("%d",n-ans); return 0; } ```
by 3505515693qq @ 2016-12-17 18:47:46


|