4823: [Cqoi2017]老C的方块 题目:传送门 题解: 毒瘤题ORZ.... 太菜了看出来是最小割啥边都不会建...狂%大佬强强强   黑白染色?不!是四个色一起染,四层图跑最小割... 很惊奇的发现染完色之后只要是不喜欢的图形都一定可以由黄-->黑-->红-->绿 组成 那就很nice啦...兴高采烈的去敲代码...结果10^5*10^5???搞毛线...太弱了ORZ,又看了一波大佬的操作,用map存! woc...不谈了不谈了...撸撸撸(分情况分到想屎...虽然不多) 注…
如果将其转化为一个更一般的问题即二分图带权最小单边点覆盖(最小控制集)感觉是非常npc的.考虑原题给的一大堆东西究竟有什么奇怪的性质. 容易发现如果与特殊边相邻的两格子都放了方块,并且这两个格子都各有另一个相邻格子放了方块,其组成的连通块就是需要破坏的.自然四个格子都可以选择破坏.可以发现如果在中间的两个格子里选的话,应该选择破坏权值较小的,因为其对其他格子没有影响.同时注意到另两个格子在黑白染色的图中一定是不同色的. 那么做法就很显然了,建四层点,外部两层是不与特殊边相邻的黑白点,内部两层是与…
题目 老C是个程序员. 作为一个懒惰的程序员,老C经常在电脑上玩方块游戏消磨时间.游戏被限定在一个由小方格排成的R行C列网格上,如果两个小方格有公共的边,就称它们是相邻的,而且有些相邻的小方格之间的公共边比较特殊.特殊的公共边排列得有很强的规律.首先规定,第1行的前两个小方格之间的边是特殊边.然后,特殊边在水平方向上每4个小方格为一个周期,在竖直方向上每2个小方格为一个周期.所有的奇数列与下一列之间都有特殊边,且所在行的编号从左到右奇偶交替. 下图所示是一个R=C=8的网格,蓝色标注的边是特殊边…
来自FallDream的博客,未经允许,请勿转载,谢谢. 挺有意思的一道题.... 看完题面比较明确是最小割,考虑怎么建图 想了比较久 突破口应该是题目中那张奇怪的图 观察这个奇怪的图和方块,很容易发现每个图案,其实都是每个分割线周围各一个1*2的块拼在一起的 假如中间有个分割线,那么就是这样,两边分别三选一 然后可以依此根据块的位置不同建出图,我大概画了一部分,大家可以参考 这张图中行从下到上,列从左到右 然后注意把点拆成入点和出点,中间连费用的边 最小割即可. 可以哈希来查点 #includ…
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色之后,任意满足要求的四联通块一定可以是 黑色-->紫左-->紫右-->白色 只要破坏三个箭头中的一个即可 所以可以构建最小割模型 1.源点向黑色格连流量为格子代价的边 2.黑色格向相邻的紫色格连inf边 3.与黑色格相邻的紫色格向与白色格相邻的紫色格连 流量 为 两个紫色格较小代价 的边 4…
---题面--- 题解: 做这题做了好久,,,换了4种建图QAQ 首先我们观察弃疗的形状,可以发现有一个特点,那就是都以一个固定不变的特殊边为中心的,如果我们将特殊边两边的方块分别称为s块和t块, 那么我们可以观察到,s块和t块永远是在中心位置,而其他两块则是紧邻s块和t块,一边一个. 所以我们要考虑将这个图像用一根线串起来,这样跑最小割才能割最小的边, 那么如何做到一条边割几个图形呢? 首先我们观察到一个非st方块本来就可以属于多个图形,因此也会有多条连边,因此我们只需要对每个方块拆点,限制其…
lrd的题解:http://www.cnblogs.com/liu-runda/p/6695139.html 我还是太菜了.以后遇到这种题目应该分析分析性质的. 网络流复杂度真是$O(玄学)$ #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <alg…
正解:网络流 解题报告: 传送门$QwQ$ 看到不能出现给定的讨厌的图形,简单来说就,特殊边两侧的方格不能同时再连方格. 所以如果出现,就相当于是四种方案?就分别炸四个格子. 然后冷静分析一波之后发现对于特殊边两侧的格子炸那个是没有影响的?于是这两个格子就只用选较小的一个炸就好,于是现在就变成了三种方案,可以考虑和之前做的那道,酒店之王,差不多的建图,$over$ #include<bits/stdc++.h> using namespace std; #define il inline #d…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4823 一个不合法方案其实就是蓝线的两边格子一定选.剩下两部分四相邻格子里各选一个. 所以这个图是一个四分图.记蓝线左边格子是1,右边是2,与 1 四相邻的是3,与 2 四相邻的是4:这个部分右边就是蓝线左边是2.右边是1,这样. 有一些“4个格子不能同时选”的限制,考虑怎么在图中表示. 需要做到的是4个格子里割掉一个就能让这条路径废掉,那么应该是把有联系的4个点连成一条链.因为是4分图,所…
题目链接 (Luogu) https://www.luogu.org/problem/P3756 (BZOJ) http://lydsy.com/JudgeOnline/problem.php?id=4823 题解 有点神仙的最小割题. 考虑题目里的图形,如果我们用四种颜色对棋盘进行染色,奇数行依次染\(0,1,2,3,0,1,2,3...\), 偶数行依次染\(3,2,1,0,3,2,1,0...\)则条件可以转化为不能出现相连的\(4\)个颜色互不相同的块. 那么可以建一个四层的图,对于每条…
[BZOJ4823][CQOI2017]老C的方块(网络流) 题面 BZOJ 题解 首先还是给棋盘进行黑白染色,然后对于特殊边左右两侧的格子单独拎出来考虑. 为了和其他格子区分,我们把两侧的这两个格子染成灰色. 于是一个不合法的状态就是两个相邻的灰色点如果还和一个其他的点相连就是非法的. 我们先把黑白点分开,源点连向黑点,汇点连向白点,边权是删去这个点的代价. 因为灰点可以两两配对,非两两配对之间的没有影响,然后所有黑点连向对应的灰点,另一半灰点连向对应的白点.而要删去一组不合法的要么删去一个灰…
4823: [Cqoi2017]老C的方块 题意: 鬼畜方块游戏不解释... 有些特殊边,有些四个方块组成的图形,方块有代价,删掉一些方块使得没有图形,最小化代价. 比较明显的最小割,一个图形中必须删掉一个方块. 我的想法是方块拆点然后用INF连起来. 但是你不能随便连啊,否则可能会出现一些原来没有的限制. 要找到一个连边的顺序!也就是如何分层 画一画发现是可以做到的,然后建图就行了. 我是一层一层建的... 然后一开始忘记考虑一种图形WA了两次... 总共花了3个多小时... #include…
Description 老 C 是个程序员. 作为一个懒惰的程序员,老 C 经常在电脑上玩方块游戏消磨时间.游戏被限定在一个由小方格排成的R行C列网格上 ,如果两个小方格有公共的边,就称它们是相邻的,而且有些相邻的小方格之间的公共边比较特殊.特殊的公共边排 列得有很强的规律.首先规定,第1行的前两个小方格之间的边是特殊边.然后,特殊边在水平方向上每4个小方格为 一个周期,在竖直方向上每2个小方格为一个周期.所有的奇数列与下一列之间都有特殊边,且所在行的编号从左到 右奇偶交替.下图所示是一个R =…
网络流真的是一种神奇的算法.在一张图上面求感觉高度自动化的方案一般而言好像都是网络流的主阵地.讲真一开始看到这道题也有点懵,题面很长,感觉很难的样子.不过,仔细阅读了题意之后明白了:我们所要做的就是要用最小的代价,使得最后的图中不能出现给定的四种图案. 实际上之前做过一道非常毒瘤的网络流题目[无限之环].当时就思考了一下:为什么出题人规定不能旋转直线管子?原因就是因为这样的图建不出来,它与不具有其他的管子的特点.那么可以断定:给出的这四个图案必然也是非常特殊的图形,否则不会只有这四个/不会是这四…
分析: 我觉得我的网络流白学了...QAQ... 其实数据范围本是无法用网络流跑过去的,然而出题者想让他跑过去,也就跑过去了... 看到题目其实感觉很麻烦,不知道从哪里入手,那么仔细观察所给出的有用信息... 我们考虑网格图是一个含有挡板的图,这个挡板的分布很有规律,大概是每一行的相邻两个挡板都隔了四个格子,并且奇数行的排列相同,偶数行的排列相同... 然后考虑不合法的方块形状有什么共同点:仔细观察就会发现,所有的不合法图形中,挡板的左边至少有一个格子,右边至少有一个格子,并且左边的格子连着一个…
题目链接 看到网格图+最优化问题,当然要想黑白染色搞网络流.不过这道题显然无法用黑白染色搞定. 仔细观察那四种图形,发现都是蓝线两边一定有两个格子,两个格子旁边一定还有且仅有一个格子.因此我们可以这么染色: (图片有点丑) 染完色以后直接三分图匹配求最小割即可. 可以看出,横着4个一循环,纵向2个一循环,所以一共有8中不同的格子.实际上,我们只需要在那六个星星的位置进行判断即可. 关键代码:(S -> 黄 -> 紫 -> 绿 -> T) for (register int i =…
题目描述 https://www.lydsy.com/JudgeOnline/problem.php?id=4823 题解 观察那四种条件 有没有什么特点? 我们可以把蓝线两边的部分看做两个区域,这样的话任何一个不合法的匹配都是在蓝线两边都必须有格子,而且那两个格子的临近位置也需要有一个格子. 如果我们把蓝线两边的格子看做一个点,那不就是我们所熟悉的三元匹配模型了吗? 如果我们建出了图,求一下最小割就好了. 关键是这个图怎么建. 除了蓝线两边的以外的点黑白染色,匹配顺序为白->紫->紫->…
四染色,贼好想 一个弃疗图形刚好对应一个红-绿-黄-粉色路线(不要吐槽颜色) 就是裸的最小割,建图傻逼懒得写了 #include<bits/stdc++.h> #define il inline #define vd void typedef long long ll; il int gi(){ int x=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-')f=-1; ch=getchar(); } while(isdigit(…
参考:https://www.cnblogs.com/neighthorn/p/6705785.html 并不是黑白染色而是三色染色(还有四色的,不过是一个意思 仔细观察一下不合法情况,可以发现都是特殊边两边有格子并且两个黑格子都在的时候黄蓝不能同在,所以(黄---黑)(黑---蓝)(黑---黑)都是最大权闭合子图中的依赖边 直接按照模型建就行,把黄蓝当成黑白染色. --但是为什么不能用struct代替map呢QAQ #include<iostream> #include<cstdio&…
洛谷 题意: 给出一个网格图类似于这样: 现在给出一个\(n*m\)大小的网格,之后会给出一些点,若某些点相连形成了如下的几个图案,那么就是不好的. 现在可以删去一些点,但删除每个点都有一些代价,问最终不出现上述图案的最小代价为多少. 思路: 初一看这图是什么乱七八糟的,但仔细观察能够发现它们的共性:对于蓝色的边两旁的格子,我们称为灰点:若有两个灰点相连,并且它们各自至少还连接了一个点,那么就是不合法的图案. 同时观察网格奇偶性,之后对网格奇偶染色. 然后初步思路为:源点连向所有白点,容量为白点…
4822: [Cqoi2017]老C的任务 练手速... #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; const int N = 1e6+5; inline int read() { char c=getchar(); int x=0,f=1; while(c&l…
[CQOI2017]老C的键盘 题目描述 额,网上题解好像都是用的一大堆组合数,然而我懒得推公式. 设\(f[i][j]\)表示以\(i\)为根,且\(i\)的权值为\(j\)的方案数. 转移: \[ f[i][j]=\sum f[sn_1][k]*f[sn_2][q] \] 需要判断一下\(k,q\)与\(j\)的关系满不满足题意就行了. 但是这样的答案显然不对,因为有些权值可能多次出现. 换句话说,有些权值可能没有出现.所以我们就用那个经典的容斥,枚举颜色数上界. 设\(g[s]\)表示颜色…
[BZOJ4822][CQOI2017]老C的任务(扫描线) 题面 BZOJ 洛谷 题解 没有修改操作,都不需要分治了... 直接排序之后扫描线算贡献就好了... 不知道为啥洛谷上过不了... #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<ve…
4824: [Cqoi2017]老C的键盘 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 218  Solved: 171[Submit][Status][Discuss] Description 老 C 是个程序员.     作为一个优秀的程序员,老 C 拥有一个别具一格的键盘,据说这样可以大幅提升写程序的速度,还能让写出来的程序 在某种神奇力量的驱使之下跑得非常快.小 Q 也是一个程序员.有一天他悄悄潜入了老 C 的家中,想要看看这个 键盘究…
4822: [Cqoi2017]老C的任务 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 379  Solved: 203[Submit][Status][Discuss] Description 老 C 是个程序员.     最近老 C 从老板那里接到了一个任务——给城市中的手机基站写个管理系统.作为经验丰富的程序员,老 C 轻松 地完成了系统的大部分功能,并把其中一个功能交给你来实现.由于一个基站的面积相对于整个城市面积来说非常 的小,因此每…
4824: [Cqoi2017]老C的键盘 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 193  Solved: 149[Submit][Status][Discuss] Description 老 C 是个程序员.     作为一个优秀的程序员,老 C 拥有一个别具一格的键盘,据说这样可以大幅提升写程序的速度,还能让写出来的程序 在某种神奇力量的驱使之下跑得非常快.小 Q 也是一个程序员.有一天他悄悄潜入了老 C 的家中,想要看看这个 键盘究…
题面太长了请各位自行品尝—>老C的方块 分析: 我们要解决掉所有使人弃疗的组合,还要保证花费最小,容易想到最小割(当然你要是想费用流的话,我们就没办法定义流量了) 我们来分析一下那些令人弃疗的组合,他们的规律: 首先是两个和特殊边直接相邻的方块(以下简称轴方块),加上两侧各任意一个边缘方块,组成了令人弃疗的组合. 所以我们有三种选择(准确地说其实只有两种,前两种本质一样): 1. 将和特殊边左侧的轴方块相连的所有边缘方块都破坏掉. 2. 将和特殊边右侧的轴方块相连的所有边缘方块都破坏掉. 3.…
题目传送门 定义有特殊边相邻的格子颜色为黑,否则为白 可以看出,题目给出的限制条件的本质是如果两个小方块所在的格子 \(x\) 和 \(y\) 为两个相邻的黑格,那么 \(x\) 和 \(y\) 之间必然有一者满足其上下左右的所有白格内都没有小方块 即对于这样的 \(x\) 和 \(y\) ,需要以下三个条件至少满足一个: (1)用 \(\min(w_x,w_y)\) 的代价删除 \(x\) 和 \(y\) 上的其中一个小方块 (2)把与 \(x\) 相邻的白格内的小方块全部删掉 (3)把与 \…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 老 C 是个程序员. 作为一个懒惰的程序员,老 C 经常在电脑上玩方块游戏消磨时间.游戏被限定在一个由小方格排成的 R 行 C 列网格上,如果两个小方格有公共的边,就称它们是相邻的,而且有些相邻的小方格之间的公共边比较特殊. 特殊的公共边排列得有很强的规律.首先规定,第 1 行的前两个小方格之间的边是特殊边.然后,特殊边在水平方向上每 4 个小方格为一个周期,在…
Description https://loj.ac/problem/3022 Solution 他讲得很清楚 将那篇博客中的红色标号为 \(0\),黄色为 \(1\),蓝色为 \(2\),绿色为 \(3\).则做法简单地讲,就是每个 \(0\) 向相邻的 \(1\) 连边,每个 \(1\) 向相邻的 \(2\) 连边,每个 \(2\) 向相邻的 \(3\) 连边,每个 \(3\) 向 \(T\) 连边.(显然每个 \(1\) 只有一个相邻的 \(2\),每个 \(2\) 也只有一个相邻的 \(…