2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛

A - ^&^

打表找规律

#include 
#include 
#include 
#include 
using namespace std;
const int N=100;//运行次数
const int maxx=100;//a和b的最大值
int main(){
    srand(time(0));
    for(int i=0;i

发现ans都是0,而且a&b=c,那也就是说c的值就是a&b,但当a&b=0时,输出1
提交

#include 
#include 
#define ll long long
using namespace std;
int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        ll a,b;
        scanf("%lld%lld",&a,&b);
        ll ans=a&b;
        printf("%lld\n",ans==0?1:ans);
    }
    return 0;
}

G - Windows Of CCPC

先初始化整个表,然后查询输出即可

在初始化时,先构建k=1时的情况,然后后面的先对左边复制,下面的对上面取反,右下角对左下角复制

#include
#include
#include
using namespace std;
const int maxn=1050;
int a[maxn][maxn];
void init(){
    // memset(a,-1,sizeof(a));
    a[1][1]=a[1][2]=a[2][2]=1;
    a[2][1]=0;

    for(int k=2;k<=10;k++){
        int x=pow(2,k-1);
        int y=pow(2,k);
        for(int i=1;i<=x;i++){
            for(int j=x+1;j<=y;j++){
                a[i][j]=a[i][j-x];
            }
        }
        for(int i=x+1;i<=y;i++){
            for(int j=1;j<=x;j++){
                a[i][j]=1-a[i-x][j];
            }
        }
        for(int i=x+1;i<=y;i++){
            for(int j=x+1;j<=y;j++){
                a[i][j]=1-a[i][j-x];
            }
        }
    }
}
void print(int k){
    int x=pow(2,k);
    for(int i=1;i<=x;i++){
        for(int j=1;j<=x;j++){
            if(a[i][j]==0)putchar('P');
            else putchar('C');
        }
        putchar('\n');
    }
}
int main(){
    init();
    int t;
    scanf("%d",&t);
    while(t--){
        int n;
        scanf("%d",&n);
        print(n);
    }
    return 0;
}
/*
0表示p


*/

F - Shuffle Card

就是把指定的一个数移到第一位
可以用单链表,但很麻烦
就用链式数组

/*
反着存数
找到这个数,然后把这个数删了,存储位置变成n+1
*/
#include 
#include 
using namespace std;
const int maxn=1e6+5;
int a[maxn],book[maxn];
int main(){
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=n;i>=1;i--){
        scanf("%d",&a[i]);
        book[a[i]]=i;
    }
    int top=n;
    for(int i=1;i<=m;i++){
        int x;
        scanf("%d",&x);
        a[book[x]]=-1;
        book[x]=++top;
        a[book[x]]=x;
    }
    for(int i=top;i>=1;i--){
        if(a[i]==-1)continue;
        printf("%d ",a[i]);
    }

    return 0;
}

你可能感兴趣的:(2019中国大学生程序设计竞赛(CCPC) - 网络选拔赛)