Codefest19受虐记

date: 2019-08-28

前言

比赛链接:Codefest 19

A题

思路:

这是一道水题。你对着样例递推打一个表出来,会发现结果三个一组循环。

例如:A = [3, 4, 7, 3, 4, 7, 3, 4, 7, ...]

好了,我们只需要读入第0和第1项,把他们的异或值作为第2项,输出n对3取模的那一项就好。

代码:

#include<bits/stdc++.h>
using namespace std;

int T,a[3],n;

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin>>T;
    while(T--){
        cin>>a[0]>>a[1]>>n;
        a[2]=a[0]^a[1];
        cout<<a[n%3]<<endl;
    }

    return 0;
}

B题

思路:

这道题很容易暴力并且超时,首先用O(N^2)二重循环枚举去掉的区间,之后再O(NlogN)从头到尾跑一遍判重,复杂度是O(N^3logN)

但是,我们先枚举从头开始的留下来的区间的长度(保证内部没有重复的),对于每一次枚举,右边的留下的长度都满足单调性,但是应该不可以二分(也可能我不会),相反,直接从右往左跑一遍判重就可以了。复杂度O(N^2logN)(log是因为使用了set来判重)。

代码:

#include<bits/stdc++.h>
using namespace std;

int n;
int a[2005];
set<int> s;
int ans,l,r;

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    ans=n;
    for(int i=0;i<=n;i++){
        if(s.find(a[i])!=s.end()){
            break;
        }
        s.insert(a[i]);
        set<int> t;
        for(int j=n;j>=1;j--){
            if(s.find(a[j])!=s.end()||t.find(a[j])!=t.end()){
                ans=min(ans,j-i);
                break;
            }
            t.insert(a[j]);
        }
    }
    cout<<ans<<endl;

    return 0;
}

C题

思路:

复制很多遍样例就可以AC(真的)。

你把大的矩阵分割成很多4行4列的矩阵,之后你就可以把样例1的Output填上去。从左往右,从上往下第i个(从0开始数)矩阵的元素要加上16*i

代码:

此处我没有复制样例直接使用如下矩阵作为复制母版:

0  1  2  3
4  5  6  7
8  9  10 11
12 13 14 15

其实他们的异或值也是相等的。

#include<bits/stdc++.h>
using namespace std;

int n;
int cur;
int g[1005][1005];

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin>>n;
    for(int i=0;i<n;i+=4){
        for(int j=0;j<n;j+=4){
            for(int k=0;k<4;k++){
                for(int l=0;l<4;l++){
                    g[i+k][j+l]=cur++;
                }
            }
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cout<<g[i][j]<<' ';
        }
        cout<<endl;
    }

    return 0;
}

结束

从D开始我都不会做,所以就酱~

原文地址:https://www.cnblogs.com/BlahDuckling747/p/12019562.html