比赛 收心赛 评测结果 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;
}