CodeForces 814B An express train to reveries

来源:互联网 发布:王珊数据库视频教程 编辑:程序博客网 时间:2024/05/20 20:56

题目链接:http://codeforces.com/contest/814/problem/B
题意:给你两个长度为n的序列a,b,让你求一个序列p,他满足,和a有一个元素不同,和b有一个元素不同,且是n的全排列,让你输入任意一种满足题意的序列p
解析:首先有两种情况,a和b有一个不同,那么那一个不同的应该就是n个元素里除去n-1个相同的剩下的,第二种情况就是a和b有两个不同,那么这两个位置就有两种情况,那么你把这两种情况都试一下就可以了(代码有点丑

#include <bits/stdc++.h>using namespace std;const int maxn = 1005;int a[maxn];int b[maxn];int c[maxn];int vis[maxn];int main(void){    int n;    scanf("%d",&n);    for(int i=0;i<n;i++)        scanf("%d",&a[i]);    for(int i=0;i<n;i++)        scanf("%d",&b[i]);    memset(vis,0,sizeof(vis));    vector<int>tmp;    int cnt = 0;    for(int i=0;i<n;i++)    {        if(a[i]==b[i])        {            c[i] = a[i];            vis[a[i]] = 1;        }        else        {            cnt++;            tmp.push_back(i);        }    }    if(cnt==1)    {        for(int i=0;i<n;i++)        {            if(c[i]==0)            {                for(int j=1;j<=n;j++)                {                    if(vis[j]==0)                    {                        c[i] = j;                        break;                    }                }                break;            }        }    }    else    {        int cnt1 = 0,cnt2 = 0;        for(int i=1;i<=n;i++)        {            if(!vis[i])                tmp.push_back(i);        }        c[tmp[0]] = tmp[2],c[tmp[1]] = tmp[3];        for(int i=0;i<n;i++)        {            if(a[i]!=c[i])                cnt1++;            if(b[i]!=c[i])                cnt2++;        }        if(cnt1==cnt2 && cnt1==1);        else            c[tmp[0]] = tmp[3],c[tmp[1]] = tmp[2];    }    for(int i=0;i<n;i++)        printf("%d ",c[i]);    puts("");    return 0;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕妇吃的水果少怎么办 6个月宝宝厌奶怎么办 5个月宝宝厌奶怎么办 11个月宝宝厌奶怎么办 母乳宝宝不喝奶粉怎么办 换奶粉不拉大便怎么办 宝宝和妈妈不亲怎么办 冬天榨果汁太凉怎么办 四个月宝宝拉水怎么办 婴儿吃奶吃撑了怎么办 1岁的宝宝腹泻怎么办 一岁宝宝老拉肚子怎么办 一岁宝宝拉肚子怎么办啊 小孩发烧怎么办39度要吃消炎药吗 孩子不爱吃水果蔬菜怎么办 一岁宝宝不吃水果怎么办 一岁宝宝不爱吃水果怎么办 1岁多宝宝不吃水果怎么办 中学生不爱与家长交流怎么办 孩子一直37度多怎么办 小孩39度3算高烧怎么办 7岁发烧怎么办如何退烧 7岁反复发烧7天怎么办 一岁发烧39.8度怎么办 反复发烧39度4天怎么办 大人发烧到39度怎么办 小孩高烧39度多怎么办 孩子嗓子发炎发烧怎么办吃什么药 猫咪吃了点桃子怎么办 猫吃了牛油果怎么办 苹果手机死机开不了机怎么办 新生儿出生第一天没奶水怎么办 第一天断奶奶水一直流出怎么办 3岁宝宝不长个子怎么办 5个月宝宝不长个怎么办 孩子比同龄人矮很多怎么办 孕妇做春梦宫缩怎么办 减肥掉头发很厉害怎么办 孕妇吃了金枪鱼罐头怎么办 怀孕吃了烂水果怎么办 快递水果压坏了怎么办