当前位置: 首页 > news >正文

《P5283 [十二省联考 2019] 异或粽子》

题目描述

小粽是一个喜欢吃粽子的好孩子。今天她在家里自己做起了粽子。

小粽面前有 n 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 1 到 n。第 i 种馅儿具有一个非负整数的属性值 ai​。每种馅儿的数量都足够多,即小粽不会因为缺少原料而做不出想要的粽子。小粽准备用这些馅儿来做出 k 个粽子。

小粽的做法是:选两个整数数 l, r,满足 1⩽l⩽r⩽n,将编号在 [l,r] 范围内的所有馅儿混合做成一个粽子,所得的粽子的美味度为这些粽子馅儿的属性值的异或和。(异或就是我们常说的 xor 运算,即 C/C++ 中的 ˆ 运算符或 Pascal 中的 xor 运算符)

小粽想品尝不同口味的粽子,因此它不希望用同样的馅儿的集合做出一个以上的 粽子。

小粽希望她做出的所有粽子的美味度之和最大。请你帮她求出这个值吧!

输入格式

第一行两个正整数 n, k,表示馅儿的数量,以及小粽打算做出的粽子的数量。

接下来一行为 n 个非负整数,第 i 个数为 ai​,表示第 i 个粽子的属性值。 对于所有的输入数据都满足:1⩽n⩽5×105, 1⩽k⩽min{2n(n−1)​,2×105}, 0⩽ai​⩽4294967295。

输出格式

输出一行一个整数,表示小粽可以做出的粽子的美味度之和的最大值。

输入输出样例

输入 #1复制

3 2
1 2 3

输出 #1复制

6

代码实现:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;

int main() {
    int n, k;
    cin >> n >> k;
    
    vector<ll> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    
    // 计算所有可能的区间异或和
    vector<ll> xor_sums;
    for (int l = 0; l < n; l++) {
        ll current_xor = 0;
        for (int r = l; r < n; r++) {
            current_xor ^= a[r];
            xor_sums.push_back(current_xor);
        }
    }
    
    // 对所有异或和进行排序(降序)
    sort(xor_sums.begin(), xor_sums.end(), greater<ll>());
    
    // 取前k大的异或和相加
    ll result = 0;
    for (int i = 0; i < min(k, (int)xor_sums.size()); i++) {
        result += xor_sums[i];
    }
    
    cout << result << endl;
    return 0;
}

说明/提示

测试点nk
1, 2, 3, 4, 5, 6, 7, 8⩽103⩽103
9, 10, 11, 12⩽5×105⩽103
13, 14, 15, 16⩽103⩽2×105
17, 18, 19, 20⩽5×105

⩽2×105

相关文章:

  • Hugo 安装保姆级教程(搭建个人blog)
  • 软件架构设计--期末复习
  • HiTool机顶盒刷机提示:网络下载TFTP超时,可能的原因如下
  • volatile
  • DeepSeek 赋能太空探索:从轨道优化到星际开拓的 AI 革命
  • DAY 29 复习日:类的装饰器
  • tauri2项目动态添加 Sidecar可行性方案(运行时配置)
  • 高能数造闪耀 CIBF 2025,以创新技术引领新能源智造新征程
  • 基于MCP的AI Agent应用开发实践
  • 【ComfyUI】关于ComfyUI的一些基础知识和入门设置以及快捷键小技巧【简单易懂】
  • 通过串口设备的VID PID动态获取串口号(C# C++)
  • Java基于数组的阻塞队列实现详解
  • 算法-js-柱状图中最大的矩形
  • Qt如何设置图标
  • 【PyQt5实战】五大对话框控件详解:从文件选择到消息弹窗
  • 等于和绝对等于的区别
  • CHAIN-OF-TABLE: 推理链中的演化表格用于表格理解
  • 智慧园区数据大脑管理平台整体解决方案
  • USB学习【11】STM32 USB初始化过程详解
  • 有源晶振与无源晶振 旁路模式与非旁路模式 深度剖析
  • 浙江推动人工智能终端消费:家居机器人纳入以旧换新补贴范围
  • 全中国最好的十个博物馆展陈选出来了!
  • 陕西省市监局通报5批次不合格食品,涉添加剂超标、微生物污染等问题
  • 上海国际碳中和博览会下月举办,首次打造民营经济专区
  • “多规合一”改革7年成效如何?自然资源部总规划师亮成绩单
  • 一周文化讲座|“我的生命不过是温柔的疯狂”