zoukankan      html  css  js  c++  java
  • codeforces 814B An express train to reveries

    题目链接:http://codeforces.com/contest/814/problem/B

    题意:给你两个长度为n的序列a和序列b,让你构造一个长度为n的序列p,1到n的每个数字都包含,使得p与序列a和序列b在对应位置都只有一个不同。(a,b不相同,p一定存在)。

    分析:a和b的相同位置如果元素相同,那么构造的p对于位置也是这个元素,我们将vis[a[i]]=1。我们接下来找相同位置的元素不同的位置下标,然后看1到n这些数字有哪些元素vis[]=0,等于0代表这些元素还没有出现。如果ab只有一个位置元素不同,那么就将未出现的数字填入,输出即可。如果有两个位置不同,要想构造的p与a和b各只有一个位置不同,假设没出现的两个数字是num1和num2,那么当a[ans1]==num1&&b[ans2]==num2||a[ans2]==num2&&b[ans1]=num1时p[ans1]=num1,p[ans2]=num2.其他情况反正即可。

    AC代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 int a[1005],b[1005],c[1005],d[1005];
     5 int main(){
     6     ios_base::sync_with_stdio(0);
     7     cin.tie(0);
     8     int n;
     9     cin>>n;
    10     for(int i=1;i<=n;i++){
    11         cin>>a[i];
    12     }
    13     for(int i=1;i<=n;i++){
    14         cin>>b[i];
    15     }
    16     int ans1=0,ans2=0;
    17     memset(d,0,sizeof(d));
    18     for(int i=1;i<=n;i++){
    19         if(a[i]==b[i]){
    20             c[i]=a[i];
    21             d[a[i]]=1;
    22         }
    23         else {
    24             if(ans1==0) ans1=i;
    25             else ans2=i;
    26         }
    27     }
    28     int num1=0,num2=0;
    29     for(int i=1;i<=n;i++){
    30         if(d[i]==0){
    31             if(num1==0) num1=i;
    32             else num2=i;
    33         }
    34     }
    35     if(ans2==0){
    36         c[ans1]=num1;
    37     }
    38     else {
    39         if(a[ans1]==num1&&b[ans2]==num2||a[ans2]==num2&&b[ans1]==num1){
    40             c[ans1]=num1;
    41             c[ans2]=num2;
    42         }
    43         else {
    44             c[ans1]=num2;
    45             c[ans2]=num1;
    46         }
    47     }
    48     for(int i=1;i<=n;i++){
    49         cout<<c[i]<<" ";
    50     }
    51     cout<<endl;
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    使用Systrace分析UI性能
    android官方推荐的网络调优器AT&T ARO
    HttpResponseCache 网络缓存使用
    SectionIndexer中的getSectionForPosition()与getPositionForSection()
    MVVM_Android-CleanArchitecture
    Android UI:机智的远程动态更新策略
    Data Binding
    Android实战之你应该使用哪个网络库?
    View以自身中心旋转的代码解惑
    为什么要使用puppet 及初步接触
  • 原文地址:https://www.cnblogs.com/ls961006/p/6971668.html
Copyright © 2011-2022 走看看