国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

cf 759 A Pavel and barbecue

2019-11-11 02:21:21
字體:
供稿:網(wǎng)友

題意:

給一個(gè)序列,序列值代表對(duì)應(yīng)下標(biāo)下一秒硬幣要移動(dòng)到的下標(biāo),再給一個(gè)相同01序列,1代表在這個(gè)位置下一秒硬幣翻轉(zhuǎn)。問需要修改幾次這兩個(gè)序列使得每一枚硬幣經(jīng)過若干秒后能以正面和反面的姿態(tài)都經(jīng)過過每一個(gè)點(diǎn)。

解題思路:

之所以需要修改是硬幣的移動(dòng)位置會(huì)形成循環(huán),而這個(gè)循環(huán)有可能不是全局的,是分成幾堆硬幣內(nèi)部循環(huán),我們需要找出這樣硬幣的堆數(shù),如果堆數(shù)是一那么正好不用改,如果大于一就需要把這幾堆硬幣串聯(lián)再一起,需要的修改數(shù)量就是堆數(shù)。

而翻轉(zhuǎn)的序列就很好考慮了,我們只考慮一枚硬幣,這枚硬幣經(jīng)過其它所以點(diǎn)回到原來點(diǎn)后,如果翻轉(zhuǎn)次數(shù)是偶數(shù),那么回來時(shí)的狀態(tài)和出發(fā)時(shí)的狀態(tài)是一樣的,這樣就會(huì)循環(huán)下去,那么肯定是不可以正反兩面都經(jīng)過每一個(gè)點(diǎn)的,所以要求翻轉(zhuǎn)的次數(shù)是奇數(shù)。

代碼:

#include <bits/stdc++.h>using namespace std;const int maxn=2e5;int add[maxn];bool rev[maxn];bool vis[maxn];int main(){    int n;    scanf("%d", &n);    int i;    for(i=1; i<=n; i++)scanf("%d", &add[i]);    int cir=0;    for(i=1; i<=n; i++)    {        if(vis[i])continue;        cir++;        int t=i;        do        {            vis[t]=1;            t=add[t];        }while(i!=t);    }    int odd=0;    for(i=1; i<=n; i++){scanf("%d", &rev[i]);if(rev[i])odd++;}    int ans=0;//    PRintf("%d/n", ans);    if(odd%2==0)ans++;    printf("%d/n", ans+(cir>1?cir:0));    return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 襄垣县| 九寨沟县| 张掖市| 应用必备| 铜梁县| 自治县| 吉安县| 隆化县| 丘北县| 怀远县| 黔西县| 九台市| 祥云县| 育儿| 建德市| 遂溪县| 宾川县| 达孜县| 新河县| 阿克苏市| 高阳县| 固原市| 卢龙县| 兴义市| 济阳县| 塔河县| 浏阳市| 汝阳县| 延吉市| 水富县| 广灵县| 鲁甸县| 道真| 和龙市| 樟树市| 钟祥市| 浦县| 龙山县| 上蔡县| 甘南县| 莲花县|