#2057. 「TJOI / HEOI2016」游戏

思路:

  最大流;

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define maxn 2000005
int n,m,s,t,que[maxn],deep[maxn],toth,totl,F[maxn],cnt=;
int idh[][],idl[][],E[maxn],V[maxn],head[maxn];
char map[][];
bool if_[][];
inline bool bfs()
{
for(int i=s;i<=t;i++) deep[i]=-;
int h=,tail=,now;que[]=s,deep[s]=;
while(h<tail)
{
now=que[h++];
for(int i=head[now];i;i=E[i])
{
if(F[i]&&deep[V[i]]<)
{
deep[V[i]]=deep[now]+;
if(V[i]==t) return true;
que[tail++]=V[i];
}
}
}
return false;
}
inline int flowing(int now,int flow)
{
if(now==t||flow<=) return flow;
int oldflow=,pos;
for(int i=head[now];i;i=E[i])
{
if(F[i]&&deep[V[i]]==deep[now]+)
{
pos=flowing(V[i],min(flow,F[i]));
F[i]-=pos,F[i^]+=pos,oldflow+=pos,flow-=pos;
if(!flow) return oldflow;
}
}
if(!oldflow) deep[now]=-;
return oldflow;
}
inline void edge_add(int u,int v,int f)
{
E[++cnt]=head[u],V[cnt]=v,F[cnt]=f,head[u]=cnt;
E[++cnt]=head[v],V[cnt]=u,F[cnt]=,head[v]=cnt;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%s",map[i]+);
for(int i=;i<=n;i++)
for(int v=;v<=m;v++)
if(map[i][v]=='*'&&!idh[i][v])
{
toth++;
for(int l=v;l>&&map[i][l]!='#';l--)
{
idh[i][l]=toth;
if(map[i][l]=='x') idh[i][l]=;
}
for(int r=v+;r<=m&&map[i][r]!='#';r++)
{
idh[i][r]=toth;
if(map[i][r]=='x') idh[i][r]=;
}
}
for(int i=;i<=n;i++)
for(int v=;v<=m;v++)
if(map[i][v]=='*'&&!idl[i][v])
{
totl++;
for(int l=i;l>&&map[l][v]!='#';l--)
{
idl[l][v]=totl;
if(map[l][v]=='x') idl[l][v]=;
}
for(int r=i+;r<=n&&map[r][v]!='#';r++)
{
idl[r][v]=totl;
if(map[r][v]=='x') idl[r][v]=;
}
}
for(int i=;i<=n;i++)
for(int v=;v<=m;v++)
if(idh[i][v]&&idl[i][v]&&!if_[idh[i][v]][idl[i][v]])
{
if_[idh[i][v]][idl[i][v]]=true;
edge_add(idh[i][v],idl[i][v]+toth,);
}
s=,t=toth+totl+;
for(int i=;i<=toth;i++) edge_add(s,i,);
for(int i=;i<=totl;i++) edge_add(i+toth,t,);
int ans=;
while(bfs()) ans+=flowing(s,INF);
cout<<ans;
return ;
}

AC日记——#2057. 「TJOI / HEOI2016」游戏 LOJ的更多相关文章

  1. AC日记——#2054. 「TJOI / HEOI2016」树

    #2054. 「TJOI / HEOI2016」树 思路: 线段树: 代码: #include <cstdio> #include <cstring> #include < ...

  2. 【LOJ】#2057. 「TJOI / HEOI2016」游戏

    题解 我并不会做,我觉得很像网络流但是毫无建图思路 我猜了个贪心,写了一下--啥过了90分?!这数据是有多水啊.. 哦又是行列拆点 不过要按照'#'进行拆点,也就是一段横着的区间只能放一个炸弹,一段竖 ...

  3. loj2057 「TJOI / HEOI2016」游戏

    记横联通是一块横着的没有硬石头的地,把他们编号.竖联通同理. 对于一个空地,将其横联通编号和竖联通编号连边,二分图匹配,最大匹配为答案. #include <iostream> #incl ...

  4. loj#2054. 「TJOI / HEOI2016」树

    题目链接 loj#2054. 「TJOI / HEOI2016」树 题解 每次标记覆盖整棵字数,子树维护对于标记深度取max dfs序+线段树维护一下 代码 #include<cstdio> ...

  5. 「TJOI / HEOI2016」字符串

    「TJOI / HEOI2016」字符串 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为 \(n\) 的字符串 \(s\),和 ...

  6. loj #2055. 「TJOI / HEOI2016」排序

    #2055. 「TJOI / HEOI2016」排序   题目描述 在 2016 年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他. 这个 ...

  7. loj2058 「TJOI / HEOI2016」求和 NTT

    loj2058 「TJOI / HEOI2016」求和 NTT 链接 loj 思路 \[S(i,j)=\frac{1}{j!}\sum\limits_{k=0}^{j}(-1)^{k}C_{j}^{k ...

  8. LOJ #2058「TJOI / HEOI2016」求和

    不错的推柿子题 LOJ #2058 题意:求$\sum\limits_{i=0}^n\sum\limits_{j=0}^nS(i,j)·2^j·j!$其中$ S(n,m)$是第二类斯特林数 $ Sol ...

  9. loj#2059. 「TJOI / HEOI2016」字符串 sam+线段树合并+倍增

    题意:给你一个子串,m次询问,每次给你abcd,问你子串sa-b的所有子串和子串sc-d的最长公共前缀是多长 题解:首先要求两个子串的最长公共前缀就是把反过来插入变成最长公共后缀,两个节点在paren ...

随机推荐

  1. Win8Metro(C#)数字图像处理--2.40二值图像轮廓提取

    http://dongtingyueh.blog.163.com/blog/static/4619453201271481335630/ [函数名称] 二值图像轮廓提取         Contour ...

  2. 解决eclipse快捷键Ctrl+Alt+Down冲突问题办法

    解决eclipse快捷键Ctrl+Alt+Down冲突问题办法 时间:2016-01-18 21:11:08      阅读:376      评论:0      收藏:0      [点我收藏+] ...

  3. 回顾static与final的作用

    static是java中非常重要的一个关键字,而且它的用法也很丰富,主要有四种用法: 用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享: 用来修饰成员方法,将其变为类方法,可以直接 ...

  4. 7.Configurator API 详细介绍

    一.Configurator类介绍与API解释 1.Configurator类介绍 1)用于设置脚本动过的默认延时 2)功能 a.可调节两个模拟动作间的默认时间间隔 b.可调节输入文本的输入时间间隔 ...

  5. 3.6 scikit-learn:Python中的机器学习

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&am ...

  6. == 和 equals,equals 与 hashcode,HashSet 和 HashMap,HashMap 和 Hashtable

    一:== 和 equals == 比较引用的地址equals 比较引用的内容 (Object 类本身除外) String obj1 = new String("xyz"); Str ...

  7. HDU 2619 完全剩余类 原根

    求有多少$i(<=n-1)$,使 $x^i  \mod n$的值为$[1,n-1]$,其实也就是满足完全剩余类的原根数量.之前好像在二次剩余的讲义PPT里看到这个过. 直接有个定理,如果模k下有 ...

  8. 无聊js画了个菱形

    function repeat(str, count) { return count < 0 ? '' : (new Array(count)).join(str); } function di ...

  9. ue4 TimeRemaining(ratio)找不到的问题

    最近看ue4的Blueprint 3rd Person Game的教学视频,其中第十集https://docs.unrealengine.com/latest/INT/Videos/PLZlv_N0_ ...

  10. NYOJ 228 士兵杀敌(五) (模拟)

    {题目链接](http://acm.nyist.net/JudgeOnline/problem.php?pid=228) 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为0~M,每次有任务的时候 ...