题目列表如下,有一说一有些题目很有难度。这次AC了6道题,以为是个铜奖,没想到运气好拿了个银奖。过段时间等纸质版的证书到手后,再把那六道题的代码放出来。话说银奖还能申请个工信部的证书,不过还得花两三百块钱。
文章目录
A题: Mesh
B题: Error
C题: Divide
D题: 树的果实
E题: 吃利息
F题: STAR
G题: MP4
H题: Tree
I题:展览 (填空)
需要在以下空白部分填入代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=1e6+5;
ll n,b[N],a[N],ans;
//b[i]表示二进制下的第i位
void update(ll x){
for(ll i=60;i>=0;i--){
if( ){
//如果x在二进制表示下含有第i位
if(b[i])x^=b[i];//如果b[i]存在则让x^b[i],
//因为之前b[i]也是由已经保存过的a[]数组贡献的
//所以,这样异或x可以看作x于之前的a[]数组进行异或
//然后一直异或到为0或者当前b[i]还没有被赋值
else {
;break;}//否则b[i]赋值为x,
//表示当前二进制下的第i位可以被异或出来,且x的最高位就是i
}
}
}
int main(){
cin>>n;
for(ll i=1;i<=n;i++){
cin>>a[i];update(a[i]);}//读入数据对于每一个数字都下放来维护b[i]
for(ll i=60;i>=0;i--)if((ans^(1ll<<i))>ans)ans^=;
//贪心的过程,ans看作一个二进制数,从高位开始,如果b[i]存在,
//肯定优先跟b[i]异或,倒着让小值不会影响到大值
cout<<ans<<endl;
return 0;
}
J题: Square
K题:礼物
L题: 看错题(本题名称)
M题: Graph
特别声明:本文发布于比赛结束之后。