hihoCoder 1116 计算 (线段树)】的更多相关文章

题意 : 描述 现在有一个有n个元素的数组a1, a2, ..., an. 记f(i, j) = ai * ai+1 * ... * aj. 初始时,a1 = a2 = ... = an = 0,每次我会修改一个ai的值,你需要实时反馈给我 ∑f(i, j) (1 <= i <= j <= n) 的值 mod 10007. 输入 第一行包含两个数n(1<=n<=100000)和q(1<=q<=500000). 接下来q行,每行包含两个数i, x,代表我把ai的值改…
http://hihocoder.com/problemset/problem/1116 题意: 思路: 用线段树解决,每个节点需要设置4个变量,sum记录答案,all记录整个区间的乘积,pre记录该区间内所有前缀的和,suf记录该区间内所有后缀的和. 举个例子,比如现在要合并{a,b,c,d}和{x,y,z,w}这两个区间,那么新增的答案有哪些呢? 有abcdx(省去乘号),abcdxy,abcdxyz,abcdxyzw,bcdxyzw,cdxyzw,dxyzw.这些就是{a,b,c,d}的所…
题目大意:线段树的区间更改与查询,但是涉及到两种区间修改方式,一是给区间中的数全部加上一个数,二是将一个区间全部置为同一个数,然后询问整个区间和. 题目分析:处理好set操作和add操作的先后顺序就OK了. 代码如下: # include<iostream> # include<cstdio> # include<cstring> # include<algorithm> using namespace std; const int N=100001; in…
题意 题目链接 Sol TJOI怎么全是板子题 对时间开个线段树,然后就随便做了.... #include<bits/stdc++.h> using namespace std; const int MAXN = 1e6 + 10; int mod; template<typename A, typename B> inline A mul(A x, B y) { return 1ll * x * y % mod; } inline int read() { char c = ge…
Description 小豆现在有一个数x,初始值为1. 小豆有Q次操作,操作有两种类型:  1 m: x = x  *  m ,输出 x%mod; 2 pos: x = x /  第pos次操作所乘的数(保证第pos次操作一定为类型1,对于每一个类型1 的操作至多会被除一次),输出x%mod Input 一共有t组输入(t ≤ 5) 对于每一组输入,第一行是两个数字Q, mod(Q ≤ 100000, mod  ≤ 1000000000);  接下来Q行,每一行为操作类型op,操作编号或所乘的…
---题面--- 题解: ,,,考场上看到这题,没想到竟然是省选原题QAQ,考场上把它当数学题想了好久,因为不知道怎么处理有些数没有逆元的问题....知道这是线段树后恍然大悟. 首先可以一开始就建出一个长度为n的操作序列,初始值都是1,表示一开始默认是1乘上n个1,因为乘1也就相当于没乘. 对于操作1,直接将操作序列上对应的位置单点修改为给定值,维护区间乘积. 对于操作2,将序列上对应位置单点修改为1. 查询直接查询线段树的根即可. #include<bits/stdc++.h> using…
题意:有一块宣传栏,高一定,给出长度,再给出多张海报的张贴位置,问还能见到几张海报(哪怕有一点被看到)?假设海报的高于宣传栏同高. 思路:问题转成“给出x轴上长为L的一条线段,再用n条线段进行覆盖上去,最后还能看到及条线”.长度是0~L,即长度是L,进行离散化的时候,应该用1~L,每个数字表示一个单位长.还有就是按照提示所给的信息实现即可.步骤如下: (1)保存n个数据,做成pair,并将所有出现过的数字在另外找地方排序,去掉重复的,再将数据紧缩化处理,那么大小在1~max.再将紧缩化的数据与原…
这题最开始的时候看到线段树吧,没找到好的做法 想了下既然是乘积和 (-) (--) (---) 在脑子里就是这种线条位于各个位置,然后各种长度代表连续的乘积个数 然后把所有情况累加起来,但是并不好算 这题每次单点修改最开始就想到肯定是算贡献 然后总和是所有连续积和 然后就想是不是能用到前缀积呢,然后发现修改a[p] ai...ap...aj 1<=i<=p && n=>j>=p (--ap---) (-ap--) 然后分配律化简下,就是ap的后缀积和ap右边一位的前…
#1080 : 更为复杂的买卖房屋姿势 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho都是游戏迷,“模拟都市”是他们非常喜欢的一个游戏,在这个游戏里面他们可以化身上帝模式,买卖房产. 在这个游戏里,会不断的发生如下两种事件:一种是房屋自发的涨价或者降价,而另一种是政府有关部门针对房价的硬性调控.房价的变化自然影响到小Hi和小Ho的决策,所以他们希望能够知道任意时刻某个街道中所有房屋的房价总和是多少——但是很不幸的,游戏本身并不提供这样的计算.不过这难…
#1078 : 线段树的区间修改 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于小Ho表现出的对线段树的理解,小Hi表示挺满意的,但是满意就够了么?于是小Hi将问题改了改,又出给了小Ho: 假设货架上从左到右摆放了N种商品,并且依次标号为1到N,其中标号为i的商品的价格为Pi.小Hi的每次操作分为两种可能,第一种是修改价格——小Hi给出一段区间[L, R]和一个新的价格NewP,所有标号在这段区间中的商品的价格都变成NewP.第二种操作是询问——小Hi给出一段…