【GDOI2014模拟】网格
题目
某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标为B(n, m),其中n >= m。现在从A(0, 0)点出发,只能沿着街道向正右方或者正上方行走,且不能经过图示中直线左上方的点,即任何途径的点(x, y)都要满足x >= y,请问在这些前提下,到达B(n, m)有多少种走法。
分析
首先,我们知道:如果现在从(0, 0)点出发,只能沿着街道向正右方或者正上方行走时,到(n,m)点(n>=m)的方案数是\(C^{m}_{n+m}\)。
发现,任何途径的点(x, y)都要满足x>=y就是不经过粉色线x=y+1
有一条违法的路径:
我们把路径按照粉色线做个对称,
我们发现,到橙色点的路径都一一对应每一条违法路径,也就是说,违法路径的方案数就是到橙色点的方案数。
所以,合法方案数=随便走的方案数-违法方案数=\(C^{m}_{n+m}-C^{m-1}_{n+m}\)
注意:如果直接算可能会超时,要把式子简化,而且高精度要压位。
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxlongint=2147483647;
const int mo=10000;
using namespace std;
int f[20000],n,m,g[20000];
inline int times(int x)
{
memcpy(g,f,sizeof(g));
f[1]=0;
f[0]=g[0]+4;
for(int i=1;i<=f[0];i++)
{
f[i]+=g[i]*x;
f[i+1]=f[i]/mo;
f[i]-=f[i+1]*mo;
}
while(!f[f[0]] && f[0]>1)
f[0]--;
}
inline int div(int x)
{
memcpy(g,f,sizeof(g));
int k=0;
for(int i=g[0];i>=1;i--)
{
f[i]=(k*mo+g[i])/x;
k=(k*mo+g[i])-x*f[i];
}
f[0]=g[0];
while(!f[f[0]] && f[0]>1)
f[0]--;
}
int main()
{
scanf("%d%d",&n,&m);
f[0]=1;
f[1]=1;
int j=2;
for(int i=n+2;i<=n+m;i++)
{
if(j<=m)
{
if(i%j==0)
{
times(i/j);
j++;
}
else
times(i);
}
}
times(n+1-m);
for(int i=j;i<=m;i++)
{
div(i);
}
for(int i=f[0];i>=1;i--)
{
if(f[0]!=i)
printf("%04d",f[i]);
else
printf("%d",f[i]);
}
}
【GDOI2014模拟】网格的更多相关文章
- 【GDOI2014模拟】JZOJ2020年8月14日T2 网格
[GDOI2014模拟]JZOJ2020年8月14日T2 网格 题目 Time and Memory Limits Description 某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标 ...
- 【GDOI2014模拟】JZOJ2020年8月14日提高组 服务器
[GDOI2014模拟]JZOJ2020年8月14日提高组 服务器 题目 Time and Memory Limits Description 我们需要将一个文件复制到n个服务器上,这些服务器的编号为 ...
- jzoj 3431. 【GDOI2014模拟】网格
Description 某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标为B(n, m),其中n >= m.现在从A(0, 0)点出发,只能沿着街道向正右方或者正上方行走,且不能经过 ...
- GDOI2014模拟pty爬山(mountain)
pty爬山(mountain) 在Pty学校附近,有一座名之为岳之麓的高山.Pty很喜欢和(哔--)一起爬山.山的平面模型如下:山由一个顶点集:A1,A2-An给定,保证Ai的x单调递增.我们将Ai和 ...
- GDOI2014模拟 旅行【SPFA】
旅行(travel) 从前有一位旅者,他想要游遍天下所有的景点.这一天他来到了一个神奇的王国:在这片土地上,有n个城市,从1到n进行编号.王国中有m条道路,第i条道路连接着两个城市ai,bi,由于年代 ...
- 【GDOI2014模拟】服务器
前言 直到比赛最后几分钟,才发现60%数据居然是一个水dp,结果没打完. 题目 我们需要将一个文件复制到n个服务器上,这些服务器的编号为S1, S2, -, Sn. 首先,我们可以选择一些服务器,直接 ...
- 【GDOI2014模拟】Tree
题目 Wayne 在玩儿一个很有趣的游戏.在游戏中,Wayne 建造了N 个城市,现在他想在这些城市间修一些公路,当然并不是任意两个城市间都能修,为了道路系统的美观,一共只有M 对城市间能修公路,即有 ...
- 【GDOI2014模拟】雨天的尾巴
题目 深绘里一直很讨厌雨天. 灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切. 虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连 根拔起,以及田地里 ...
- [JZOJ3400] 【GDOI2014模拟】旅行
题目 题目大意 给你一个图,让你选择权值和最小的边,使得\(1\)和\(n\),\(2\)和\(n-1\),--,\(K\)和\(n-K+1\)联通. \(K\leq 4\) 思考历程 一看到这题就觉 ...
随机推荐
- Vue项目移动端滚动穿透问题
概述 今天在做 Vue 移动端项目的时候遇到了滚动穿透问题,在网上查资料后,选取了我觉得最好的方法,记录下来供以后开发时参考,相信对其他人也有用. 上层无需滚动 如果上层无需滚动的话,直接屏蔽上层的 ...
- 分布式任务队列 Celery —— 详解工作流
目录 目录 前文列表 前言 任务签名 signature 偏函数 回调函数 Celery 工作流 group 任务组 chain 任务链 chord 复合任务 chunks 任务块 mapstarma ...
- 数据科学家人才危机现象,是FOMO还是Silver?
数据科学家人才危机现象,是FOMO还是Silver? 数据科学家的人才短缺和薪水高涨已经达到了顶板,未来还会持续下去吗? 在过去几年中,高级分析(#大数据#分析)空间一直经历着严重的FOMO(害怕错过 ...
- 【Linux开发】【Qt开发】配置tslibs触摸屏库环境设置调试对应的设备挂载点
[Linux开发][Qt开发]配置tslibs触摸屏库环境设置调试对应的设备挂载点 标签(空格分隔): [Linux开发] [Qt开发] 比如: cat /dev/input/mice cat /de ...
- Git 创建分支并合并主分支
首先,我们创建dev分支,然后切换到dev分支: $ git checkout -b dev(等价于 $ git branch dev $ git checkout dev ) Switched to ...
- Linux系统常用命令之top
top - 06:58:37 up 7 days, 23:36, 2 users, load average: 0.00, 0.01, 0.05Tasks: 716 total, 1 running, ...
- 深入理解Linux-hostname
当我觉得对Linux系统下修改hostname已经非常熟悉的时候,今天碰到了几个个问题,这几个问题给我好好上了一课,很多知识点,当你觉得你已经掌握的时候,其实你了解的还只是皮毛.技术活,切勿浅尝则止! ...
- MySql-Mysql技术内幕~SQL编程学习笔记(N)
1._rowid 类似Oracle的rowid mysql> ; +-------+----+----------------+-------------+---------------+--- ...
- HTML中button标签点击实现页面跳转
方法1:使用onclick事件 <input type="button" value="按钮" onclick="javascrtpt:wind ...
- JS的for循环包裹异步函数的问题
有个循环,循环一个异步回调,为啥回调引用的循环值都是最后一步循环的循环值?然后,又有些时候无论什么循环值都得不到? var arr = [1,3,5,7,9]; var arrLength = arr ...