考试的时候由于没有想出这道题就弃疗了

发现主要还是自己姿势不够

【问题描述】

\(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. 负边的边权如何解决

  2. 何如限制使得两个点在同时和原点相连的时候割掉一条边

于是考试的时候就疯狂建模,最后成功自闭

首先第一个问题其实蛮好解决的,因为这个题的话每个点必然会和原点和汇点之一相连,所以我们可以直接给每条边加上一数使得其变为正数,最后在把这些加上去的正数减掉就好了

之后第二个问题好像还是很困难的样子,最大权闭合图好像确实做不到啊

但是发现这个题的限制关系很有特点,就是两个机器二进制下只有一位不同

那也就保证了二进制里\(1\)的个数只相差了\(1\),那就一定说明奇偶性是不同的

于是我们可以考虑对所有的机器按照二进制下\(1\)的个数的奇偶性分组,对于其中的一组我们还是用和\(S\)相连表示不饱和,和\(T\)相连表示饱和

但是对于另一组我们令和\(S\)相连表示饱和,和\(T\)相连表示不饱和

由于我们的分组保证了我们需要加的限制一定存在于两个不同的分组之间,于是我们现在只需要限制两个点一个和\(S\)连一个和\(T\)的时候需要割掉一条边就好了,这个就非常显然了直接把那个异或值当作边权把两个点连起来就好了

就这样解决了

代码就咕咕咕了

郑州集训Day4 [小Cat与小鲜肉]的更多相关文章

  1. Loj #6069. 「2017 山东一轮集训 Day4」塔

    Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...

  2. loj6068. 「2017 山东一轮集训 Day4」棋盘 二分图,网络流

    loj6068. 「2017 山东一轮集训 Day4」棋盘 链接 https://loj.ac/problem/6068 思路 上来没头绪,后来套算法,套了个网络流 经典二分图 左边横,右边列 先重新 ...

  3. Loj 6068. 「2017 山东一轮集训 Day4」棋盘

    Loj 6068. 「2017 山东一轮集训 Day4」棋盘 题目描述 给定一个 $ n \times n $ 的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置 $ (x, y),(u, ...

  4. NOIP2017 国庆郑州集训知识梳理汇总

    第一天 基础算法&&数学 day1难度测试 如果要用一个词来形容上午的测试,那真是体无完肤.  成绩: 题目 成绩 评价 T1 50 一般 T2 10 大失所望 T3 0 差 基础算法 ...

  5. 郑州集训day1自闭有感

    被拉到郑州培训了 考了一上午莫名自闭 帮助慎老师拿到\(rk1\)非常开心 简述一下题目吧 T1.まんふは函数 原题地址 考原题还行 据说是\(Huffman\)树 在成爷爷的再三讲解下,我终于明白了 ...

  6. 集训Day4

    在bzoj刷了好几天杂题感觉手感不是很好 继续回来集训一下 好几天没更新了啊... bzoj1875 一个无向图,一个人要从起始点走$t$步走到终点,不能沿着刚走过来那条边回去,问有多少种走法 $m ...

  7. 考前停课集训 Day4 雷

    Day 4 今天Rating掉了两百多 为什么呢 因为是真实力打的 倒数第三 没什么好说的了 这才是我的真实水平 强的人一如既往强 作弊的人一落千丈. 只有我.是的,只有我. 被老师嘲讽了,哎,您真的 ...

  8. 省队集训 Day4 a

    [题目大意] 求有多少区间只包含1个出现次数为1的数. $1\leq n \leq 5*10^5, 0 \leq a_i \leq 10^9$ [题解] 考虑枚举右端点,设这个数上一次出现位置为pre ...

  9. 【清华集训】小Y和地铁

    图已挂,前往luogu 题目: 小 $\rm Y$ 是一个爱好旅行的 $\rm OIer$.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁.她发现每条地铁线路可以看成平面上的一条 ...

随机推荐

  1. python 爬虫系列01-连接mysql

    爬虫学习中......................................... import pymysql conn = pymysql.connect(host=',database ...

  2. IDEA 中tomcat启动问题时,一直出去发布状态,无法加载项目

    解决方法:排查clean.build之前添加的xml中的sql语句,发现sql多写了一个逗号,导致无法加载项目.修改完sql,就可以跑了.

  3. Nginx 配置跨域权限

    今天设置静态资源服务器时发现 Font from origin 'http://start.fbzl.org' has been blocked from loading by Cross-Origi ...

  4. 移除“xmlns”命名空间

    用XmlDocument创建一个文档,或者插入一个节点,默认会生成xmlns(命名空间)特性. 假定有一个xml文档如下结构: <?xml version="1.0" enc ...

  5. git读书笔记以及使用技巧

    [添加文件] git add  把文件修改添加到暂存区    git commit -m '' 把暂存区的所有内容提交到当前分支 [查看历史]    git log 查看提交历史 git log -- ...

  6. HDU 4027—— Can you answer these queries?——————【线段树区间开方,区间求和】

    Can you answer these queries? Time Limit:2000MS     Memory Limit:65768KB     64bit IO Format:%I64d & ...

  7. bzoj 2741: 【FOTILE模拟赛】L

    Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 .. ...

  8. Aspose.Words .NET如何实现文档合并的同页分页显示

    当我们需要将一个文档添加到另一个文档时,经常会有不同的显示需求.为了文档的流畅,我们需要源文档和目标文档在内容上实现连续显示:而为了更好地区分文档,我们经常会希望两个文档的合并实现分页显示. 下面,就 ...

  9. 使用网络技术---WebView

    混合技术 1.使用WebView 权限声明: 定义WebView 填充网页: webView=findViewById() //启用js WebSetting seter = webView.sett ...

  10. python调用其他文件的类和函数

    在同一个文件夹下 调用函数 source.py文件: def func(): pass new.py文件: import source # 或者 from source import func 调用类 ...