P3756 [CQOI2017]老C的方块
看到网格图+最优化问题,当然要想黑白染色搞网络流。不过这道题显然无法用黑白染色搞定。
仔细观察那四种图形,发现都是蓝线两边一定有两个格子,两个格子旁边一定还有且仅有一个格子。因此我们可以这么染色:

(图片有点丑)
染完色以后直接三分图匹配求最小割即可。
可以看出,横着4个一循环,纵向2个一循环,所以一共有8中不同的格子。实际上,我们只需要在那六个星星的位置进行判断即可。
关键代码:(S -> 黄 -> 紫 -> 绿 -> T)
for (register int i = 1; i <= n; ++i) {
read(X[i]), read(Y[i]), read(W[i]);
mp[X[i]][Y[i]] = i;
}
for (register int i = 1; i <= n; ++i) {
int x = X[i], y = Y[i];
int mx = x & 3, my = y & 1;
if (mx == 1 && my == 1) {//purple
int you = mp[x + 1][y];
add(i, you, min(W[i], W[you]));
} else if (mx == 0 && my == 0) {//purple
int zuo = mp[x - 1][y];
add(i, zuo, min(W[i], W[zuo]));
} else if (mx == 0 && my == 1) {//yellow
add(s, i, W[i]);
int shang = mp[x][y + 1];
add(i, shang, inf);
int xia = mp[x][y - 1];
add(i, xia, inf);
int you = mp[x + 1][y];
add(i, you, inf);
} else if (mx == 1 && my == 0) {//yellow
add(s, i, W[i]);
int shang = mp[x][y + 1];
add(i, shang, inf);
int xia = mp[x][y - 1];
add(i, xia, inf);
int zuo = mp[x - 1][y];
add(i, zuo, inf);
} else if (mx == 2 && my == 0) {//green
add(i, t, W[i]);
int shang = mp[x][y + 1];
add(shang, i, inf);
int xia = mp[x][y - 1];
add(xia, i, inf);
int you = mp[x + 1][y];
add(you, i, inf);
} else if (mx == 3 && my == 1) {//green
add(i, t, W[i]);
int shang = mp[x][y + 1];
add(shang, i, inf);
int xia = mp[x][y - 1];
add(xia, i, inf);
int zuo = mp[x - 1][y];
add(zuo, i, inf);
}
}
P3756 [CQOI2017]老C的方块的更多相关文章
- [bzoj4823][洛谷P3756][Cqoi2017]老C的方块
Description 老 C 是个程序员. 作为一个懒惰的程序员,老 C 经常在电脑上玩方块游戏消磨时间.游戏被限定在一个由小方格排成的R行C列网格上 ,如果两个小方格有公共的边,就称它们是相邻的, ...
- BZOJ 4823 Luogu P3756 [CQOI2017]老C的方块 (网络流、最小割)
题目链接 (Luogu) https://www.luogu.org/problem/P3756 (BZOJ) http://lydsy.com/JudgeOnline/problem.php?id= ...
- 洛咕 P3756 [CQOI2017]老C的方块
四染色,贼好想 一个弃疗图形刚好对应一个红-绿-黄-粉色路线(不要吐槽颜色) 就是裸的最小割,建图傻逼懒得写了 #include<bits/stdc++.h> #define il inl ...
- 洛谷$P3756\ [CQOI2017]$老$C$的方块 网络流
正解:网络流 解题报告: 传送门$QwQ$ 看到不能出现给定的讨厌的图形,简单来说就,特殊边两侧的方格不能同时再连方格. 所以如果出现,就相当于是四种方案?就分别炸四个格子. 然后冷静分析一波之后发现 ...
- bzoj 4823: [Cqoi2017]老C的方块 [最小割]
4823: [Cqoi2017]老C的方块 题意: 鬼畜方块游戏不解释... 有些特殊边,有些四个方块组成的图形,方块有代价,删掉一些方块使得没有图形,最小化代价. 比较明显的最小割,一个图形中必须删 ...
- bzoj4823: [Cqoi2017]老C的方块(最小割)
4823: [Cqoi2017]老C的方块 题目:传送门 题解: 毒瘤题ORZ.... 太菜了看出来是最小割啥边都不会建...狂%大佬强强强 黑白染色?不!是四个色一起染,四层图跑最小割... 很 ...
- 【BZOJ4823】[CQOI2017]老C的方块(网络流)
[BZOJ4823][CQOI2017]老C的方块(网络流) 题面 BZOJ 题解 首先还是给棋盘进行黑白染色,然后对于特殊边左右两侧的格子单独拎出来考虑. 为了和其他格子区分,我们把两侧的这两个格子 ...
- 【洛谷P3756】[CQOI2017]老C的方块(最小割)
洛谷 题意: 给出一个网格图类似于这样: 现在给出一个\(n*m\)大小的网格,之后会给出一些点,若某些点相连形成了如下的几个图案,那么就是不好的. 现在可以删去一些点,但删除每个点都有一些代价,问最 ...
- BZOJ4823 [Cqoi2017]老C的方块 【最小割】
题目 老C是个程序员. 作为一个懒惰的程序员,老C经常在电脑上玩方块游戏消磨时间.游戏被限定在一个由小方格排成的R行C列网格上,如果两个小方格有公共的边,就称它们是相邻的,而且有些相邻的小方格之间的公 ...
随机推荐
- JavaWeb网上图书商城完整项目--过滤器解决中文乱码
我们知道,如果是POST请求,我们需要调用request.setCharacterEncoding(“utf-8”)方法来设计编码:如果是GET请求,我们需要自己手动来处理编码问题.如果我们使用了En ...
- JavaWeb网上图书商城完整项目--BaseServlet
1.以前进行操作的时候,例如我们进行登陆操作我们使用LoginServlet进行处理,进行注册操作我们使用RegisterServlet,很多业务的操作的时候我们就要定义很多个Servlet 有了Ba ...
- 【面试篇】寒冬求职之你必须要懂的Web安全
https://segmentfault.com/a/1190000019158228 随着互联网的发展,各种Web应用变得越来越复杂,满足了用户的各种需求的同时,各种网络安全问题也接踵而至.作为前端 ...
- Python三大器之迭代器
Python三大器之迭代器 迭代器协议 迭代器协议规定:对象内部必须提供一个__next__方法,对其执行该方法要么返回迭代器中的下一项(可以暂时理解为下一个元素),要么就引起一个Stopiterat ...
- day17—max, map, reduce, filter, zip 函数的使用
一.max 函数 l=[3,2,100,999,213,1111,31121,333] print(max(l)) # dic={'k1':10,'k2':100,'k3':30} print(max ...
- JavaWeb项目在浏览器点击几次就阻塞了
问题描述 在学习JavaWeb项目时,通过IDE启动项目后,在浏览器点击几次页面中的链接就阻塞了,浏览器一直转圈圈无法加载,后台日志也没有输出. 第一次遇见这种情况,没有日志完全无法分析到底是什么问题 ...
- Java面向对象(一)类和对象
面向过程和面向对象的区别 面向过程,强调的是功能行为,是将实现一个功能的步骤编写在一个函数中,以函数为最小单位. 面向对象,是将需要的功能封装进一个对象中,使一个对象具有很多的功能特征,以类/对象为最 ...
- Data types 'int' and 'float'
The type int means that the variables listed are integers; by contrast with float, which means float ...
- 关于位图数据和标记位-P3
文章目录 1 背景 1.1 问题 2 问题1探究 2.1 没有区的情况 2.2 一个区的情况 2.3 两个区的情况 2.4 三个区的情况 2.5 四个区的情况 2.6 五个区的情况 3 问题2探究 3 ...
- JVM源码分析之Java对象头实现
原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 “365篇原创计划”第十一篇. 今天呢!灯塔君跟大家讲: JVM源码分析之Java对象头实现 HotSpot虚拟机中,对象在内存中的布局分为三 ...