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列网格上,如果两个小方格有公共的边,就称它们是相邻的,而且有些相邻的小方格之间的公 ...
随机推荐
- 前后端分层架构MVC&MVVM
早期 特点 页面由 JSP.PHP 等工程师在服务端生成 JSP 里揉杂大量业务代码 浏览器负责展现,服务端给什么就展现什么,展现的控制在 Web Server 层 优点 简单明快,本地起一个 Tom ...
- akka-typed(8) - CQRS读写分离模式
前面介绍了事件源(EventSource)和集群(cluster),现在到了讨论CQRS的时候了.CQRS即读写分离模式,由独立的写方程序和读方程序组成,具体原理在以前的博客里介绍过了.akka-ty ...
- 2020年IDEA破解激活码永久
我想很多做开发的小伙伴和小编一样,和往常一样开机搬砖. 打开idea的时候,会收到一个个提示,也是idea许可证过期啦,需要重新激活! 那怎么办呢?我最近发现了一个相对稳定的激活码 . 亲测可用.现在 ...
- github知名企业开源项目索引
亚马逊:https://github.com/amzn 饿了么 https://github.com/ElemeFEhttp://lrd.ele.me/腾讯 https://github.com/Te ...
- 客官,来看看AspNetCore的身份验证吧
开篇 这段时间潜水了太久,终于有时间可以更新一篇文章了. 通过本篇文章您将Get: Http的一些身份验证概念 在AspNetCore中实现身份验证方案 JWT等概念的基础知识 使用Bearer To ...
- BootstrapDialog.confirm确认对话框
1. 依赖文件: bootstrap.js bootstrap-dialog.js bootstrap.css bootstrap-dialog.css 2.代码 BootstrapDialog.co ...
- pandas | 使用pandas进行数据处理——Series篇
本文始发于个人公众号:TechFlow,原创不易,求个关注 上周我们关于Python中科学计算库Numpy的介绍就结束了,今天我们开始介绍一个新的常用的计算工具库,它就是大名鼎鼎的Pandas. Pa ...
- AnalyticDB实现和特点浅析
目录 AnalyticDB介绍与背景 AnalyticDB详细解析 架构设计 数据分区 读写分离和读写流程 其他特性介绍 混合(列-行)存储引擎 索引 小结 本篇主要是根据AnalyticDB的论文, ...
- 前端动画必知必会:React 和 Vue 都在用的 FLIP 思想实战
前言 在 Vue 的官网中的过渡动画章节中,可以看到一个很酷炫的动画效果 乍一看,让我们手写出这个逻辑应该是非常复杂的,先看看本文最后要实现的效果吧,和这个案例是非常类似的. 预览 分析需求 拿到了这 ...
- 一题搞定static关键字
基础不牢,地动山摇 开篇一道题,考察代码执行顺序: public class Parent { static { System.out.println("Parent static init ...