【GDOI2014模拟】JZOJ2020年8月14日T2 网格
【GDOI2014模拟】JZOJ2020年8月14日T2 网格
题目
Time and Memory Limits
Description
某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标为B(n, m),其中n >= m。现在从A(0, 0)点出发,只能沿着街道向正右方或者正上方行走,且不能经过图示中直线左上方的点,即任何途径的点(x, y)都要满足x >= y,请问在这些前提下,到达B(n, m)有多少种走法。
Input
输入文件中仅有一行,包含两个整数n和m,表示城市街区的规模。
Output
输出文件中仅有一个整数和一个换行/回车符,表示不同的方案总数。
Sample Input
输入1:
6 6
输入2:
5 3
Sample Output
输出1:
132
输出2:
28
Data Constraint
50%的数据中,n = m,在另外的50%数据中,有30%的数据:1 <= m < n <= 100
100%的数据中,1 <= m <= n <= 5 000
题解
题意
给出一个笛卡尔坐标系
问在满足任何途径的点\((x,y)\)都满足\(x≥y\)的情况下,从\((0,0)\)走到\((n,m)\)有多少种走法
分析
注意到\(n,m\)都是5000的,而且空间很小
普通的\(n*m\)暴力\(DP\)不可以
发现有个要求
找规律发现
\]
那么高精度安排即可
但是又要打减、乘、除,十分麻烦
尝试化简
设\(a=n+m\),\(b=m\)
\]
那么就可以质因数分解然后相乘即可
Code
#include<bits/stdc++.h>
#define rg register
using namespace std;
long long n,m,x,tot[100005],ans[1000005];
bool b[100005];
inline long long read()
{
long long res=0;char ch;
ch=getchar();
while (ch<'0'||ch>'9') ch=getchar();
while (ch>='0'&&ch<='9')
{
res=(res<<1)+(res<<3)+(ch-'0');
ch=getchar();
}
return res;
}
int main()
{
n=read();m=read();
memset(b,true,sizeof(b));
b[1]=false;
for (rg long long i=2;i<=100005;i++)
for (rg long long j=2;j*i<=100005;j++)
b[i*j]=false;
x=n+1-m;
for (rg long long i=2;i*i<=x;i++)
{
if (b[i]==true&&x%i==0)
{
while (x%i==0)
{
tot[i]++;
x/=i;
}
}
}
if (x>1) tot[x]++;
for (rg long long j=2;j<=n+m;j++)
{
long long k=j;
for (rg long long i=2;i*i<=k;i++)
{
if (b[i]==true&&k%i==0)
{
while (k%i==0)
{
tot[i]++;
k/=i;
}
}
}
if (k>1) tot[k]++;
}
for (rg long long j=2;j<=m;j++)
{
long long k=j;
for (rg long long i=2;i*i<=k;i++)
{
if (b[i]==true&&k%i==0)
{
while (k%i==0)
{
tot[i]--;
k/=i;
}
}
}
if (k>1) tot[k]--;
}
for (rg long long j=2;j<=n+1;j++)
{
long long k=j;
for (rg long long i=2;i*i<=k;i++)
{
if (b[i]==true&&k%i==0)
{
while (k%i==0)
{
tot[i]--;
k/=i;
}
}
}
if (k>1) tot[k]--;
}
ans[0]=1;
ans[1]=1;
for (rg long long i=1;i<=100000;i++)
{
if (b[i]==true&&tot[i]>0)
{
for (rg long long j=1;j<=tot[i];j++)
{
for (rg long long k=1;k<=ans[0];k++)
ans[k]*=i;
x=0;
for (rg long long k=1;k<=ans[0];k++)
{
ans[k]+=x;
x=ans[k]/10;
ans[k]%=10;
}
ans[ans[0]+1]=x;
while (ans[ans[0]+1])
{
ans[0]++;
ans[ans[0]+1]=ans[ans[0]]/10;
ans[ans[0]]%=10;
}
}
}
}
for (rg long long i=ans[0];i>=1;i--)
printf("%lld",ans[i]);
return 0;
}
【GDOI2014模拟】JZOJ2020年8月14日T2 网格的更多相关文章
- 【GDOI2014模拟】JZOJ2020年8月14日提高组 服务器
[GDOI2014模拟]JZOJ2020年8月14日提高组 服务器 题目 Time and Memory Limits Description 我们需要将一个文件复制到n个服务器上,这些服务器的编号为 ...
- JZOJ2020年8月14日提高组反思
JZOJ2020年8月14日提高组反思 T1 看到题 一脸:我是谁,我在哪,我要干啥 看到字符串凉一半 还有查询修改 想到线段树但不会建模 暴力安排 T2 一开始觉得:水题 然后啪啪打脸 空间小,数据 ...
- 【NOIP2012模拟8.7】JZOJ2020年8月8日提高组T1 奶牛编号
[NOIP2012模拟8.7]JZOJ2020年8月8日提高组T1 奶牛编号 题目 作为一个神秘的电脑高手,Farmer John 用二进制数字标识他的奶牛. 然而,他有点迷信,标识奶牛用的二进制数字 ...
- 【NOIP2015模拟11.4】JZOJ2020年8月6日提高组T2 最优交换
[NOIP2015模拟11.4]JZOJ2020年8月6日提高组T2 最优交换 题目 题解 题意 有一个长度为\(n\)的正整数 最多可以进行\(k\)次操作 每次操作交换相邻两个位置上的数 问可以得 ...
- 5月14日 绿城育华NOIP巨石杯试卷解析
[题外话] 感谢UBUNTU为保存程序做出贡献:https://paste.ubuntu.com : 感谢洛谷OJ的私人题库保存题面:https://www.luogu.org : 现在我的题解的所有 ...
- 【SHOI2008】JZOJ2020年9月5日提高组 循环的债务
CSP-2020倒计时:36天 [SHOI2008]JZOJ2020年9月5日提高组 循环的债务 题目 Description Alice.Bob和Cynthia总是为他们之间混乱的债务而烦恼,终于有 ...
- JZOJ2020年9月5日提高组反思
JZOJ2020年9月5日提高组反思 T1 考试的时候没有头绪,就打了个暴力,愉快的拿到了10分的\(impossible\) 正解是\(DP\),设\(f[i][j][k]\)表示地\(i\)种币值 ...
- 【GDOI2007】JZOJ2020年8月10日提高组T1 夏娜的菠萝包
[GDOI2007]JZOJ2020年8月10日提高组T1 夏娜的菠萝包 题目 Description 夏娜很喜欢吃菠萝包,她的经纪人RC每半个月就要为她安排接下来的菠萝包计划.今天是7月份,RC又要 ...
- JZOJ2020年8月7日提高组反思
JZOJ2020年8月7日提高组反思 T1 暴力枚举 枚举起点和\(p\) 然后就 过了?! 根据本人不严谨的推算 时间复杂度\(O(\dfrac{n^7}{4})\) 数据太水就过去了QAQ T2 ...
随机推荐
- mysql 快速清除数据表数据
mysql> truncate tables; 例如: mysql> truncate email_managements;
- vscode实现远程linux服务器上Python开发
最近需要训练一个生成对抗网络模型,然后开发接口,不得不在一台有显卡的远程linux服务器上进行,所以,趁着这个机会研究了下怎么使用vscode来进行远程开发. 1 配置免密登录¶ (1)在 ...
- 直播软件开发关于Android、iOS中的视频采集步骤
很多人对直播软件开发还是抱有想法的,但是在这个资本冷静的市场下,直播平台该怎么玩,在直播软件开发过程中哪些功能是必须具备的,这都是值得关注的话题.今天我们给大家分享一份详细的直播软件开发关于Andro ...
- leetcode4:sort-list
题目描述 在O(n log n)的时间内使用常数级空间复杂度对链表进行排序. Sort a linked list in O(n log n) time using constant space co ...
- 认识Redis集群——Redis Cluster
前言 Redis集群分三种模式:主从模式.sentinel模式.Redis Cluster.之前没有好好的全面理解Redis集群,特别是Redis Cluster,以为这就是redis集群的英文表达啊 ...
- oracle的迁移工作
1.创建新数据库用户 1).创建用户和分配权限 sqlplus / as sysdba create user ENFRC_TEST_GZ_TMP identified by ENFRC_TEST_G ...
- com.aliyun.oss.ClientException: Connection error due to: Connection pool shut down
com.aliyun.oss.ClientException: Connection error due to: Connection pool shut down[ErrorCode]: Unkno ...
- Vue 组件化开发
组件化开发 基本概念 在最开始的时候,已经大概的聊了聊Vue是单页面开发,用户总是在一个页面上进行操作,看到的不同内容也是由不同组件构成的. 通过用户的操作,Vue将会向用户展示某些组件,也会隐藏某些 ...
- 我要进大厂之大数据Hadoop HDFS知识点(1)
01 我们一起学大数据 老刘今天开始了大数据Hadoop知识点的复习,Hadoop包含三个模块,这次先分享出Hadoop中的HDFS模块的基础知识点,也算是对今天复习的内容进行一次总结,希望能够给想学 ...
- overflow:scroll
<div style="position: relative;"> <div class="container mycontent" styl ...