P5239 回忆京都(洛谷3月月赛T2)
题目描述
射命丸文在取材中发现了一个好玩的东西,叫做组合数。
组合数的定义如下:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合。所有组合的数量,就是组合数。
$\sum_{i=1}^n \sum_{j=1}^m C^i_j$,其中当i>j的时候,钦定$C^i_j$为0
她也很快就算出来了,不过对自己的答案不是很充满信心,因此你决定帮助她。然而没事找事的她一下子算了q次对于不同的n,m的结果,因此这只能劳烦你了。由于你不打算真正地帮助她,你无需把答案对998244353取模,也无需对64123取模,只要告诉她对取模之后的答案即可。
输入输出格式
输入格式:
第一行输入一个q,表示有q次询问。
第二行开始,一共q行,每行两个数字n,m,意思如题所示。
输出格式:
一共q行,对于每一个询问,都输出一个答案。
数据范围:n,m<=1000
solution
容易想到预处理出杨辉三角, c[i][j]表示$c^j_i$ %mod,递推公式是c[i][j]=c[i-1][j]+c[i-1][j-1],注意处理c[i][0]=1;
这样每次询问是O(nm),总的时间复杂度是O(qnm),TLE3个点,需要优化
通过模拟发现,题目中要求的数的和实际上在杨辉三角中是一个矩形的区域,也就是右下角下标为c[m][n]
例如,当m=4,n=3时,就是矩形区域的和,所以只需要维护一个二维前缀和就行了

一个大坑:当预处理二维前缀和时因为经过了取模,所以容易出现新的前缀和为负数的情况,而我们希望得到的一定是个正数,所以每一项s[i][j]=(s[i][j]+mod)%mod;
因为这个坑WA了三个
code
#include<cstdio>
#include<iostream>
#include<cstring>
#define mod 19260817//咳咳
#define maxn 1020
using namespace std;
long long s[maxn][maxn],ts[maxn][maxn];
int n,m,t,x,ans,tmp;
void init(int n)
{
for(int i=;i<=n;++i)
{
s[i][]=;
}
for(int i=;i<=n;++i)
{
for(int j=;j<=n;++j)
{
if(j<=i) s[i][j]=(s[i-][j]+s[i-][j-])%mod;//杨辉三角 ts[i][j]=(ts[i-][j]+ts[i][j-]-ts[i-][j-]+s[i][j]+mod/*关键*/)%mod;//二维前缀和
} } }
int main()
{
scanf("%d",&t);
init();//预处理杨辉三角与前缀和
for(int k=;k<=t;++k)
{
scanf("%d%d",&n,&m);
printf("%lld\n",ts[m][n]);
}
return ;
}
P5239 回忆京都(洛谷3月月赛T2)的更多相关文章
- 「P4994」「洛谷11月月赛」 终于结束的起点(枚举
题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NO ...
- 洛谷4月月赛R2
洛谷4月月赛R2 打酱油... A.koishi的数学题 线性筛约数和就可以\(O(N)\)了... #include <iostream> #include <cstdio> ...
- 洛谷3月月赛 R1 Step! ZERO to ONE
洛谷3月月赛 R1 Step! ZERO to ONE 普及组难度 290.25/310滚粗 t1 10分的日语翻译题....太难了不会... t2 真·普及组.略 注意长为1的情况 #include ...
- 【洛谷5月月赛】玩游戏(NTT,生成函数)
[洛谷5月月赛]玩游戏(NTT,生成函数) 题面 Luogu 题解 看一下要求的是什么东西 \((a_x+b_y)^i\)的期望.期望显然是所有答案和的平均数. 所以求出所有的答案就在乘一个逆元就好了 ...
- 【LGR-054】洛谷10月月赛II
[LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...
- 【LGR-051】洛谷9月月赛
[LGR-051]洛谷9月月赛 luogu 签到题 description 给出\(K\)和质数\(m\),求最小的\(N\)使得\(111....1\)(\(N\)个\(1\))\(\equiv k ...
- 「LGR-049」洛谷7月月赛 D.Beautiful Pair
「LGR-049」洛谷7月月赛 D.Beautiful Pair 题目大意 : 给出长度为 \(n\) 的序列,求满足 \(i \leq j\) 且 $a_i \times a_j \leq \max ...
- 洛谷9月月赛round2
洛谷9月月赛2 t1 题意:懒得说了 分析:模拟 代码: program flag; var a:..,..]of char; n,i,m,j,x,y,ans,k:longint; begin ass ...
- 「P4996」「洛谷11月月赛」 咕咕咕(数论
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
随机推荐
- 【Java基础】【07面向对象-构造方法&静态static】
07.01_面向对象(构造方法Constructor概述和格式)(掌握) A:构造方法概述和作用 给对象的数据(属性)进行初始化 B:构造方法格式特点 a:方法名与类名相同(大小也要与类名一致) b: ...
- 【Java基础】【01初识Java】
01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代 ...
- 简单的SQL注入之3
Topic Link http://ctf5.shiyanbar.com/web/index_3.php 1)测试正确值submit:1 测试目标和对象要明确: 2)单引号测试(判断存在字符型注入&a ...
- Android单个控件占父控件宽度一半且水平居中
前些天,在工作中遇到了一个需求:一个“加载上一页”的按钮宽度为父控件宽度一半,且水平居中于父控件中. 在此给出两种思路: 1.直接在Activity代码中获取到当前父控件的宽度,并将此按钮宽度值设置成 ...
- 你需要一点点CIL
1.当我们程序集中有大量反射的时候,性能往往会下降很快.我们目的很明确 如何解决反射造成的这些影响,其中之一个正确且高逼格的做法是 使用 CIL指令去实现.如何实现需要我们拥有若干基础知识.知道 CI ...
- [angularjs] AngularJs 知识回顾
AngularJs 知识回顾 简介 1.通过指令扩展了 HTML,通过表达式绑定数据到 HTML: 2.一个 Js 框架: 3.指令: 通过被称为 指令 的新属性来扩展 HTML, 即为应用添加新功能 ...
- [PHP] assert()断言检测函数
assert_options函数 设置断言的参数 assert 函数 ,检测一个断言 <?php // 激活断言,并设置它为 quiet assert_options(ASSERT_ACTIVE ...
- C# 实现对PPT插入、编辑、删除表格
现代学习和办公当中,经常会接触到对表格的运用,像各种单据.报表.账户等等.在PPT演示文稿中同样不可避免的应用到各种数据表格.对于在PPT中插入表格,我发现了一个新方法,不过我用到了一款免费的.NET ...
- Java开发笔记(二十二)神奇的冒号
Java中的标点符号主要有两类用途,一类是运算符,包括加号+.减号-.乘号*.除号/.取余号%.等号=.大于号>.小于号<.与号&.或号|.非号!.异或号^等等,另一类则是分隔符, ...
- nginx系列3:搭建一个静态资源web服务器
搭建静态资源web服务器 1,创建静态页面 在nginx的安装目录(/usr/local/nginx)下创建文件夹webapplications/helloworld,然后创建一个名为index.ht ...