打卡信奥刷题(3060)用C++实现信奥题 P6824 「EZEC-4」可乐

张开发
2026/6/8 23:44:23 15 分钟阅读
打卡信奥刷题(3060)用C++实现信奥题 P6824 「EZEC-4」可乐
P6824 「EZEC-4」可乐题目背景很久以前有一个 pigstd非常迷恋美味的可乐。为了得到美味的可乐他几乎用尽了所有的钱他甚至对自己的 npy 也漠不关心其实是因为他没有 npy更不爱好看戏。除非买了新可乐才会坐上马车出门炫耀一番。每一天每个钟头他都要喝上一瓶新可乐。pigstd 最近又买了许多箱新可乐——当然这些可乐只有聪明的人才能喝到。题目描述pigstd 现在有n nn箱可乐第i ii箱可乐上标着一个正整数a i a_{i}ai​。若 pigstd 的聪明值为一个非负整数x xx对于第i ii箱可乐如果( a i ⊕ x ) ≤ k (a_{i} \oplus x )\le k(ai​⊕x)≤k那么 pigstd 就能喝到这箱可乐。现在 pigstd 告诉了你k kk与序列a aa你可以决定 pigstd 的聪明值x xx使得他能喝到的可乐的箱数最大。求出这个最大值。输入格式第一行两个由空格分隔开的整数n , k n,kn,k。接下来n nn行每行一个整数a i a_iai​表示第i ii箱可乐上标的数。输出格式一行一个正整数表示 pigstd 最多能喝到的可乐的箱数。输入输出样例 #1输入 #13 5 2 3 4输出 #13输入输出样例 #2输入 #24 625 879 480 671 853输出 #24说明/提示提示pigstd 的聪明值x xx可以为0 00。样例解释样例 1 解释容易构造当x 0 x 0x0时可以喝到所有可乐。样例 2 解释容易构造x 913 x 913x913可以喝到所有可乐。样例解释未必是唯一的方法。数据范围本题采用捆绑测试。Subtask 129 points1 ≤ n , k , a i ≤ 1000 1 \le n,k,a_{i} \le 10001≤n,k,ai​≤1000。Subtask 21 pointsa i ≤ k a_{i} \le kai​≤k。Subtask 370 points无特殊限制。对于所有数据保证1 ≤ n , k , a i ≤ 10 6 1 \le n,k,a_{i} \le 10^61≤n,k,ai​≤106。⊕ \oplus⊕代表异或如果您不知道什么是异或请单击这里。C实现#includebits/stdc.husingnamespacestd;constintM1e610;intc[M*2],a[M],n,k,ans,maxn;ints1[50],s2[50];voidf(intb){memset(s1,0,sizeof(s1));memset(s2,0,sizeof(s2));intlen10,len20,kkk;while(b)s1[len1]b%2,b/2;while(kk)s2[len2]kk%2,kk/2;intlenmax(len1,len2);for(inti1;ilen/2;i)swap(s1[i],s1[len-i1]),swap(s2[i],s2[len-i1]);intsum0;for(inti1;ilen;i)if(s2[i]0)sumsum*2s1[i];else{intk1(sum*2s1[i])*1(len-i),k2(sum*21s1[i])*1(len-i);c[k1],c[k2]--;sumsum*2(s1[i]^1);}c[sum],c[sum1]--;}intmain(){scanf(%d%d,n,k);maxnk;for(inti1;in;i){scanf(%d,a[i]);f(a[i]);maxnmax(maxn,a[i]);}for(inti1;imaxn*2;i)c[i]c[i-1];for(inti0;imaxn*2;i)ansmax(ans,c[i]);coutans;return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容

更多文章