20180523模拟赛T2——前缀!
简化版题面
jyt毒瘤,写了超长的题面,要看完整题面的翻到最后……
定义\(f_0(x) = A_x\),\(f_n(x) = \sum^x_{i = 1} f_{n-1}(i)\)。给出长度为\(N\)的数组\(A\)(从\(1\)~\(n\)编号)和\(Q\)个操作。操作有两种:Add i j
表示将\(A_i\)的值加上\(j(j\le P)\);Query i j
表示询问\(f_i(j)\)的值\((1\le M)\),由于答案可能会很大, mod P
后的答案即可,\(P=1,000,000,007\)。
Input
第一行为三个正整数 N、M、Q。
第二行为 N 个非负整数,表示 A 数组。
接下来 Q 行,每行表示一个操作,Add i j
或Query i j
。
Output
输出有多行,每行表示\(f_i (j)\mod P\)。
Sample Input
4 4 4
1 1 1 1
Query 0 4
Query 4 3
Add 1 1
Query 3 2
Sample Output
1
15
7
Data Limitation
对于\(10\%\)的数据:\(M\le 100\)。
对于\(30\%\)的数据:\(Q\le 400\)。
对于\(50\%\)的数据:\(N\le 10\)。
对于\(70\%\)的数据:\(N\le 100\)。
对于\(100\%\)的数据:\(N,M,Q\le 4000\)。
题解
由\(f_n(x) = \sum^x_{i = 1}f_{n-1}(i) = f_{n-1}(i) + \sum^{x-1}_{i = 1}f_{n-1}(i) = f_{n-1}(i-1) + f_{n-1}(i)\)发现这类似于一个杨辉三角。于是我们可以把\(f_{n}(x)\)看成是\(f[n][x]\)。则易得\(f[i][j] = f[i-1][j-1] + f[i-1][j]\)。现在我们假设第一行(即\(f[0]\)是空的)。现在我们要在\(f[0][pla]\)中加入一个数,先假设加\(1\)。我们发现这就相当于是以\(f[1][pla]\)为\([1][1]\)点“贴”了一张杨辉三角,那么如果加了\(n\),就好像是“贴”了\(n\)张杨辉三角。
也就是说,加入的这个数对整张表的贡献就是这张杨辉三角。那么,对于任意一个位置\(f[i][j]\),我们可以枚举之前的点对其的贡献(也就是这个点的值乘以单位贡献),将所有能影响到的贡献加起来即可。
杨辉三角可以用组合数算,也可以直接\(n^2\)预处理出来。
注意一定要开long long
,否则会炸得很惨。
#include <cstdio>
#include <cctype>
#define int long long//一定要开long long!
const int maxn = 4005;
const int mod = 1e9+7;
int ans[maxn][maxn];
char ask[10];
int di[maxn];
#define dd c = getchar()
inline void read(int& x)
{
bool f = false;
x = 0;
char dd;
for(; !isdigit(c); dd)
if(c == '-')
f = true;
for(; isdigit(c); dd)
x = (x<<1) + (x<<3) + (c^48);
if(f) x = -x;
}
#undef dd
int n, m, q;
int yhsj[maxn][maxn];
inline void pre()//预处理杨辉三角
{
for(int i = 1; i <= n+3; ++i)
yhsj[1][i] = 1;
for(int i = 2; i <= m+3; ++i)
for(int j = 1; j <= n+3; ++j)
yhsj[i][j] = (yhsj[i-1][j] + yhsj[i][j-1]) % mod;
}
inline void Query(int ii, int jj)
{
if(!ii)
{
printf("%lld\n", di[jj]);
return;
}
int ans = 0;
for(int i = 1; i <= jj; ++i)
ans = (ans + di[i] * yhsj[ii][jj-i+1]) % mod;//第i点对其的贡献
printf("%lld\n", ans);
}
signed main()
{
#ifndef deb
freopen("b.in", "r", stdin);
freopen("b.out", "w", stdout);
#endif
read(n), read(m), read(q);
for(int i = 1; i <= n; ++i)
read(di[i]);
pre();
while(q--)
{
scanf("%s", ask);
int ta, tb;
read(ta), read(tb);
if(ask[0] == 'A')
di[ta] += tb;
else
Query(ta, tb);
}
#ifndef deb
fclose(stdin);
fclose(stdout);
#endif
return 0;
}
原题题面
黛黛方进入房时,只见两个人搀着一位鬓发如银的老母迎上来,黛黛便知是他外祖母。方欲拜见时,早被他外祖母一把搂入怀中,心肝儿肉叫着大哭起来。当下地下侍立之人,无不掩面涕泣,黛黛也哭个不住。一时众人慢慢解劝住了,黛黛见拜见了外祖母。
——此即冷子兴所云之史氏太君,贾赦贾政之母也。当下贾母一一指与黛黛:“这是你大舅母;这是你二舅母;这是你先珠大哥的媳妇珠大嫂子。”黛黛一一拜见过。贾母又说:“请姑娘们来。今日远客才来,可以不必上学去了。”众人答应了一声,便去了两个。
不一时,只见三个奶嬷嬷并五六个丫鬟,簇拥着三个姊妹来了。第一个肌肤微丰, 合中身材,腮凝新荔,鼻腻鹅脂,温柔沉默,观之可亲。第二个削肩细腰,长挑身材, 鸭蛋脸面,俊眼修眉,顾盼神飞,文彩精华,见之忘俗。第三个身量未足,形容尚小。其钗环裙袄,三人皆是一样的妆饰。黛黛忙起身迎上来见礼,互相厮认过,大家归了坐。丫鬟们斟上茶来。不过说些黛黛之母如何得病,如何请医服药,如何送死发丧。不免贾母又伤感起来,因说:“我这些儿女,所疼者独有你母,今日一旦先舍我而去,连面也不能一见,今见了你,我怎不伤心!”说着,搂了黛黛在怀,又呜咽起来。众人忙都宽慰解释,方略略止住。
众人见黛黛年貌虽小,其举止言谈不俗,身体面庞虽怯弱不胜,却有一段自然的风流态度,便知他有不足之症。因问:“常服何药,如何不急为疗治?”黛黛道:“我自来是如此,从会吃饮食时便吃药,到今日未断,请了多少名医修方配药,皆不见效。那一年我三岁时,听得说来了一个癞头和尚,说要化我去出家,我父母固是不从。他又说:
‘既舍不得他,但只怕他的病一生也不能好的。若要好时,除非从此以后总不许见哭声; 除了父母之外,凡有外姓亲友之人,一概不见,方可平安了此一世。’疯疯癫癫,说了这些不经之谈,也没人理他。如今还是吃人参养荣丸。”贾母道:“正好,我这里正配丸药呢。叫他们多配一料就是了。”
一语未了,只听后院中有人笑声,说:“我来迟了,不曾迎接远客!”黛黛纳罕道:
“这些人个个皆敛声屏气,恭肃严整如此,这来者系谁,这样放诞无礼?”心下想时,只见一群媳妇丫鬟围拥着一个人从后房门进来。这个人打扮与众姑娘不同,彩绣辉煌, 恍若神妃仙子:头上戴着金丝八宝攒珠髻,绾着朝阳五凤挂珠钗;项上带着赤金盘螭璎珞圈;裙边系着豆绿宫绦双鱼比目玫瑰佩;身上穿着缕金百蝶穿花大红洋缎窄裉袄,外罩五彩刻丝石青银鼠褂;下着翡翠撒花洋绉裙。一双丹凤三角眼,两弯柳叶吊梢眉,身量苗条,体格风骚,粉面含春威不露,丹唇未启笑先闻。黛黛连忙起身接见。贾母笑道:
“你不认得他。他是我们这里有名的一个泼皮破落户儿,南省俗谓作‘辣子’,你只叫他‘凤辣子’就是了。”黛黛正不知以何称呼,只见众姊妹都忙告诉他道:“这是琏嫂子。”黛黛虽不识,也曾听见母亲说过,大舅贾赦之子贾琏,娶的就是二舅母王氏之内侄女,自幼假充男儿教养的,学名王熙凤。黛黛忙陪笑见礼,以“嫂”呼之。这熙凤携着黛黛的手,上下细细打量了一回,仍送至贾母身边坐下,因笑道:“天下真有这样标致的人物,我今儿才算见了!况且这通身的气派,竟不像老祖宗的外孙女儿,竟是个嫡亲的孙女,怨不得老祖宗天天口头心头一时不忘。只可怜我这妹妹这样命苦,怎么姑妈偏就去世了!”说着,便用帕试泪。贾母笑道:“我才好了,你倒来招我。你妹妹远路才来,身子又弱,也才劝住了,快再休提前话。”这熙凤听了,忙转悲为喜道:“正是呢!我一见了妹妹,一心都在他身上了,又是喜欢,又是伤心,意忘记了老祖宗。该打, 该打!”又忙携黛黛之手,问;“妹妹几岁了?可也上过学?现吃什么药?在这里不要想家,想要什么吃的、什么玩的,只管告诉我;丫头老婆们不好了,也只管告诉我。” 一面又问婆子们:“黛姑娘的行李东西可搬进来了?带了几个人来?你们赶早打扫两间下房,让他们去歇歇。”那熙凤又问黛黛道:“我这有道题不知妹妹会不会做。”黛黛道:“且说。”熙凤笑道:“题目是这样的:
定义\(f_0(x) = A_x\),\(f_n(x) = \sum^x_{i = 1} f_{n-1}(i)\)。给出长度为\(N\)的数组\(A\)(从\(1\)~\(n\)编号)和\(Q\)个操作。操作有两种:Add i j
表示将\(A_i\)的值加上\(j(j\le P)\);Query i j
表示询问\(f_i(j)\)的值\((1\le M)\),由于答案可能会很大,给我 mod P
后的答案即可,\(P=1,000,000,007\)。”
20180523模拟赛T2——前缀!的更多相关文章
- 20180523模拟赛T1——前缀?
(a.cpp/c/pas) Time Limit:1 Sec Memory Limit:128 MB 简化版题意 jyt毒瘤,写了超长的题面,要看完整题面的翻到最后-- 老太太认为一个长度为 N 的仅 ...
- 模拟赛T2 交换 解题报告
模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...
- 【2019.8.15 慈溪模拟赛 T2】组合数(binom)(卢卡斯定理+高维前缀和)
卢卡斯定理 题目中说到\(p\)是质数. 而此时要求组合数向质数取模的结果,就可以用卢卡斯定理: \[C_x^y=C_{x\ div\ p}^{y\ div\ p}\cdot C_{x\ mod\ p ...
- 【2019.8.12 慈溪模拟赛 T2】汪哥图(wang)(前缀和)
森林 考虑到题目中给出条件两点间至多只有一条路径. 就可以发现,这是一个森林. 而森林有一个很有用的性质. 考虑对于一棵树,点数-边数=\(1\). 因此对于一个森林,点数-边数=连通块个数. 所以, ...
- 2019.11.11 模拟赛 T2 乘积求和
昨天 ych 的膜你赛,这道题我 O ( n4 ) 暴力拿了 60 pts. 这道题的做法还挺妙的,我搞了将近一天呢qwq 题解 60 pts 根据题目给出的式子,四层 for 循环暴力枚举统计答案即 ...
- 20161003 NOIP 模拟赛 T2 解题报告
Weed duyege的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹. 为了查出真相,duyege 准备修好电脑之后再进行一次金坷垃的模拟实验. 电脑上面有若干层金坷垃,每次只能在上面撒上一层高度为 ...
- NOIP欢乐模拟赛 T2 解题报告
小澳的坐标系 (coordinate.cpp/c/pas) [题目描述] 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个 ...
- 神奇的NOIP模拟赛 T2 LGTB 学分块
LGTB 学分块 LGTB 最近在学分块,但是他太菜了,分的块数量太多他就混乱了,所以只能分成3 块今天他得到了一个数组,他突然也想把它分块,他想知道,把这个数组分成3 块,块可以为空.假设3 块各自 ...
- 2018.02.12 noip模拟赛T2
二兵的赌注 Description游戏中,二兵要进入了一家奇怪的赌场.赌场中有n个庄家,每个庄家都可以猜大猜小,猜一次一元钱.每一次开彩前,你都可以到任意个庄家那里下赌注.如果开彩结果是大,你就可以得 ...
随机推荐
- Linux内核device结构体分析
1.前言 Linux内核中的设备驱动模型,是建立在sysfs设备文件系统和kobject上的,由总线(bus).设备(device).驱动(driver)和类(class)所组成的关系结构,在底层,L ...
- C/C++ 的编译和链接
C/C++文件 C/C++程序文件包括 .h .c .hpp .cpp,其中源文件(.c .cpp)是基本的编译单元,头文件(.h .hpp)不会被编译器编译. C/C++项目构建(build)过程, ...
- DDR3(2):初始化
调取 DDR3 IP核后,是不能直接进行读写测试的,必须先进行初始化操作,对 IP 核进行校验.本篇采用 Modelsim 软件配合 DDR3 IP核生成的仿真模型,搭建出 IP核的初始化过程. 一. ...
- FRP represents an intersection of two programming paradigms.
FRP represents an intersection of two programming paradigms. Functional programming Functional progr ...
- UDP比TCP好用的优势
网络带宽环境变好 在2007年至2015年间,网络的带宽飞速发展,从1.5Mbps的带宽增加到5.1Mbps的带宽,足足增加了4倍,网络环境快速.稳定,所以UDP的丢包率 下降至5%以下,越来越好的网 ...
- python环境安装及其就业状况
一,下载及安装 1.进入官网下载 2.安装 二,就业前景 1.Python就业行情和前景分析之一 岗位数量 2..Python就业行情和前景分析之一 学历要求 3.工资状况
- php 逻辑题
越长大约发现,高中学的数学,都还给了数学老师,一点都没有留住. 最近遇到了一个 逻辑题,然后想了半天,后来做出来了,我就发现了,我可能是一个假的理科生.很简单的样子. 废话不说,看看这道题吧. /** ...
- asp获取access数据库中的一条随机记录
针对“用一条SQL得到数据库中的随机记录集”问题在网上已经有很多答案了: SQL Server 2000: SELECT TOP n * FROM tanblename ORDER BY NEWID( ...
- 通过Ldap实现人事系统组织人事和AD的同步
项目需求:同步人事系统的组织架构-对应AD的OU树同步人事系统的员工-对应AD的用户 创建OU 名字不能重复,需要父级路径(parentOrganizeUnit)以及新ou的名字(name),如果最父 ...
- Linux环境下:vmware安装Windows报错误-缺少所需的CD/DVD驱动器设备驱动程序
解决方法:将硬盘格式从SCSI改为IDE. 方法如下: 右键点击你新建的虚拟机名,点击最下面的setting,看到左侧第二行是hard disk 了么,你那里肯定是SCSI的,选中它,点最下面的rem ...