【Contest Hunter【弱省胡策】Round #0-Flower Dance】组合数学+DP
题目链接:
http://ch.ezoj.tk/contest/%E3%80%90%E5%BC%B1%E7%9C%81%E8%83%A1%E7%AD%96%E3%80%91Round%20%230/Flower%20Dance
题意:
在一个n*m的地图上,两个人同时从左上角走到右下角,其中有一些格子是障碍,不能走。
并且,两个人走的路径不能相交。
求总方案数。
题解:
昨天晚上做这道题一点靠谱的思路都没有。就是不相交路线那里被弄死了。。
后来听了讲解才发现。。代码如此简单!
就是要开动脑筋啊!智商啊!!!
对于两条不相交的路径,那么第一条路径一定是从(1,2)出发,到达(n-1,m);
第二条路径一定是从(2,1)出发,到达(n,m-1);
所以对于一对相交的路径,一定可以从最后一个交点开始按互相交换路径,变为:
第一条路径一定从(1,2)出发,到达(n,m-1);
第二条路径一定从(2,1)出发,到达(n-1,m);
所以,总方案数= 从(1,2)出发到(n-1,m)的方案数 * 从(2,1)出发到达(n,m-1)的方案数 -
从(1,2)出发到达(n,m-1)的方案数 * 从(2,1)出发到达(n-1,m)的方案数。
DP求解即可。
代码如下:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<vector>
using namespace std;
typedef long long LL; const int N=,Mod=;
int n,m;
char s[N][N];
int a[N][N],b[N][N]; int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
scanf("%s",s[i]+);
}
memset(a,,sizeof(a));
memset(b,,sizeof(b));
a[][]=b[][]=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(s[i][j]!='')
{
if(i!=)
a[i][j]=(a[i-][j]+a[i][j-])%Mod;
if(j!=)
b[i][j]=(b[i-][j]+b[i][j-])%Mod;
}
LL x=a[n][m-],y=b[n-][m],xx=a[n-][m],yy=b[n][m-];
printf("%lld\n",((x*y)%Mod - (xx*yy)%Mod + Mod)%Mod);
return ;
}
【Contest Hunter【弱省胡策】Round #0-Flower Dance】组合数学+DP的更多相关文章
- 【弱省胡策】Round #0 Flower Dance DP
Flower Dance Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://162.105.80.126/contest/%E3%80%90%E ...
- 【弱省胡策】Round #5 Count
[弱省胡策]Round #5 Count 太神仙了. \(DP\)做法 设\(f_{n,m,d,k}\)表示\(n*m\)的矩阵,填入第\(k\)个颜色,并且第\(k\)个颜色最少的一列上有\(d\) ...
- luoguP3769 [CH弱省胡策R2]TATT
luoguP3769 [CH弱省胡策R2]TATT PS:做这题前先切掉 P4148简单题,对于本人这样的juruo更助于理解,当然dalao就当练练手吧 题目大意: 现在有n个四维空间中的点,请求出 ...
- 弱省胡策 Magic
弱省胡策 Magic 求\(n\)个点\(n\)的条边的简单联通图的个数. 毒瘤,还要写高精. 我们枚举环的大小\(k\),\(\displaystyle ans=\sum_{k=3}^nC_n^k ...
- 【ContestHunter】【弱省胡策】【Round0】(A)&【Round1】(B)
DP+容斥原理or补集转化?/KD-Tree 唔……突然发现最早打的两场(打的最烂的两场)没有写记录……(太烂所以不忍记录了吗... 还是把搞出来了的两道题记录一下吧= =勉强算弥补一下缺憾…… Ro ...
- 【ContestHunter】【弱省胡策】【Round7】
Prufer序列+高精度+组合数学/DP+可持久化线段树 Magic 利用Prufer序列,我们考虑序列中每个点是第几个插进去的,再考虑环的连接方式,我们有$$ans=\sum_{K=3}^n N^{ ...
- 【弱省胡策】Round #5 Construct 解题报告
这个题是传说中的 Hack 狂魔 qmqmqm 出的构造题.当然要神. 这个题的本质实际上就是构造一个图,然后使得任意两点间都有长度为 $k$ 的路径相连,然后对于任意的 $i < k$,都存在 ...
- 【弱省胡策】Round #5 Handle 解题报告
这个题是我出的 sb 题. 首先,我们可以得到: $$A_i = \sum_{j=i}^{n}{j\choose i}(-1)^{i+j}B_j$$ 我们先假设是对的,然后我们把这个关系带进来,有: ...
- 【弱省胡策】Round #7 Rectangle 解题报告
orz PoPoQQQ 的神题. 我的想法是:给每一个高度都维护一个 $01$ 序列,大概就是维护一个 $Map[i][j]$ 的矩阵,然后 $Map[i][j]$ 表示第 $i$ 根柱子的高度是否 ...
随机推荐
- Java 集合框架之 Map
Hashtable Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子.容量 是哈希表中桶 的数量,初始容量就是哈希表创建时的容量.注意,哈希表的状态为 open:在发生“哈希冲突” ...
- AndroidUI设计之 布局管理器 - 详细解析布局实现
写完博客的总结 : 以前没有弄清楚的概念清晰化 父容器与本容器属性 : android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器 ...
- bootstrap使用中遇到的坑
一.例如: <div class="form-group"> <label class="control-label col-lg-3"> ...
- LintCode-54.转换字符串到整数
转换字符串到整数 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN( ...
- IDEA编译的JAR包运行出现“没有主清单属性”
运行编译好的包出现: 解决方案就是: 确保MANIFEST.MF文件在src/main/resources/META_INF/而不是src/main/java/META_INF/
- Directory类的使用、Alt+Shift+F10可以查看其命名空间
对于一个对象,按下Alt+Shift+F10可以查看其命名空间. Directory类的使用 using System; using System.Collections.Generic; using ...
- 学习 SQL 语句 - Select(9): 其他
//只要前五条记录 procedure TForm1.Button1Click(Sender: TObject); begin with ADODataSet1 do begin Clos ...
- 【ASP.NET Core】ASP.NET Core API 版本控制
几天前,我和我的朋友们使用 ASP.NET Core 开发了一个API ,使用的是GET方式,将一些数据返回到客户端 APP.我们在前端进行了分页,意味着我们将所有数据发送给客户端,然后进行一些dat ...
- mysql 迁移 mariadb
背景: mysql5.7数据库安装在windows环境中,数据需要迁移到CentOS7.4的mariadb5.5中.web应用是采用springboot2.x开发的,迁移数据完成后,还需要简单修改一些 ...
- [洛谷P1552][APIO2012]派遣
题目大意:有一棵$n$个点的树,和一个费用$m$,每个点有一个费用和价值,请选一个点,再从它的子树中选取若干个点,使得那个点的价值乘上选的点的个数最大,要求选的点费用总和小于等于$m$ 题解:树形$d ...