【bzoj 4554】【Tjoi2016&Heoi2016】【NOIP2016模拟7.12】游戏
题目
分析
当没有石头的时候,就用二分图匹配来做。
但现在加入了石头,
所以,求出每行和每列联通快的个数,如果有一块平地,包括在某个行联通块以及某个列联通块中,连边。
//无聊打了网络流,匈牙利也可以
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
const int mo=1000000007;
const int N=54;
using namespace std;
int n,m,a[N][N],ans,tot,f[N*N+6][N*N+6],id,v[N*N+6],t;
int b[N][N];
int aug(int x,int y)
{
if(x==n*m+n) return y;
v[x]=id;
for(int i=0;i<=n*m+n;i++)
{
if(f[x][i] && v[i]<id)
{
int o=aug(i,min(y,f[x][i]));
if(o)
{
f[x][i]-=o;
f[i][x]+=o;
return o;
}
}
}
return 0;
}
int main()
{
scanf("%d%d",&n,&m);
tot=0;
for(int i=1;i<=n;i++)
{
tot++;
for(int j=1;j<=m;j++)
{
char c;
c=getchar();
while(c!='*' && c!='x' && c!='#') c=getchar();
if(c=='*') a[i][j]=1;
else
if(c=='x') a[i][j]=2;
else
a[i][j]=3;
if(a[i][j]==3 && a[i][j-1]!=3) tot++;
else
{
f[0][tot]=1;
b[i][j]=tot;
}
}
}
for(int i=1;i<=m;i++)
{
tot++;
for(int j=1;j<=n;j++)
{
if(a[j][i]==3) tot++;
else
{
if(a[j][i]!=2) f[b[j][i]][tot]=1;
f[tot][n*m+n]=1;
}
}
}
t=1;
while(t)
{
id++;
t=aug(0,maxlongint);
ans+=t;
}
printf("%d",ans);
}
【bzoj 4554】【Tjoi2016&Heoi2016】【NOIP2016模拟7.12】游戏的更多相关文章
- BZOJ 4554: [Tjoi2016&Heoi2016]游戏 二分图匹配
4554: [Tjoi2016&Heoi2016]游戏 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4554 Descripti ...
- BZOJ 4554 [Tjoi2016&Heoi2016]游戏 ——二分图
出原题,直接二分图匹配即可. #include <cstdio> #include <vector> #include <cstring> using namesp ...
- BZOJ 4554: [Tjoi2016&Heoi2016]游戏
Time Limit: 20 Sec Memory Limit: 128 MB Submit: 951 Solved: 572 [Submit][Status][Discuss] Descriptio ...
- BZOJ 4552: [Tjoi2016&Heoi2016]排序
4552: [Tjoi2016&Heoi2016]排序 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 579 Solved: 322[Sub ...
- BZOJ 4551: [Tjoi2016&Heoi2016]树
4551: [Tjoi2016&Heoi2016]树 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 748 Solved: 394[Subm ...
- Bzoj 4556: [Tjoi2016&Heoi2016]字符串
4556: [Tjoi2016&Heoi2016]字符串 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 177 Solved: 92[Sub ...
- BZOJ 4553 Tjoi2016&Heoi2016 序列
Tjoi2016&Heoi2016序列 Description 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值 可能会变化,但同一个时刻最 ...
- BZOJ 4555: [Tjoi2016&Heoi2016]求和 [分治FFT 组合计数 | 多项式求逆]
4555: [Tjoi2016&Heoi2016]求和 题意:求\[ \sum_{i=0}^n \sum_{j=0}^i S(i,j)\cdot 2^j\cdot j! \\ S是第二类斯特林 ...
- BZOJ 4555: [Tjoi2016&Heoi2016]求和 [FFT 组合计数 容斥原理]
4555: [Tjoi2016&Heoi2016]求和 题意:求\[ \sum_{i=0}^n \sum_{j=0}^i S(i,j)\cdot 2^j\cdot j! \\ S是第二类斯特林 ...
- bzoj 4555 [Tjoi2016&Heoi2016]求和 NTT 第二类斯特林数 等比数列求和优化
[Tjoi2016&Heoi2016]求和 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 679 Solved: 534[Submit][S ...
随机推荐
- delphi2010:按键 控制键 组合键的判断 响应
procedure TForm7.FormShortCut(var Msg: TWMKey; var Handled: Boolean); var aKey: TShortCut; aShif ...
- html script生成二维码
<div class="code" align="center"> <p >手机端扫描以下二维码直接观看(支持安卓Android/苹果i ...
- hibernate 2 多对多映射
一.实体类 1.Classes.java package cn.gs.wwg.entity; import java.util.Set; public class Classes { private ...
- 【python+selenium自动化】设置Chrome启动参数
起因:直接用selenium的webdriver启动chrome,会弹出“Chrome正在受到自动软件的控制”,并且窗口较小,是因为chrome没有加载任何配置 解决:点进selenium的Chrom ...
- Python Requests post方法中data与json参数问题
1.data参数 你想要发送一些编码为表单形式的数据——非常像一个 HTML 表单.要实现这个,只需简单地传递一个字典给 data 参数.你的数据字典在发出请求时会自动编码为表单形式,header默认 ...
- Lesson 1 A puma at large
spot (v) 看出,发现 oblige (v) 使...感到必须:obliged (adj)必须的, feel obliged to do sth. 感到不得不做某事 ==have to.eg:E ...
- 【Linux开发】【Qt开发】QT 同时支持鼠标和触摸屏
QT 同时支持鼠标和触摸屏 现在 如果我要使用鼠标 导入环境变量 export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice 使用触摸屏,导入环境变量 export ...
- Docker Toolbox虚拟机文件地址修改 以及镜像加速
Docker Toolbox虚拟机文件地址修改 默认情况下,docker-machine创建的虚拟机文件,是保存在C盘的C:\Users\用户名\.docker\machine\machines\d ...
- python 并发编程 多进程 互斥锁 目录
python 并发编程 多进程 互斥锁 模拟抢票 互斥锁与join区别
- 2019JAVA第一次編程总结
2019第二周实验报告 Java实验报告 班级 计算机科学与技术二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/7 评分等级 实验一 Java开发环境与简单Java程序 一. 实验 ...