简单DP,N×M的网格其中有一条边坏掉了,问从起点到终点的放法数

有两种方法,一种是DP很好理解

 //#define LOCAL
#include <cstdio>
#include <cstring> int dp[][];
bool flag[][]; int main(void)
{
#ifdef LOCAL
freopen("2125in.txt", "r", stdin);
#endif int r, c;
while(scanf("%d%d", &r, &c) == )
{
int y1, x1, y2, x2;
scanf("%d%d%d%d", &y1, &x1, &y2, &x2);
dp[][] = ;
memset(flag, false, sizeof(flag));
flag[x1+][y1+] = flag[x2+][y2+] = true;
for(int i = ; i <= r; ++i)
for(int j = ; j <= c; ++j)
{
dp[i][j] = dp[i-][j] + dp[i][j-];
if(flag[i][j])
{
if(flag[i][j-])
dp[i][j] -= dp[i][j-];
if(flag[i-][j])
dp[i][j] -= dp[i-][j];
}
}
printf("%d\n", dp[r][c]);
}
return ;
}

代码君

第二种,用数学公式

如果没有坏边的话,总放法数是CN-1(M+N-2) 

因为每种方法都要走(M+N-2)步,向上走N-1步,向下走M-1步

现在考虑一条坏边,那么就计算经过这条坏边的方案数然后从总数里面减去即可

经过坏边的放法数就是从起点到(x1, y1)的放法数×从(x2, y2)到终点的放法数

 #define LOCAL
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std; long long c(long long m, long long n)
{
if(m== || n==)
return ;
n = min(n, m-n);
long long ans = ;
for(int i = ; i < n; ++i)
ans = ans * (m-i) / (+i);
return ans;
} int main(void)
{
#ifdef LOCAL
freopen("2125in.txt", "r", stdin);
#endif int n, m;
while(scanf("%d%d", &n, &m) == )
{
int x1, y1, x2, y2;
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
if(x1+y1 > x2+y2)
{
int t = x1;
x1 = x2, x2 = t;
t = y1;
y1 = y2, y2 = t;
}
printf("%lld\n", c(m+n-, m-) - c(x1+y1, x1) * c(m+n--x2-y2, m--x2));
}
return ;
}

代码君

HDU 2125 Local area network的更多相关文章

  1. Real-time storage area network

    A cluster of computing systems is provided with guaranteed real-time access to data storage in a sto ...

  2. (转)内置系统账户:Local system/Network service/Local Service 区别

    最近会转载一些 MSSQL 基础相关的文章. 参考文献: http://www.cnblogs.com/xianspace/archive/2009/04/05/1429835.html 前言 今天在 ...

  3. Local System/Network Service/Local Service

    // The name of the account under which the service should run// 1 NT AUTHORITY\\SYSTEM 2 NT AUTHORIT ...

  4. [转帖]内置系统账户:Local system/Network service/Local Service 区别

    内置系统账户:Local system/Network service/Local Service 区别 学习使用 xp_cmdshell 的时候 发现必须 sqlserver 的服务运行在local ...

  5. 存储区域网络(Storage Area Network,简称SAN)

    存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服 ...

  6. 内置系统账户:Local system/Network service/Local Service 区别

    参考文献: http://www.cnblogs.com/xianspace/archive/2009/04/05/1429835.html 前言 今天在安装sqlserver2008 r2的时候,在 ...

  7. 关于Local System/Local Service/Network Service账户

    部署或安装系统服务时需要指定服务运行的账户.一般地,可选择Local System.Local Service或Network Service账户. Local System/Local Servic ...

  8. linux 下使用 tc 模拟网络延迟和丢包-使用 linux 模拟广域网延迟 - Emulating wide area network delays with Linux

    tc 是linux 内置的命令:使用man pages 查看 我们看到,其功能为 show / manipulate traffic control settings,可对操作系统进行流量控制: ne ...

  9. Windows内置系统账户:Local system/Network service/Local Service 区别

    LocalSystem 账户  LocalSystem是预设的拥有本机所有权限的本地账户,这个账户跟通常的用户账户没有任何关联,也没有用户名和密码之类的凭证.这个服务账户可以打开注册表的HKEY_LO ...

随机推荐

  1. 为Form中的控件增加自适应功能 转

    创建一个基于Custom的类resizeable,并新建属性和方法程序,其说明如下: a) 新建属性: posiTyperList 可调整位置的控件类型列表sizeTypeList 可调整大小的控件类 ...

  2. Codeforces446C DZY Loves Fibonacci Numbers(线段树 or 分块?)

    第一次看到段更斐波那契数列的,整个人都不会好了.事后看了题解才明白了一些. 首先利用二次剩余的知识,以及一些数列递推式子有下面的 至于怎么解出x^2==5(mod 10^9+9),我就不知道了,但是要 ...

  3. iOS模型以及使用

    个人习惯,也可以不这样写 创建模型基类: #import <Foundation/Foundation.h> @interface WJBaseModel : NSObject //将字典 ...

  4. HDU 1548 A strange lift (Dijkstra)

    A strange lift http://acm.hdu.edu.cn/showproblem.php?pid=1548 Problem Description There is a strange ...

  5. 安装微软ASP.NET MVC 4,运行以下的包管理器控制台命令

    (菜鸟,勿喷,有错求指正)Asp.net  新建的类库中安装MVC4  .下面是步骤,1+2:打开程序包管理控制台,3:运行Install-Package Microsoft.AspNet.Mvc - ...

  6. test1

    test1test1test1test1test1test1test1test1test1test1test1test1test1test1test1test1test1test1test1test1 ...

  7. hdu 1567 2006 (题意理解容易出错)

    #include<stdio.h> #include<vector> #include<algorithm> using namespace std; struct ...

  8. Eclipse提示Tomcat miss丢失bug:The Tomcat server configuration at \Servers\Tomcat v5.5 Server at localhost-config is missing.

    Eclipse提示Tomcat miss丢失bug:The Tomcat server configuration at \Servers\Tomcat v5.5 Server at localhos ...

  9. 一步步来配置安卓开发环境ADTBundle

    前提 安装JDK,并且要正确配置环境变量. 特别要注意安装配置完后,CMD命令行窗口里输入 java 和 javac 查看是否有内容输出,若提示找不到命令就是你JDK配置错误了 至于如何配置JDK看这 ...

  10. Bridging signals---hdu1950(最长上升子序列复杂度n*log(n) )

     题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1950 一直只知道有除n*n的算法之外的求LIS,但是没学过,也没见过,今天终于学了一下,dp[i]表 ...