简化版题面

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 jQuery 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——前缀!的更多相关文章

  1. 20180523模拟赛T1——前缀?

    (a.cpp/c/pas) Time Limit:1 Sec Memory Limit:128 MB 简化版题意 jyt毒瘤,写了超长的题面,要看完整题面的翻到最后-- 老太太认为一个长度为 N 的仅 ...

  2. 模拟赛T2 交换 解题报告

    模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...

  3. 【2019.8.15 慈溪模拟赛 T2】组合数(binom)(卢卡斯定理+高维前缀和)

    卢卡斯定理 题目中说到\(p\)是质数. 而此时要求组合数向质数取模的结果,就可以用卢卡斯定理: \[C_x^y=C_{x\ div\ p}^{y\ div\ p}\cdot C_{x\ mod\ p ...

  4. 【2019.8.12 慈溪模拟赛 T2】汪哥图(wang)(前缀和)

    森林 考虑到题目中给出条件两点间至多只有一条路径. 就可以发现,这是一个森林. 而森林有一个很有用的性质. 考虑对于一棵树,点数-边数=\(1\). 因此对于一个森林,点数-边数=连通块个数. 所以, ...

  5. 2019.11.11 模拟赛 T2 乘积求和

    昨天 ych 的膜你赛,这道题我 O ( n4 ) 暴力拿了 60 pts. 这道题的做法还挺妙的,我搞了将近一天呢qwq 题解 60 pts 根据题目给出的式子,四层 for 循环暴力枚举统计答案即 ...

  6. 20161003 NOIP 模拟赛 T2 解题报告

    Weed duyege的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹. 为了查出真相,duyege 准备修好电脑之后再进行一次金坷垃的模拟实验. 电脑上面有若干层金坷垃,每次只能在上面撒上一层高度为 ...

  7. NOIP欢乐模拟赛 T2 解题报告

    小澳的坐标系 (coordinate.cpp/c/pas) [题目描述] 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个 ...

  8. 神奇的NOIP模拟赛 T2 LGTB 学分块

    LGTB 学分块 LGTB 最近在学分块,但是他太菜了,分的块数量太多他就混乱了,所以只能分成3 块今天他得到了一个数组,他突然也想把它分块,他想知道,把这个数组分成3 块,块可以为空.假设3 块各自 ...

  9. 2018.02.12 noip模拟赛T2

    二兵的赌注 Description游戏中,二兵要进入了一家奇怪的赌场.赌场中有n个庄家,每个庄家都可以猜大猜小,猜一次一元钱.每一次开彩前,你都可以到任意个庄家那里下赌注.如果开彩结果是大,你就可以得 ...

随机推荐

  1. Linux内核device结构体分析

    1.前言 Linux内核中的设备驱动模型,是建立在sysfs设备文件系统和kobject上的,由总线(bus).设备(device).驱动(driver)和类(class)所组成的关系结构,在底层,L ...

  2. C/C++ 的编译和链接

    C/C++文件 C/C++程序文件包括 .h .c .hpp .cpp,其中源文件(.c .cpp)是基本的编译单元,头文件(.h .hpp)不会被编译器编译. C/C++项目构建(build)过程, ...

  3. DDR3(2):初始化

    调取 DDR3 IP核后,是不能直接进行读写测试的,必须先进行初始化操作,对 IP 核进行校验.本篇采用 Modelsim 软件配合 DDR3 IP核生成的仿真模型,搭建出 IP核的初始化过程. 一. ...

  4. FRP represents an intersection of two programming paradigms.

    FRP represents an intersection of two programming paradigms. Functional programming Functional progr ...

  5. UDP比TCP好用的优势

    网络带宽环境变好 在2007年至2015年间,网络的带宽飞速发展,从1.5Mbps的带宽增加到5.1Mbps的带宽,足足增加了4倍,网络环境快速.稳定,所以UDP的丢包率 下降至5%以下,越来越好的网 ...

  6. python环境安装及其就业状况

    一,下载及安装 1.进入官网下载 2.安装 二,就业前景 1.Python就业行情和前景分析之一 岗位数量 2..Python就业行情和前景分析之一 学历要求 3.工资状况

  7. php 逻辑题

    越长大约发现,高中学的数学,都还给了数学老师,一点都没有留住. 最近遇到了一个 逻辑题,然后想了半天,后来做出来了,我就发现了,我可能是一个假的理科生.很简单的样子. 废话不说,看看这道题吧. /** ...

  8. asp获取access数据库中的一条随机记录

    针对“用一条SQL得到数据库中的随机记录集”问题在网上已经有很多答案了: SQL Server 2000: SELECT TOP n * FROM tanblename ORDER BY NEWID( ...

  9. 通过Ldap实现人事系统组织人事和AD的同步

    项目需求:同步人事系统的组织架构-对应AD的OU树同步人事系统的员工-对应AD的用户 创建OU 名字不能重复,需要父级路径(parentOrganizeUnit)以及新ou的名字(name),如果最父 ...

  10. Linux环境下:vmware安装Windows报错误-缺少所需的CD/DVD驱动器设备驱动程序

    解决方法:将硬盘格式从SCSI改为IDE. 方法如下: 右键点击你新建的虚拟机名,点击最下面的setting,看到左侧第二行是hard disk 了么,你那里肯定是SCSI的,选中它,点最下面的rem ...