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
  • 相关阅读:
    Unique Binary Search Trees——LeetCode
    Binary Tree Inorder Traversal ——LeetCode
    Maximum Product Subarray——LeetCode
    Remove Linked List Elements——LeetCode
    Maximum Subarray——LeetCode
    Validate Binary Search Tree——LeetCode
    Swap Nodes in Pairs——LeetCode
    Find Minimum in Rotated Sorted Array——LeetCode
    Linked List Cycle——LeetCode
    VR AR MR
  • 原文地址:https://www.cnblogs.com/ls961006/p/6971668.html
Copyright © 2011-2022 走看看