同tjoi2010 打扫房间,每个点入度,出度都为1,可以向相邻4个点连边,但只有原来存在的边费用为0。

// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define il inline
#define vd void
typedef long long ll;
il int gi(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=getchar();
}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
char s[20][20];
const int maxn=500,maxm=100000;
int S,T,n,m,fir[maxn],dis[maxm],nxt[maxm],w[maxm],cost[maxm],id=1;
il vd link(int a,int b,int c,int d){
nxt[++id]=fir[a],fir[a]=id,dis[id]=b,w[id]=c,cost[id]=d;
nxt[++id]=fir[b],fir[b]=id,dis[id]=a,w[id]=0,cost[id]=-d;
}
const int X[]={0,1,-1,0,0},Y[]={0,0,0,1,-1};
const char form[]="0DURL";
int num[16][16][2];
il bool Mincost(int&total){
static int que[maxn],hd,tl,dist[maxn],lst[maxn];
static bool inq[maxn];
hd=tl=0;que[tl++]=S;inq[S]=1;
memset(dist,63,sizeof dist);dist[S]=0;
memset(lst,0,sizeof lst);
while(hd^tl){
int x=que[hd];
for(int i=fir[x];i;i=nxt[i])
if(w[i]&&dist[dis[i]]>dist[x]+cost[i]){
dist[dis[i]]=dist[x]+cost[i],lst[dis[i]]=i;
if(!inq[dis[i]])inq[dis[i]]=1,que[tl++]=dis[i],tl%=maxn;
}
++hd;hd%=maxn;inq[x]=0;
}
for(int i=lst[T];i;i=lst[dis[i^1]])--w[i],++w[i^1],total+=cost[i];
return lst[T];
}
int main(){
#ifndef ONLINE_JUDGE
freopen("3965.in","r",stdin);
freopen("3965.out","w",stdout);
#endif
n=gi(),m=gi();
for(int i=1;i<=n;++i)scanf("%s",s[i]+1);
int cnt=0;S=++cnt,T=++cnt;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j){
num[i][j][0]=++cnt,link(S,num[i][j][0],1,0);
num[i][j][1]=++cnt,link(num[i][j][1],T,1,0);
}
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
for(int k=1;k<=4;++k){
int xx=i+X[k],yy=j+Y[k];
if(xx>n)xx=1;if(yy>m)yy=1;
if(xx==0)xx=n;if(yy==0)yy=m;
link(num[i][j][0],num[xx][yy][1],1,s[i][j]!=form[k]);
}
int ans=0;while(Mincost(ans));printf("%d\n",ans);
return 0;
}

洛咕 P3965 [TJOI2013]循环格的更多相关文章

  1. 洛谷 P3965 [TJOI2013]循环格 解题报告

    P3965 [TJOI2013]循环格 题目背景 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子. 每个元素有一个坐标(行,列),其中左上角元素坐标为\((0,0)\).给定一个起始位\ ...

  2. Bzoj 3171: [Tjoi2013]循环格 费用流

    3171: [Tjoi2013]循环格 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 741  Solved: 463[Submit][Status][ ...

  3. [Tjoi2013]循环格

    [Tjoi2013]循环格 2014年3月18日1,7500 Description Input 第一行两个整数R,C.表示行和列,接下来R行,每行C个字符LRUD,表示左右上下. Output 一个 ...

  4. BZOJ_3171_[Tjoi2013]循环格_最小费用最大流

    BZOJ_3171_[Tjoi2013]循环格_最小费用最大流 Description 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子.每个元素有一个坐标(行,列),其中左上角元素坐标为 ...

  5. bzoj 3171: [Tjoi2013]循环格

    #include<cstdio> #include<iostream> #include<cstring> #define M 10000 #define inf ...

  6. BZOJ3171 Tjoi2013 循环格

    传送门 Description 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子.每个元素有一个坐标(行,列),其中左上角元素坐标为(0,0).给定一个起始位置(r,c) ,你可以沿着箭头 ...

  7. 【BZOJ 3171】 [Tjoi2013]循环格

    Description 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子.每个元素有一个坐标(行,列),其中左上角元素坐标为(0,0).给定一个起始位置(r,c) ,你可以沿着箭头防线在格 ...

  8. 3171. [TJOI2013]循环格【费用流】

    Description 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子.每个元素有一个坐标(行,列),其中左上角元素坐标为(0,0).给定一个起始位置(r,c) ,你可以沿着箭头防线在格 ...

  9. BZOJ 3171 [Tjoi2013]循环格(费用流)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3171 [题目大意] 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子. 每 ...

随机推荐

  1. [翻译] NMBottomTabBarController

    NMBottomTabBarController A customisable tab bar controller for iOS written in Objective C. It uses a ...

  2. 应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户

    这是安装biztalk server 2013出现的问题,很多天了没解决,下边这个解决办法也搜到过类似的,但上次实验时出现设置组件权限时发现都是按钮都是灰的,无法操作. 这次设置好了.谢谢ibg. 文 ...

  3. jquery环形3D立体旋转特效

      jquery环形3D立体旋转特效 作者/代码整理:站长素材  (转载请附加本文地址,带有“懒人原生”字样的谢绝转载)发布日期:2013-07-20   立体效果比较强的jquery特效,周围小图组 ...

  4. UVa 10213 - How Many Pieces of Land ?(欧拉公式)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. 【洛谷】【线段树】P1886 滑动窗口

    [题目描述:] 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. [输入格式:] 输入一共 ...

  6. 配置网卡绑卡 --RHEL7

    配置网卡绑卡 1)网卡绑定(team方式) # 创建组接口nmcli connection add type team ifname team0 con-name team0 config '{&qu ...

  7. 简单的Windows 服务的安装和卸载

    步骤: 1.运行--〉cmd:打开cmd命令框 2.在命令行里定位到InstallUtil.exe所在的位置 InstallUtil.exe 默认的安装位置是在C:/Windows/Microsoft ...

  8. SSM框架之整合EhCache

    本文主要讲ssm框架整合EhCache.或许有人会问什么是ehcache. 关于EhCache的介绍和优劣,我想下面的解答足以让读者明白: EhCache 是一个纯Java的进程内缓存框架,具有快速. ...

  9. Python的多线程和多进程

    (1)多线程的产生并不是因为发明了多核CPU甚至现在有多个CPU+多核的硬件,也不是因为多线程CPU运行效率比单线程高.单从CPU的运行效率上考虑,单任务进程及单线程效率是最高的,因为CPU没有任何进 ...

  10. 【转】iOS消息推送实现过程记录

    客户端代码:链接地址 服务器代码:链接地址  链接地址 这里记录下iOS消息推送实现的全过程 首先,申请秘钥. 之后进入链接地址开发者,当然你得有啊!!!!! 点击这里 如图: 下面实现创建推送证书( ...