• 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(jle P))Query i j表示询问(f_i(j))的值((1le 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\%)的数据:(Mle 100)
    对于(30\%)的数据:(Qle 400)
    对于(50\%)的数据:(Nle 10)
    对于(70\%)的数据:(Nle 100)
    对于(100\%)的数据:(N,M,Qle 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
    ", 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
    ", 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(jle P))Query i j表示询问(f_i(j))的值((1le M)),由于答案可能会很大,给我 mod P后的答案即可,(P=1,000,000,007)。”

  • 相关阅读:
    boost库的使用介绍
    《架构实战软件架构设计的过程》
    常用开发命令
    《项目管理最佳实践案例剖析》
    From Live Writer
    希望实现的程序
    正在进行调试的Web服务器进程已由Internet信息服务(IIS)终止。可以通过在IIS中配置应用程序池Ping设置来避免这一问题。有关更多详细信息,请参见“帮助”
    请确保此代码文件中定义的类与“inherits”属性匹配
    更改IE默认源代码编辑器
    MS的.net源码地址
  • 原文地址:https://www.cnblogs.com/pfypfy/p/9079376.html
Copyright © 2020-2023  润新知