郑州集训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$.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁.她发现每条地铁线路可以看成平面上的一条 ...
随机推荐
- centos7.3下安装redis3.2 yum安装
1.进入centos 2.运行:yum install redis 3.安装完成后,选择y,确认 4.进入:cd /etc/;vi redis.conf 将,daemonize 修改为yes,并且添加 ...
- 【Tensorflow】 Object_detection之模型训练日志结果解析
日志展示 指标说明: AP值表示正确识别物体的个数占总识别出的物体个数的百分数 AR值表示正确识别物体的个数占测试集中物体的总个数的百分数 IoU值即生成的框/掩膜与数据集中的标准的面积之交处于面积之 ...
- 依赖倒置(Dependence Inversion Principle)DIP
关于抽象类和接口的区别,可以参考之前的文章~http://www.cnblogs.com/leestar54/p/4593173.html using System; using System.Col ...
- Thinkphp基于规则的Auth权限认证类
PS:onethink是基于该权限认证类实现,Auth类作为官方类库,在Library\Think里面. 其实Auth类也是基于角色访问控制RBAC扩展的,具体到节点的权限校验方式还是需要根据业务 ...
- (转)Python之文件读写
Python之文件读写 原文:https://www.cnblogs.com/huilixieqi/p/6494891.html 本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 ...
- vue中watch的使用
vue中watch的使用 vue中的watch是一个比较重要的概念,通过他我们可以检测data的变化,下面进行详细的介绍. watch定义方式如下: {[key: string]: string | ...
- win7远程登录
开始--附件--远程桌面连接 点击显示选项 填写信息,连接上了. 分配磁盘 计算机---右键----管理
- lxml库介绍及实例
XPath常用规则 表达式 描述 nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 .. 选取当前节点的父节点 @ 选取属性 h ...
- js字符操作
js字符串方法预览: fromCharCode(num1, num2,,,), charAt(), charCodeAt(), length, split(''), slice(start, end? ...
- c# 远程连接共享文件
c# 远程连接共享文件 /// <summary> /// 连接远程共享文件夹 /// </summary> /// <param name="path&quo ...