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

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

【问题描述】

\(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. shell特殊字符汇总【转】

    Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好 ...

  2. CentOS 6.7 安装配置 nagios-server

    作者博文地址:https://www.cnblogs.com/liu-shuai/ 一.简介    Nagios是一款开源的免费网络监视工具,能有效监控Windows.Linux和Unix的主机状态, ...

  3. spring依赖版本约束

    <dependencyManagement> <dependencies> <dependency> <groupId>org.springframew ...

  4. merchantInfo.properties配置文件

    p1_MerId=10001126856 keyValue=69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl callback= ...

  5. Mavne 打包时出现程序包找到不的问题

    <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactI ...

  6. POJ 2528——Mayor's posters——————【线段树区间替换、找存在的不同区间】

    Mayor's posters Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub ...

  7. Starting MySQL. ERROR! The server quit without updating PID file如何解决

    今天数据库突然挂了.重启提示: Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/v ...

  8. node.js分片上传文件

    前端 : <html> <head> <title>分片上传文件</title> </head> <body> <div ...

  9. jquery 获取easyui combobox选中的值、赋值

    jquery easyui combobox 控件支持单选和多选 1.获取选中的值 $('#comboboxlist').combobox('getValue');  //单选时 $('#combob ...

  10. 01.里氏准换与using关键字

    using关键字有什么用?什么是IDisposable? using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后 ...