HDU 2125 Local area network
简单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相关推荐
- 搭建Windows 家庭用无线局域网WLAN (Wireless Local Area Network)
我家用共有3台电脑共用Wifi无线上网,都是PC, 一台是windows 11, 另2台是Windows 10系统, 每次交换数据都是用U 盘,或者移动硬盘拷贝来拷贝去, 非常不方便. 希望3台电脑组 ...
- VXLAN 隧道 基础介绍 Virtual eXtensible Local Area Network,虚拟可扩展局域网
一.概述 VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络 ...
- 1、什么是VxLAN(Virtual eXtensible Local Area Network)【RFC7348】
这是一个全新栏目的第一篇文章,后续我将持续更新此章节...大概率这是一个坑,具体更新频率看心情哈 这个栏目主要为大家介绍什么是VxLAN,以及VxLAN基础概念的导入. VxLAN无论是在数据中心网络 ...
- 无线局域网WLAN(Wireless Local Area Network)
目录 无线局域网特点 无线局域网组成 无线局域网分类 热点(hot spot) 移动自组网络 无线传感器网络WSN 无线局域网值采用无线通信技术的局域网 无线局域网特点 提供了移动接入的功能 节省投资 ...
- 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 ...
- 猫(modem) 路由器 交换机 中继器 集线器 网桥 wifi协议和以太网协议 WAN(wide area network) LAN(local area network)
wifi协议 应该是定义了链路层和物理层协议-无线网卡 wifi在数据链路层中帧的协议 https://blog.csdn.net/l982817732/article/details/5227417 ...
- Windows内置系统账户Local system/Network service/Local Service
内置系统账户:Local system/Network service/Local Service 区别 [ LocalSystem 账户] LocalSystem是预设的拥有本机所有权限的本地 ...
- 车载网络: CAN (Control Area Network) 控制器局域网络
概述 CAN,全称 控制器局域网络 (Controller Area Network, CAN),是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为 国际标准(ISO 11898) ...
- CAN(Controller Area Network)网络通信简介
CAN(Controller Area Network)网络是一种广泛应用于工业控制和汽车电子等领域的串行通信协议.以下是CAN网络的常见知识点: 数据帧结构:CAN网络采用异步传输,每个数据帧包括标 ...
最新文章
- HashMap数据类型使用注意-不能使用基本数据类型
- 第一个Node.js实例
- 女司机撞上劳斯莱斯不用赔,多亏她车牌上的一个字救了她
- 女朋友还是游戏?一起来分析下游戏的开发与销售情况!
- C++编译出现binding ‘const string {aka const std::__cxx11::basic_string<char>}’ to reference of type ‘std
- Linux历史,安装,分区,版本
- jison解析Cube信息 存入又读取出来
- NB-IOT(1)---NB-IoT移远BC95调试
- 90后互联网打工人:为了买小两居,爸妈打零工帮我凑首付
- Vue+Vue Router+Vuex页面演示
- ACCESS中执行sql语句
- sed个人习惯用法总结
- theano 编程技巧
- Lotus中Form与Document的区别
- 计算机软件系统的三个层次,计算机软硬件系统
- php收付同分账,php微信分账功能 —— app支付
- 护肤品html作业,聚美优品美容产品热点.html
- 乐乐课堂_leleketang.com
- window电脑 休眠后无法唤醒 解决办法
- 硬件防火墙和软件防火墙有什么区别
热门文章
- 【必看】如何在 Linux 上恢复误删除的文件或目录
- 第 19 课时:调度器的调度流程和算法介绍(木苏)
- 函数计算支持 MySQL 实例绑定
- 云原生生态周报 Vol. 13 | Forrester 发布企业级容器平台报告
- 手机控件查看工具uiautomatorviewer
- android动画封装,Android属性动画封装,快速构建动画
- python心得体会300字_有没有简单一点的 Python 小例子或小项目?
- pcie协议_PCIE系统标准体系结构解读(一)
- 等参元八节点matlab,四边形八节点等参元matlab程序
- mysql 逻辑型_17. 逻辑运算符