| 比赛 |
收心赛 |
评测结果 |
AAAAAAAATTTTAAAATTTT |
| 题目名称 |
异或粽子 |
最终得分 |
60 |
| 用户昵称 |
杨蕙宇 |
运行时间 |
17.048 s |
| 代码语言 |
C++ |
内存使用 |
7.34 MiB |
| 提交时间 |
2026-02-24 11:22:56 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5e5+10;
ll n,k,a[N],s[N],m1,m2,tot,ans;
priority_queue<ll,vector<ll>,greater<ll>>mn;
int main(){
freopen("xor.in","r",stdin);
freopen("xor.out","w",stdout);
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
s[i]=s[i-1]^a[i];
}
// for(int i=1;i<=n;i++)cout<<s[i]<<" ";
// cout<<endl;
for(int i=1;i<=n;i++){
// cout<<endl<<i<<endl;
for(int j=1;j+i-1<=n;j++){
// cout<<(s[j+i-1]^s[j-1])<<" ";
ll res=s[j+i-1]^s[j-1];
if(mn.size()<k){
mn.push(res);
ans+=res;
}
else if(mn.size()==k){
ll minn=mn.top();
if(minn<res){
ans-=minn;
ans+=res;
mn.pop();
mn.push(res);
}
}
}
}
cout<<ans;
return 0;
}