设置(settings)

题目描述

如题所示,这将是一个关于设置的问题。

你需要通过对一个控制台进行设置,来得到不同的效果。

这个控制台由n个控制元件组成,每个元件有m种设置,其中i号元件的第j种设置将会给整体带来a[i][j]的效果值。

最终的效果值是所有n个元件所选设置的效果值之和。

然而,效果值并不是越大或越小越好,不同的效果值有不同的意义。

所以我们要求你给出效果值最小的那k种不同的方案(2种方案不同,当且仅当2种方案中存在至少1个元件的设置不同)。

不过由于我们其实并不关心你给出的那k种方案是什么,只需要弄清你是否能够找出那些方案,所以你只需要输出所有k种方案的效果值的异或和。

输入

第一行3个正整数n,m,k

接下来n行,每行m个非负整数,其中第i行第j个数表示第i个控制元件的第j种设置的效果值a[i][j]

输出

仅一行一个整数,表示k种方案的效果值的异或和

样例输入

3 2 2
11 21
9 25
17 19

样例输出

2

提示

样例说明

最小的2种方案的效果值分别为37(11+9+17)和39(11+9+19),异或和为37 xor 39 = 2

数据规模和约定

对于30%的数据,m^n<=10^6,k<=30000

对于另外30%的数据n<=100,n*m<=50000,k<=50000

对于100%的数据,n*m<=300000,k<=300000,保证m^n>=k,任意一个控制元件的任意一种设置效果值均不超过10^9


solution

我们考虑拿n维向量做状态,每一个点拓展出n个,标记判重,拓展出k大即可。
显然状态数太多了。
我们考虑减少一个状态的来源,使得每个状态仅被拓展一次。
那么可以考虑按顺序向后加。
也就是一个状态拓展到了第i位,那么他的后继状态一定拓展到>=i位
每一个点拓展出三个后继状态:i加一个块,i+1变成1个块,把1个块的i变成0个,i+1变成1个块
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#define maxn 300005
#define ll long long
using namespace std;
int n,m,k;
vector<int>a[maxn];
ll ans;
struct node{
int x,num;ll v;
};
bool operator <(node a,node b){return a.v>b.v;}
priority_queue<node>q;
bool cmp(vector<int> a,vector<int> b){
return a[]-a[]<b[]-b[];//////////////////////
}
int main(){
cin>>n>>m>>k;
for(int i=;i<=n;i++){
for(int j=,t;j<=m;j++){
scanf("%d",&t);a[i].push_back(t);
}
sort(a[i].begin(),a[i].end());
}
sort(a+,a+n+,cmp);
ll val=;
for(int i=;i<=n;i++)val+=a[i][];
/*
for(int i=1;i<=n;i++){
for(int j=0;j<m;j++)cout<<a[i][j]<<' ';cout<<endl;
}*/
q.push((node){,,val});
while(k){
//cout<<"k "<<k<<endl;
node t=q.top();q.pop();
k--;ans^=t.v;
//printf("id=%d num=%d v=%lld\n",t.x,t.num,t.v);
if(t.num<m-)q.push((node){t.x,t.num+,t.v-a[t.x][t.num]+a[t.x][t.num+]});
if(t.num>&&t.x<n)q.push((node){t.x+,,t.v-a[t.x+][]+a[t.x+][]});
if(t.num==&&t.x<n){
ll nv=t.v+a[t.x][]-a[t.x][];
nv=nv+a[t.x+][]-a[t.x+][];
q.push((node){t.x+,,nv});
}
}
cout<<ans<<endl;
return ;
}

设置(settings)的更多相关文章

  1. Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)

    Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt) 作者: Desmond Chen,发布日期: 2014-05- ...

  2. VSCode 云同步扩展设置 Settings Sync 插件

    VSCode 云同步扩展设置 Settings Sync 插件 Hi.大家好,今天又是美好的一天. 关于 Settings Sync扩展: Settings Sync可以同步你当前的VSCode配置环 ...

  3. C#中使用设置(Settings.settings) Properties.Settings.Default .(配置文件相当重要)

    C#中使用设置(Settings.settings) Properties.Settings.Default . 2016年08月04日 15:02:43 zxd9790902 阅读数:10664更多 ...

  4. iOS开发之iOS程序偏好设置(Settings Bundle)的使用

    目录[-] 1.添加设置项 2.设置的控件 3.编辑设置项的文件 4.在程序中获取Settings 和写入Settings 添加UI 5.实现读取设置和保存代码 在Android手机上, 在某个程序里 ...

  5. 【读书笔记】iOS-iOS开发之iOS程序偏好设置(Settings Bundle)的使用

    在Android手机上, 在某个程序里,通过按Menu键,一般都会打开这个程序的设置,而在iOS里,系统提供了一个很好的保存程序设置的机制.就是使用Settings Bundle. 在按了HOME键的 ...

  6. tornado设置settings

    1.作用 设置应用程序相关参数 2.用法 settings = dict() settings["debug"] = True tornado.web.Application.__ ...

  7. webstorm的个性化设置settings

    如何更改主题(字体&配色):File -> settings -> Editor -> colors&fonts -> scheme name.主题下载地址 如 ...

  8. jenkins maven设置settings.xml

    环境:jenkins.2.89.3 1.安装settings.xml管理插件Config File Provider Plugin  系统管理->管理插件->搜索Config File P ...

  9. maven设置------settings.xml文件学习

    https://blog.csdn.net/tomato__/article/details/13025187 快速预览 maven的配置文件为settings.xml,在下面路径中可以找到这个文件, ...

  10. C#中使用设置(Settings.settings) Properties.Settings.Default

    应用程序及用户设置 在设计时创建新设置的步骤 在“Solution Explorer”(解决方案资源管理器)中,展开项目的“Properties”(属性)节点. 在“Solution Explorer ...

随机推荐

  1. 转:mysql远程连接 Host * is not allowed to connect to this MySQL server

    在本机登入mysql后,更改"mysql"数据库里的"user"表里的"host"项,从"localhost"改为'%' ...

  2. django+xadmin在线教育平台(十二)

    6-4 用form实现登录-1 上面我们的用户登录的方法是基于函数来做的.本节我们做一个基于类方法的版本. 要求对类的继承有了解. 基础教程中基本上都是基于函数来做的,其实更推荐基于类来做.基于类可以 ...

  3. 转:Java后端面试自我学习

    引自:https://www.cnblogs.com/JavaArchitect/p/10011253.html 最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前 ...

  4. scrapy--selenium

    一直在学习scrapy的爬虫知识,但是遇到了动态加载页面的难题,从一开始的javascript渲染器--splash,docker服务, 遇到各种奇葩的问题: 1.docker代理设置添加无效,导致无 ...

  5. python__标准库 : 正则表达式(re)

    re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none. re.search 扫描整个字符串并返回第一个成功的匹配. 替换: re.sub(p ...

  6. composer 使用中国镜像

    本人使用的是windows系统,安装完Composer后,直接打开CMD,执行以下代码: composer config -g repo.packagist composer https://pack ...

  7. 如果文件里是汉字的话,这地方seek括号里面只能是偶数

    >>> f=open("E:/pythonLearn/140.txt") >>> f.seek(8) #如果文件里是汉字的话,这地方seek括号 ...

  8. 裸机——Nand

    1.首先需要知道Nand的基础知识 从Nand的芯片手册可以获得 我使用的芯片手册是 K9F2G08 首先从芯片手册的名称可以获得信息: K9F:三星 2G   : 2Gb (256MB) 08    ...

  9. B-树 动机与结构

    Ps.我们遵循从感性到理性的认知顺序来逐步探索B-树的奥秘,之前经常说的value这里用key(关键码)指代,因为可能存的是字符串,说是value就不合适了. (多图预警!!!建议在WI-FI下观看) ...

  10. 4x4矩阵键盘 扫描程序

    一:不排除第四位异常处理 uchar JuzhenkeyScan() { // P3=0xfe; // temp=P3; // while(temp!=0xfe) // { // temp=P3; / ...