• #418(div2)B


    题意:输入n,代表有n种颜色,然后给出a,b2个数列,存在位置i,使得某个数列和a数列在i处不同,其他处相同,存在位置j,使得某个数列和b数列在j出不同,其他处相同,且某个数列中的数为1-n.

    思路:在a数列中我们可以肯定有2个一模一样的颜色,b也是,那么a,b不同的的个数可能为0,1,2。好吧,考虑那么多导致我崩了。。。我们只要知道那2个位置必定有一个要改变,我就一个个判断,搞那么多花里胡哨的干嘛。。

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 map<int ,int >ma,mb;
     4 int main(){
     5     int n;
     6     int a[1002],b[1002];
     7     cin>>n;
     8     int x=0,y=0;
     9     int sum=0;
    10     int t=0;
    11     for(int i=1;i<=n;i++) {
    12         scanf("%d",&a[i]);
    13         if(ma[a[i]]){
    14             x=ma[a[i]];
    15             y=i;
    16         }
    17         ma[a[i]]=i;
    18     }
    19     for(int i=1;i<=n;i++) {
    20         scanf("%d",&b[i]);
    21     }
    22     for(int i=1;i<=n;i++){
    23          if(i==a[x]) continue;
    24 
    25          sum=0;
    26         for(int j=1;j<=n;j++){
    27              if(j==x) {
    28                 if(b[j]!=i) sum++;
    29                 continue;
    30              }
    31               if(a[j]!=b[j]) sum++;
    32         }
    33         if(sum==1&&ma[i]==0){
    34                 t=1;
    35             a[x]=i;break;
    36         }
    37     }
    38     if(t){
    39         for(int i=1;i<=n;i++){
    40         cout<<a[i]<<" ";
    41         }
    42       cout<<endl;return 0;
    43     }
    44 
    45     for(int i=1;i<=n;i++){
    46          if(i==a[y]) continue;
    47 
    48          sum=0;
    49         for(int j=1;j<=n;j++){
    50              if(j==y) {
    51                 if(b[j]!=i) sum++;
    52                 continue;
    53              }
    54               if(a[j]!=b[j]) sum++;
    55         }
    56         if(sum==1&&ma[i]==0){
    57             a[y]=i;break;
    58         }
    59     }
    60     for(int i=1;i<=n;i++){
    61         cout<<a[i]<<" ";
    62     }
    63     cout<<endl;
    64 }
  • 相关阅读:
    在C++里while语句的一个妙用
    看书——我和村上作品
    Linux下使用QQ和查看QQ空间
    Redflag 6.0 Linux下装 nvidia fx5200显卡驱动
    唇伤
    看书——我和村上作品
    Firefox 3 查看QQ空间的问题——只能开8位以下QQ的空间
    codeforces 315 B.Sereja and Array
    codeforces 285C Building Permutation
    省赛总结
  • 原文地址:https://www.cnblogs.com/hhxj/p/6959558.html
Copyright © 2020-2023  润新知