郑州集训Day4 [小Cat与小鲜肉]
考试的时候由于没有想出这道题就弃疗了
发现主要还是自己姿势不够
【问题描述】
\(P\) 校某宿舍人才辈出,其舍长图书馆男神因被偷拍侧身照而在网络上一票走红。
小鲜肉 \(SJY\) 是小 \(Cat\ Rainbow\) 的好朋友,他也是该宿舍的一员。作为一名著 名的程序设计师,小鲜肉 \(SJY\) 不但注重萌萌哒的外表,还掌握了无数的黑科技。
有一天,\(SJY\) 制造了一块比特板,这个比特板有 \(2^N\)个比特元,编号为 \([0,2^N-1]\)。 每个比特元有一个饱和值 \(T\),可以接收一个\([0, 2^M-1]\)之间的整数作为输入信号,并 产生整数 \(P\) 作为固定的输出信号。当编号为 \(i\) 的比特元接收到输入信号 \(j\) 时,将 生成 \(W(i,j)\)枚比特币。
相似的比特元之间还会产生叠加效果。如果两个比特元的编号 \(a\) 和 \(b\) 在二进 制下只有一位不同,并且两个比特元中的至少一个接收到的输入信号不小于其饱 和值时,这两个比特元将额外生成 \(P_a\ xor\ P_b\) 枚比特币。
\(SJY\) 希望给每个比特元适 当的输入信号,使比特板生成的比特币总数尽量多。\(SJY\) 认为这个问题太简单了, 作为一名小鲜肉,比赚钱更重要的是出去赢得无数妹子的目光,所以他把这个问 题交给你解决。
【输入格式】
从文件 \(sjy.in\) 中读入数据。 第一行两个整数 \(N\),\(M\)。 第二行 \(2^N\)个整数 \(T_i\),表示每个比特元的饱和值。 第三行 \(2^N\)个整数 \(P_i\),表示每个比特元的固定输出信号。 接下来 \(2^N\)行每行 $2^M \(个整数\) W(i,j)$,比特币是虚拟货币,所以 \(W(i,j)\)可能是 负数。
【输出格式】
输出到文件 \(sjy.out\) 中。 一个整数,表示最多能生成的比特币数。
【数据规模与约定】
对于 \(20\%\)的数据,\(1≤n≤3\), \(1≤m≤2\)。
对于另外\(20\%\)的数据,\(T_i=0\) 或 \(2^m\)。
对于另外 \(20\%\)的数据,\(m=1\)。
对于 \(100\%\)的数据,\(1≤n≤8\),\(1≤m≤8\),\(0≤T_i≤2^m\), \(0≤P_i\), \(|W(i,j)|≤1024\)。
【非常垃圾的题意简述】
一看题意感觉非常麻烦,之后努力分析了一下大概是这个样子
有\([0,2^n-1]\)个机器给每一个机器一个\([0,2^m-1]\)的信号
如果\(i\)机器得到了\(j\)信号,那么就会产生\(W(i,j)\)的收益(可能存在\(W(i,j<0)\))
如果两个机器编号在二进制下只有一位不同的话且至少有一个选择的信号大于某一个给定值的话就会产生一个收益,由于这个收益来源于异或,所以这个收益一定为正
【并不存在的分析】
看到这个数据范围基本上是网络流了
有价值这种东西就基本不可能是最大流了,而且这种价值不会重复计算的问题一般不会是费用流
基本确定算法是最小割了
经过一番思考,我们发现一个机器的信号只可能是两种,一种是大于等于\(T_i\)的最大值,这样能去产生那个异或值的收益,要么激素hi小于\(T_i\)的最大值这样并不能产生收益所以要尽量选择大的呀
于是有一个非常简单的套路,就是和原点相连表示不饱和,和汇点相连表示饱和,边的容量就是相应的最大值
但是这个时候两个问题没有解决
负边的边权如何解决
何如限制使得两个点在同时和原点相连的时候割掉一条边
于是考试的时候就疯狂建模,最后成功自闭
首先第一个问题其实蛮好解决的,因为这个题的话每个点必然会和原点和汇点之一相连,所以我们可以直接给每条边加上一数使得其变为正数,最后在把这些加上去的正数减掉就好了
之后第二个问题好像还是很困难的样子,最大权闭合图好像确实做不到啊
但是发现这个题的限制关系很有特点,就是两个机器二进制下只有一位不同
那也就保证了二进制里\(1\)的个数只相差了\(1\),那就一定说明奇偶性是不同的
于是我们可以考虑对所有的机器按照二进制下\(1\)的个数的奇偶性分组,对于其中的一组我们还是用和\(S\)相连表示不饱和,和\(T\)相连表示饱和
但是对于另一组我们令和\(S\)相连表示饱和,和\(T\)相连表示不饱和
由于我们的分组保证了我们需要加的限制一定存在于两个不同的分组之间,于是我们现在只需要限制两个点一个和\(S\)连一个和\(T\)的时候需要割掉一条边就好了,这个就非常显然了直接把那个异或值当作边权把两个点连起来就好了
就这样解决了
代码就咕咕咕了
郑州集训Day4 [小Cat与小鲜肉]的更多相关文章
- Loj #6069. 「2017 山东一轮集训 Day4」塔
Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...
- loj6068. 「2017 山东一轮集训 Day4」棋盘 二分图,网络流
loj6068. 「2017 山东一轮集训 Day4」棋盘 链接 https://loj.ac/problem/6068 思路 上来没头绪,后来套算法,套了个网络流 经典二分图 左边横,右边列 先重新 ...
- Loj 6068. 「2017 山东一轮集训 Day4」棋盘
Loj 6068. 「2017 山东一轮集训 Day4」棋盘 题目描述 给定一个 $ n \times n $ 的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置 $ (x, y),(u, ...
- NOIP2017 国庆郑州集训知识梳理汇总
第一天 基础算法&&数学 day1难度测试 如果要用一个词来形容上午的测试,那真是体无完肤. 成绩: 题目 成绩 评价 T1 50 一般 T2 10 大失所望 T3 0 差 基础算法 ...
- 郑州集训day1自闭有感
被拉到郑州培训了 考了一上午莫名自闭 帮助慎老师拿到\(rk1\)非常开心 简述一下题目吧 T1.まんふは函数 原题地址 考原题还行 据说是\(Huffman\)树 在成爷爷的再三讲解下,我终于明白了 ...
- 集训Day4
在bzoj刷了好几天杂题感觉手感不是很好 继续回来集训一下 好几天没更新了啊... bzoj1875 一个无向图,一个人要从起始点走$t$步走到终点,不能沿着刚走过来那条边回去,问有多少种走法 $m ...
- 考前停课集训 Day4 雷
Day 4 今天Rating掉了两百多 为什么呢 因为是真实力打的 倒数第三 没什么好说的了 这才是我的真实水平 强的人一如既往强 作弊的人一落千丈. 只有我.是的,只有我. 被老师嘲讽了,哎,您真的 ...
- 省队集训 Day4 a
[题目大意] 求有多少区间只包含1个出现次数为1的数. $1\leq n \leq 5*10^5, 0 \leq a_i \leq 10^9$ [题解] 考虑枚举右端点,设这个数上一次出现位置为pre ...
- 【清华集训】小Y和地铁
图已挂,前往luogu 题目: 小 $\rm Y$ 是一个爱好旅行的 $\rm OIer$.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁.她发现每条地铁线路可以看成平面上的一条 ...
随机推荐
- (转)Saltstack系列
Saltstack系列1:安装配置 Saltstack系列2:Saltstack远程执行命令 Saltstack系列3:Saltstack常用模块及API Saltstack系列4:Saltstack ...
- (转)企业Shell实战-MySQL分库分表备份脚本
本文来自http://www.xuliangwei.com/xubusi/252.html 免费视频讲解见 http://edu.51cto.com/course/course_id-5064.htm ...
- Beam编程系列之Java SDK Quickstart(官网的推荐步骤)
不多说,直接上干货! https://beam.apache.org/get-started/beam-overview/ https://beam.apache.org/get-started/qu ...
- 05-ognl基本语法
1 基本取值 @Test //1基础语法演示-基本取值 //取出root中的属性值 public void fun2() throws Exception{ //1 准备OGNLcontext Ogn ...
- 3、java内存模型特点
java内存模型是围绕着在并发过程中如何处理原子性,可见性跟有序性这三个问题来建立的.先看一下这三个特性: 1.原子性 由java内存模型来直接保证的原子性变量操作就是上文2中提到的8种基本操作,我们 ...
- underscore javascript工具库支持seajs模块化
underscore是一个很有用的js工具库,但是好像默认不支持seajs模块化 新建一个文件例如叫做xx.js 谈后,键入 define(function(require,exports,modul ...
- Java Collection.Set
package 集合; /** * Set不包含重复元素 存储顺序和取出数据不一样 * * HashSet:它不保证set的迭代顺序,特别是它不保证该顺序恒久不变 * 底层是哈希表结构的 * Link ...
- 从Zero到Hero,一文掌握Python关键代码
# 01基础篇 # 变量 #int one=1 some_number=100 print("one=",one) #print type1 print("some_nu ...
- 原生js与jquery的区别
1.选择器: js: $('.car_img_con img')[0]; var jsObj = document.getElementsByClassName('sel_index_block')[ ...
- struts2 :Unable to load configuration. ……struts-default.xml:46:178异常解决
这个问题是缺少jar包 除了ognl-2.6.11.jar,struts2-core-2.1.6.jar,xwork-2.1.2.jar,commons-logging-1.0.4.jar外, 还需要 ...