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

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

 1 //#define LOCAL
 2 #include <cstdio>
 3 #include <cstring>
 4
 5 int dp[42][42];
 6 bool flag[42][42];
 7
 8 int main(void)
 9 {
10     #ifdef LOCAL
11         freopen("2125in.txt", "r", stdin);
12     #endif
13
14     int r, c;
15     while(scanf("%d%d", &r, &c) == 2)
16     {
17         int y1, x1, y2, x2;
18         scanf("%d%d%d%d", &y1, &x1, &y2, &x2);
19         dp[0][1] = 1;
20         memset(flag, false, sizeof(flag));
21         flag[x1+1][y1+1] = flag[x2+1][y2+1] = true;
22         for(int i = 1; i <= r; ++i)
23             for(int j = 1; j <= c; ++j)
24             {
25                 dp[i][j] = dp[i-1][j] + dp[i][j-1];
26                 if(flag[i][j])
27                 {
28                     if(flag[i][j-1])
29                         dp[i][j] -= dp[i][j-1];
30                     if(flag[i-1][j])
31                         dp[i][j] -= dp[i-1][j];
32                 }
33             }
34         printf("%d\n", dp[r][c]);
35     }
36     return 0;
37 }

代码君

第二种,用数学公式

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

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

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

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

 1 #define LOCAL
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cstring>
 5 using namespace std;
 6
 7 long long c(long long m, long long n)
 8 {
 9     if(m==0 || n==0)
10         return 1;
11     n = min(n, m-n);
12     long long ans = 1;
13     for(int i = 0; i < n; ++i)
14         ans = ans * (m-i) / (1+i);
15     return ans;
16 }
17
18 int main(void)
19 {
20     #ifdef LOCAL
21         freopen("2125in.txt", "r", stdin);
22     #endif
23
24     int n, m;
25     while(scanf("%d%d", &n, &m) == 2)
26     {
27         int x1, y1, x2, y2;
28         scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
29         if(x1+y1 > x2+y2)
30         {
31             int t = x1;
32             x1 = x2, x2 = t;
33             t = y1;
34             y1 = y2, y2 = t;
35         }
36         printf("%lld\n", c(m+n-2, m-1) - c(x1+y1, x1) * c(m+n-2-x2-y2, m-1-x2));
37     }
38     return 0;
39 }

代码君

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/3931672.html

HDU 2125 Local area network相关推荐

  1. 搭建Windows 家庭用无线局域网WLAN (Wireless Local Area Network)

    我家用共有3台电脑共用Wifi无线上网,都是PC, 一台是windows 11, 另2台是Windows 10系统, 每次交换数据都是用U 盘,或者移动硬盘拷贝来拷贝去, 非常不方便. 希望3台电脑组 ...

  2. VXLAN 隧道 基础介绍 Virtual eXtensible Local Area Network,虚拟可扩展局域网

    一.概述 VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络 ...

  3. 1、什么是VxLAN(Virtual eXtensible Local Area Network)【RFC7348】

    这是一个全新栏目的第一篇文章,后续我将持续更新此章节...大概率这是一个坑,具体更新频率看心情哈 这个栏目主要为大家介绍什么是VxLAN,以及VxLAN基础概念的导入. VxLAN无论是在数据中心网络 ...

  4. 无线局域网WLAN(Wireless Local Area Network)

    目录 无线局域网特点 无线局域网组成 无线局域网分类 热点(hot spot) 移动自组网络 无线传感器网络WSN 无线局域网值采用无线通信技术的局域网 无线局域网特点 提供了移动接入的功能 节省投资 ...

  5. WLAN(Wireless Local Area Network)——无线局域网

    目录 一.WLAN基础 1.分类 2.各种无线网络技术应用 3.WLAN的定义 4.WLAN技术标准 (1)802.11 (2)802.11b (3)802.11a (4)802.11g (5)802 ...

  6. 猫(modem) 路由器 交换机 中继器 集线器 网桥 wifi协议和以太网协议 WAN(wide area network) LAN(local area network)

    wifi协议 应该是定义了链路层和物理层协议-无线网卡 wifi在数据链路层中帧的协议 https://blog.csdn.net/l982817732/article/details/5227417 ...

  7. Windows内置系统账户Local system/Network service/Local Service

     内置系统账户:Local system/Network service/Local Service 区别 [ LocalSystem   账户] LocalSystem是预设的拥有本机所有权限的本地 ...

  8. 车载网络: CAN (Control Area Network) 控制器局域网络

    概述 CAN,全称 控制器局域网络 (Controller Area Network, CAN),是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为 国际标准(ISO 11898) ...

  9. CAN(Controller Area Network)网络通信简介

    CAN(Controller Area Network)网络是一种广泛应用于工业控制和汽车电子等领域的串行通信协议.以下是CAN网络的常见知识点: 数据帧结构:CAN网络采用异步传输,每个数据帧包括标 ...

最新文章

  1. HashMap数据类型使用注意-不能使用基本数据类型
  2. 第一个Node.js实例
  3. 女司机撞上劳斯莱斯不用赔,多亏她车牌上的一个字救了她
  4. 女朋友还是游戏?一起来分析下游戏的开发与销售情况!
  5. C++编译出现binding ‘const string {aka const std::__cxx11::basic_string<char>}’ to reference of type ‘std
  6. Linux历史,安装,分区,版本
  7. jison解析Cube信息 存入又读取出来
  8. NB-IOT(1)---NB-IoT移远BC95调试
  9. 90后互联网打工人:为了买小两居,爸妈打零工帮我凑首付
  10. Vue+Vue Router+Vuex页面演示
  11. ACCESS中执行sql语句
  12. sed个人习惯用法总结
  13. theano 编程技巧
  14. Lotus中Form与Document的区别
  15. 计算机软件系统的三个层次,计算机软硬件系统
  16. php收付同分账,php微信分账功能 —— app支付
  17. 护肤品html作业,聚美优品美容产品热点.html
  18. 乐乐课堂_leleketang.com
  19. window电脑 休眠后无法唤醒 解决办法
  20. 硬件防火墙和软件防火墙有什么区别

热门文章

  1. 【必看】如何在 Linux 上恢复误删除的文件或目录
  2. 第 19 课时:调度器的调度流程和算法介绍(木苏)
  3. 函数计算支持 MySQL 实例绑定
  4. 云原生生态周报 Vol. 13 | Forrester 发布企业级容器平台报告
  5. 手机控件查看工具uiautomatorviewer
  6. android动画封装,Android属性动画封装,快速构建动画
  7. python心得体会300字_有没有简单一点的 Python 小例子或小项目?
  8. pcie协议_PCIE系统标准体系结构解读(一)
  9. 等参元八节点matlab,四边形八节点等参元matlab程序
  10. mysql 逻辑型_17. 逻辑运算符