分析

我们将没连的点连向周围四个点

其余的按照给定的方向连

我们将所有连出去的位置统一连到0点上

再以0作为树根

于是就将问题转化为了有向图内向树计数

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
const int mod = 1e9+;
const int dx[] = {,-,,};
const int dy[] = {,,,-};
int n,m,g[][],id[][],cnt,ok;
char s[][];
inline void add(int x,int y){
g[y][y]++;
g[y][x]--;
}
inline int dfs(int x, int y, int len) {
if(x<||x>n||y<||y>m)return ;
if(id[x][y]!=-)return id[x][y];
if(len>n*m){
ok=;
return ;
}
if(s[x][y]=='L')return id[x][y]=dfs(x,y-,len+);
if(s[x][y]=='R')return id[x][y]=dfs(x,y+,len+);
if(s[x][y]=='U')return id[x][y]=dfs(x-,y,len+);
if(s[x][y]=='D')return id[x][y]=dfs(x+,y,len+);
}
inline int gs(){
int i,j,k,ans=;
for(i=;i<=cnt;i++)
for(j=;j<=cnt;j++)
g[i][j]=(g[i][j]%mod+mod)%mod;
for(i=;i<=cnt;i++){
for(j=i;j<=cnt;j++)
if(g[i][j])break;
if(j>cnt)return ;
if(j!=i)ans=mod-ans,swap(g[i],g[j]);
for(j=i+;j<=cnt;j++){
while(g[j][i]){
int t=g[i][i]/g[j][i];
for(k=i;k<=cnt;k++)
g[i][k]=(g[i][k]-1ll*t*g[j][k]%mod+mod)%mod;
ans=mod-ans;
swap(g[i],g[j]);
}
}
ans=1ll*ans*g[i][i]%mod;
}
return ans;
}
inline void solve(){
int i,j,k;
ok=;
cnt=;
memset(g,,sizeof(g));
memset(id,-,sizeof(id));
scanf("%d%d",&n,&m);
for(i=;i<=n;i++)scanf("%s",s[i]+);
for(i=;i<=n;i++)
for(j=;j<=m;j++)
if(s[i][j]=='.')
id[i][j]=++cnt;
for(i=;i<=n;i++)
for(j=;j<=m;j++)
if(s[i][j]=='.'){
for(k=;k<;k++)
add(dfs(i+dx[k],j+dy[k],),id[i][j]);
}else dfs(i,j,);
if(ok){
puts("");
return;
}
printf("%d\n",gs());
return;
}
int main(){
int t;
scanf("%d",&t);
while(t--)solve();
return ;
}

loj6259「CodePlus 2017 12 月赛」白金元首与独舞的更多相关文章

  1. [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞

    [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞 试题描述 到河北省 见斯大林 / 在月光下 你的背影 / 让我们一起跳舞吧 うそだよ~ 河北省怎么可能有 Stalin. ...

  2. 【LibreOJ】#6259. 「CodePlus 2017 12 月赛」白金元首与独舞

    [题目]给定n行m列的矩阵,每个位置有一个指示方向(上下左右)或没有指示方向(任意选择),要求给未定格(没有指示方向的位置)确定方向,使得从任意一个开始走都可以都出矩阵,求方案数.n,m<=20 ...

  3. 「CodePlus 2017 12 月赛」白金元首与独舞

    description 题面 data range \[ 1 \leq T \leq 10, 1 \leq n, m \leq 200 , 0 \leq k \leq \min(nm, 300)\] ...

  4. 走进矩阵树定理--「CodePlus 2017 12 月赛」白金元首与独舞

    n,m<=200,n*m的方阵,有ULRD表示在这个格子时下一步要走到哪里,有一些待决策的格子用.表示,可以填ULRD任意一个,问有多少种填法使得从每个格子出发都能走出这个方阵,答案取模.保证未 ...

  5. 「CodePlus 2017 12 月赛」火锅盛宴(模拟+树状数组)

    1A,拿来练手的好题 用一个优先队列按煮熟时间从小到大排序,被煮熟了就弹出来. 用n个vector维护每种食物的煮熟时间,显然是有序的. 用树状数组维护每种煮熟食物的数量. 每次操作前把优先队列里煮熟 ...

  6. 「CodePlus 2017 12 月赛」可做题2(矩阵快速幂+exgcd+二分)

    昨天这题死活调不出来结果是一个地方没取模,凉凉. 首先有个一眼就能看出来的规律... 斐波那契数列满足$a_1, a_2, a_1+a_2, a_1+2a_2, 2a_1+3a_2, 3a_1+5a_ ...

  7. 【LIbreOJ】#6256. 「CodePlus 2017 12 月赛」可做题1

    [题意]定义一个n阶正方形矩阵为“巧妙的”当且仅当:任意选择其中n个不同行列的数字之和相同. 给定n*m的矩阵,T次询问以(x,y)为左上角的k阶矩阵是否巧妙.n,m<=500,T<=10 ...

  8. 【LibreOJ】#6257. 「CodePlus 2017 12 月赛」可做题2

    [题意]数列满足an=an-1+an-2,n>=3.现在a1=i,a2=[l,r],要求满足ak%p=m的整数a2有多少个.10^18. [算法]数论(扩欧)+矩阵快速幂 [题解]定义fib(i ...

  9. 「CodePlus 2017 12 月赛」火锅盛宴

    n<=100000种食物,给每个食物煮熟时间,有q<=500000个操作:在某时刻插入某个食物:查询熟食中编号最小的并删除之:查询是否有编号为id的食物,如果有查询是否有编号为id的熟食, ...

随机推荐

  1. log记录日志使用说明

    一. 想要让Log4net日志(以下称日志)按每月自动归类为一个文件夹,为此,学习和修改了log4net.config文件.查了资料,重点是以下这些参数: <param name="F ...

  2. APM全链路监控--日志收集篇

    一.监控的意义: 随着互联网普及的广度和深度,对于项目的监控显得格外重要:无论是web服务器进程.内存.cpu等资源监控,还是爬虫程序请求频率,状态码以及储存结果的监控,都需要一个及时的反馈机制. 二 ...

  3. 重载与重写、多态——java

    方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式. (1)方法重载是一个类中定义了多 ...

  4. SpringBootTest单元测试及日志

    springboot系列学习笔记全部文章请移步值博主专栏**: spring boot 2.X/spring cloud Greenwich. 由于是一系列文章,所以后面的文章可能会使用到前面文章的项 ...

  5. pppd - 点对点协议守护进程

    总览 SYNOPSIS pppd [ tty_name ] [ speed ] [ options ] 描述 点对点协议 (PPP) 提供一种在点对点串列线路上传输资料流 (datagrams)的方法 ...

  6. python面向对象--类和实例的认识

    '''1.数据属性 2.函数属性''' #创建一个类class Chinese: "这是一个中国人的类" #类属性 money=4000 #注意类和对象均用点来访问自己的属性 de ...

  7. codeforces Summer Earnings(bieset)

    Summer Earnings time limit per test 9 seconds memory limit per test 256 megabytes input standard inp ...

  8. CSS3选择器 ::selection选择器

    “::selection”伪元素是用来匹配突出显示的文本(用鼠标选择文本时的文本).浏览器默认情况下,用鼠标选择网页文本是以“深蓝的背景,白色的字体”显示的,效果如下图所示: 从上图中可以看出,用鼠标 ...

  9. luogu2046 海拔

    题目链接[NOI2010]海拔 首先有个性质就是海拔只会有\(0\)和\(1\)两种. 证明:海拔下降和人数乘积为总消耗,确定了海拔下降总数,如果有个地方可以使得单位消耗最小,那么全部消耗不会更劣. ...

  10. thinkphp获取目录的方法

    1.获取根目录 http://localhost/ 下面两种方法效果一样 $_SERVER['REQUEST_SCHEME']."://".$_SERVER['HTTP_HOST' ...