codeforces 756A

Posted HelloWorld!--By-MJY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces 756A相关的知识,希望对你有一定的参考价值。

Input

4
4 3 2 1
0 1 1 1
Output
2

4个饼 每一秒 都会到对应 上面一行的位置
0的话不翻转 1 翻转
要求 每个饼要到所有的位置
而且正反面都要到过所有的位置
我是思路是并查集 先看看有多少个换
显然是要和到一起的
然后1的个数如果是偶数的话就有问题 最少改变多少个数
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<string>
#include<math.h>

using namespace std;

#define MAXN  200010
int z[MAXN];
int x[MAXN];
int find1(int a)
{
    if(a==z[a])
        return a;
    else
    {
        int b=find1(z[a]);
        return z[a]=b;
    }
}
int c[5];
int main ()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        z[i]=i;

    for(int i=1;i<=n;i++)
    {
        int a,b,fa,fb;
        scanf("%d",&a);
        fa=find1(i);
        fb=find1(a);
        if(fa!=fb)
            z[fa]=z[fb];
    }
    for(int i=1;i<=n;i++)
    {
        int a;
        scanf("%d",&a);
        c[a]++;
    }
    int ans1=0;
    for(int i=1;i<=n;i++)
    {
         x[i]=find1(i);
         if(i==x[i])
         {
             ans1++;
         }
    }
    if(ans1==1)
        ans1--;
    if(c[1]%2==0)
        ans1++;

    printf("%d\n",ans1);
    return 0;
}

 

以上是关于codeforces 756A的主要内容,如果未能解决你的问题,请参考以下文章

[Codeforces Round #522 (Div. 2, based on Technocup 2019 Elimination Round 3)][C. Playing Piano](代码片段

c_cpp Codeforces片段

Codeforces 86C Genetic engineering(AC自动机+DP)

CodeForces 1005D Polycarp and Div 3(思维贪心dp)

(Incomplete) Codeforces 394 (Div 2 only)

CodeForces 931F Teodor is not a liar!