当前位置: 首页 > 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

http://www.dtcms.com/a/199066.html

相关文章:

  • 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初始化过程详解
  • 有源晶振与无源晶振 旁路模式与非旁路模式 深度剖析
  • 2009-2025计算机408统考真题及解析
  • 【数据结构与算法】ArrayList 与顺序表的实现
  • 济南国网数字化培训班学习笔记-第三组-2-电力通信光缆网认知
  • 20-HAL库
  • 加密芯片法(一)ATSHA204A 特性理解
  • 一次页面假死分析
  • FreeRTOS “探究任务调度机制魅力”
  • 三、关系数据库
  • 垂直智能体:企业AI落地的正确打开方式
  • 仿腾讯会议——房间界面用户设置