设置(settings)

设置(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[1]-a[0]<b[1]-b[0];//
}
int main(){cin>>n>>m>>k;for(int i=1;i<=n;i++){for(int j=1,t;j<=m;j++){scanf("%d",&t);a[i].push_back(t);}sort(a[i].begin(),a[i].end());}sort(a+1,a+n+1,cmp);ll val=0;for(int i=1;i<=n;i++)val+=a[i][0];/*for(int i=1;i<=n;i++){for(int j=0;j<m;j++)cout<<a[i][j]<<' ';cout<<endl;
}*/q.push((node){1,0,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-1)q.push((node){t.x,t.num+1,t.v-a[t.x][t.num]+a[t.x][t.num+1]});if(t.num>0&&t.x<n)q.push((node){t.x+1,1,t.v-a[t.x+1][0]+a[t.x+1][1]});if(t.num==1&&t.x<n){ll nv=t.v+a[t.x][0]-a[t.x][1];nv=nv+a[t.x+1][1]-a[t.x+1][0];q.push((node){t.x+1,1,nv});}}cout<<ans<<endl;return 0;
}

View Code

posted @ 2019-02-20 21:42 liankewei123456 阅读( ...) 评论( ...) 编辑 收藏

设置(settings)相关推荐

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

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

  2. Android设置Settings:预读取设置的选项和更新设置结果【2】

      Android设置Settings:预读取设置的选项和更新设置结果[2] 本文在文章1的基础上,增加预读取历史的修改.设置值更新到设置选项中,同时,每一次更新都会实时更新到设置栏中.  res ...

  3. vscode代码自动保存插件_VSCode 云同步扩展设置 Settings Sync 插件

    VSCode 云同步扩展设置 Settings Sync 插件 发布时间:2019-07-19 16:24, 浏览次数:1730 , 标签: VSCode Settings Sync Hi.大家好,今 ...

  4. 自定义国内maven镜像包设置settings.xml

    直接复制以下代码创建一个名为settings.xml的文件,放到C:\Users\Administrator\.m2下即可 <!-- Licensed to the Apache Softwar ...

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

    2019独角兽企业重金招聘Python工程师标准>>> 在Android手机上, 在某个程序里,通过按Menu键,一般都会打开这个程序的设置,而在iOS里,系统提供了一个很好的保存程 ...

  6. android setting模块,android O版本 设置(Settings)模块总结--设置的一级界面的加载

    O版本的设置界面相对有N有了一些变化,O上面增加了顶级类别的菜单,而之前一些在一级菜单的则移动到了二级界面里面, 如"WIFI","移动网络"等之前是在一级界面 ...

  7. webstorm的个性化设置settings

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

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

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

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

    在设计时创建新设置的步骤 在"Solution Explorer"(解决方案资源管理器)中,展开项目的"Properties"(属性)节点. 在"So ...

  10. VSCode修改配置(设置settings.json)汇总

    1.settings.json文件在哪(打开settings.json方式) (1)C:\Users\[你电脑名字username]\AppData\Roaming\Code\User (2)左下角设 ...

最新文章

  1. 10行代码实现目标检测
  2. php中url重写,使用PHP重写URL
  3. Fabonacci三种方法求解C++
  4. comsol计算数据导出matlab,comsol4.2怎样在matlab中通过函数输出数据
  5. 01_初识Matplotlib、Figure的组成、绘图函数的输入类型、第一个例子(学习笔记)
  6. linux一些好用的命令和快捷键
  7. Linux之grep命令详解
  8. __weak 修饰符
  9. 一线城市BAT名企软件测试职位解析,有什么样的技术要求?
  10. Javascript中的Math.max()和Math.min()
  11. 搭建Windows SVN服务器及TortoiseSVN使用帮助和下载
  12. Requests 高级用法 —2.18.1 文档
  13. mysql截取身份证号前几位_EXCEL中怎样截取身份证号前六位数字
  14. torch.nn.Module.parameters(recurse=True)
  15. 小鼠血清白蛋白包裹四氧化三铁纳米粒
  16. 第欧根尼:我崇尚简朴朴素克己的生活
  17. 云展网教程 | 如何更改logo和设置点击logo时的转跳链接?
  18. BI工具和报表工具有什么不同
  19. 公众平台 php,微信公众平台PHP开发
  20. 39 个奇葩代码注释,看完笑哭了

热门文章

  1. HGAME 2017 or 2018 PWN levels
  2. HTB:在线主机-Worker
  3. Alibaba 官方微服务扛把子「SpringCloudAlibaba 全彩学习手册.PDF」,开源学习ing,
  4. 【Unity2d】如何避免物体被销毁时绑定的音效消失
  5. r9 plus Android 10,OPPO R9 Plus领衔 市售长续航手机盘点
  6. android客户端功能,搜狐微博Android客户端最新版 功能丰富 界面友好
  7. Sublime Text - 中文汉化
  8. WebRTC中AECM算法简介
  9. java里面的ture和false
  10. 在Simscape中创建虚拟机器人环境(二):添加物理、对象交互和自主