bzoj 4930: 棋盘
Description
Input
Output
#include<cstdio>
#include<algorithm>
#include<queue>
const int inf=0x3f3f3f3f;
int n,q,id[][][],id1=,id2=,as[],ap=,d[],l[];
char s[][];
int es[],enx[],ev[],e0[],ep=,lt;
void ae(int a,int b){
es[ep]=b;enx[ep]=e0[a];ev[ep]=;e0[a]=ep++;
es[ep]=a;enx[ep]=e0[b];ev[ep]=;e0[b]=ep++;
}
bool cmp(int a,int b){
return d[a]<d[b];
}
int q0[],ed[],tk=;
std::queue<int>q1;
void mins(int&a,int b){if(a>b)a=b;}
void cal(int w){
if(w>id1)mins(lt,l[w]+d[w]);
for(int i=e0[w];i;i=enx[i])if(ev[i]){
int u=es[i];
if(l[u]>l[w])l[u]=l[w],q1.push(u);
}
}
int dfs(int w){
if(ed[w]==tk)return ;
ed[w]=tk;
if(w>id1&&l[w]+d[w]==lt){
++d[w];
return ;
}
for(int i=e0[w];i;i=enx[i])if(ev[i]&&l[es[i]]==l[w]&&dfs(es[i])){
ev[i]=,ev[i^]=;
return ;
}
return ;
}
bool cal(){
lt=inf;
for(int i=;i<=id1;++i)q0[i]=i,l[i]=d[i];
for(int i=id1+;i<=id2;++i)l[i]=inf;
std::sort(q0+,q0+id1+,cmp);
int qp=;
while(){
if(qp<=id1){
int w=q0[qp];
if(l[w]!=d[w]){++qp;continue;}
if(q1.size()&&l[q1.front()]<l[w])cal(q1.front()),q1.pop();
else cal(w),++qp;
}else if(q1.size())cal(q1.front()),q1.pop();
else break;
}
int flow=;
for(int i=;i<=id1;++tk,++i)if(l[i]==d[i]&&dfs(i))++flow,++d[i];
for(int i=;i<=flow;++i)++ap,as[ap]=as[ap-]+lt;
return flow;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)scanf("%s",s[i]+);
for(int i=;i<=n;++i){
for(int j=;j<=n;++j){
if(s[i][j]!='.')continue;
id[i][j][]=s[i-][j]=='.'?id[i-][j][]:++id1;
id[i][j][]=s[i][j-]=='.'?id[i][j-][]:++id2;
}
}
for(int i=;i<=n;++i){
for(int j=;j<=n;++j)if(s[i][j]=='.'){
ae(id[i][j][],id1+id[i][j][]);
}
}
id2+=id1;
while(cal());
for(scanf("%d",&q);q;--q){
int x;
scanf("%d",&x);
printf("%d\n",as[x]);
}
return ;
}
bzoj 4930: 棋盘的更多相关文章
- BZOJ 1057 棋盘制作
Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴 ...
- BZOJ 1057 棋盘制作(最大01相间子矩阵)
求最大01相间子矩阵可以转换为求最大全0子矩阵.只需把棋盘(x+y)为奇数的取反,而该问题可以用经典的悬线法O(n^2)的求解. 悬线法呢. 首先定义b[i][j],为a[i][j]向上的最大连续0的 ...
- 【以前的空间】bzoj [ZJOI2007]棋盘制作
具体可以去跪<浅谈用极大化思想解决最大子矩形问题>(p.s. 蒟蒻跪了还是很晕,不过想到之前usaco好像是最后一章的一道题……看了下代码顿然醒悟) 也就是如果用o(nm)的方法维护一个极 ...
- 2877: [Noi2012]魔幻棋盘 - BZOJ
DescriptionInput 第一行为两个正整数N,M,表示棋盘的大小. 第二行为两个正整数X,Y,表示棋盘守护者的位置. 第三行仅有一个正整数T,表示棋盘守护者将进行次操作. 接下来N行,每行有 ...
- 1057: [ZJOI2007]棋盘制作 - BZOJ
Description 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴 ...
- bzoj 2706: [SDOI2012]棋盘覆盖 Dancing Link
2706: [SDOI2012]棋盘覆盖 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 255 Solved: 77[Submit][Status] ...
- BZOJ 4000: [TJOI2015]棋盘( 状压dp + 矩阵快速幂 )
状压dp, 然后转移都是一样的, 矩阵乘法+快速幂就行啦. O(logN*2^(3m)) ------------------------------------------------------- ...
- bzoj 1057: [ZJOI2007]棋盘制作 单调栈
题目链接 1057: [ZJOI2007]棋盘制作 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 1019[Submit] ...
- BZOJ 1057: [ZJOI2007]棋盘制作( dp + 悬线法 )
对于第一问, 简单的dp. f(i, j)表示以(i, j)为左上角的最大正方形, f(i, j) = min( f(i + 1, j), f(i, j + 1), f(i + 1, j + 1)) ...
随机推荐
- 51nod1615
题解: 首先,当1+2+...+n=x时,答案就是n 如果1+2+...+n不会等于x,那么找一个最小的n,让1+2+....+n>x并且(1+2+.....+n-x)%2=0 代码: #inc ...
- vue + element-ui Table的数据多选,多页选择数据回显,分页记录保存选中的数据。
业务的需要:我要对与会人员勾选,记录所选的与会人员,并且点击到别的页面上时也要记录所勾选的.第一次尝试,每次点击下一页数据都会清空.然后我就去element ui官网查看了api.实现如下: 在tab ...
- 使用word2013写博客
额额 要使用的话首先要配置一下: 选择word2013的创建,然后点击模版,搜索博客. 然后就是创建账户了,账户主要填写的下面这些信息: 注意,cnblogs后面的子域名应该使用你自己的子域名 下面 ...
- SharePoint场管理-PowerShell(一)
1. 查看场配置信息 Get-SPFarmConfig 2. 设置场配置信息 Set-SPFarmConfig –ASPScriptOptimizationEnabled:$true –DataFor ...
- 缓存ehcache
应用场景: 当调用一个接口数据时:直连-缓存-数据库-远程调用(类似直连) 代码: // 从缓存 通过身份证号码查询是否存在征信报告 CisReportRoot fromCache = cacheSe ...
- TCP三次握手与四次挥手详解
目录 TCP三次握手与四次挥手详解 1.TCP报文格式 2.TCP三次握手 3.TCP四次挥手 4.为什么建立连接需要三次握手? 5.为什么断开连接需要四次挥手? 6.为什么TIME_WAIT状态还需 ...
- 【记录】恢复win7与ARM开发板TQ2440的串口连接
1.给板子上电. 2.接好物理上的串口连接,板子那端就是普通的RS232串口,电脑这端是USB转串口的线的USB这头,连到电脑上,然后在Win7系统下,先去看看,当前连接的USB虚拟出来的串口是哪个口 ...
- Android 引入外部模块编译选择
/********************************************************************************* * Android 引入外部模块编 ...
- 【opencv基础】detectMultiScale-output detection score
前言 使用FDDB数据库评估人脸检测的效果时,需要计算人脸区域的得分,具体问题请参考FDDB-FAQ. 实现过程 根据here和here的描述,可以使用cascade.detectMultiScale ...
- unknown error: call function result missing 'value'
好好的脚本全部报错,遇到这种现在看一下自己Chrome浏览的版本号 然后去chromedriver官网上下载最新驱动文件 https://sites.google.com/a/chromium.org ...