【Foreign】Weed [线段树]】的更多相关文章

Weed Time Limit: 20 Sec  Memory Limit: 512 MB Description 从前有个栈,一开始是空的. 你写下了 m 个操作,每个操作形如 k v : 若 k = 0,代表往栈顶加入一个数 v 若 k = 1,则代表从栈顶弹出 v 个数,如果栈中的元素少于 v 个,则全部弹出. 接着你又进行了 q 次修改,每次你会选择一个操作,并且修改它的两个参数. 在每次修改后,你都要求出如果依次执行这些操作,最后栈中剩下的元素之和. Input 第一行两个正整数 m,…
线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治.他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还有一种做法就是对于作用域一整个区间的标记,就将其放置在此区间节点,查询时再结算其贡献,但无论怎样我们都要保证我们查询到的区间信息的真实性完整性,这就意味着我们接触一个区间若要了解到他的全部有用信息,并不用进入其下层区间(以上两种标记方式往往再结合出现时有巧妙的用处).于是我们必须高效地合并子区间的信…
观察复杂度,是log级别以下回答询问的. O(1)?逗我kx呢? 自然而然地想到线段树. 学长讲的原题啊考场上还不会打. 线段树上的每个节点都表示一个操作区间. 线段树上维护的权值有3个:这个子区间一共“净”加了多少层cnt,多少量num,以及它需要除掉前面的多少层del. 因为对于每一个子区间,它只可能有几种情况: 新累加了几层,或者这个子区间不够删了删前面的几层,或先删掉前面的几层再加上新的几层. 那么每个叶节点就不用说啦,关键就在于两个区间合并. 1,如果右区间要删左区间而且还能把它删干净…
考试只好随便骗骗分过去啦啦啦..... 正解是玄学线段树: 以每个操作为叶子节点,我们定义几个变量ce表示层数,h表示高度,add表示所减的层数 那么问题转化为单点修改的问题输出直接是根节点答案 但是我们发现合并区间很毒瘤 我们分两种情况: 设L为左儿子,R为右儿子. 1.T[L].ce<T[R].add 显然我们只需O(1)修改. 2.T[L].ce>T[R].add 我们需要将左子树后面的add个减去,我们自然想到了类似平衡树的 查找后缀的操作,于是肝..... 开始时我的query计算有…
数据结构C Time Limit: 20 Sec  Memory Limit: 512 MB Description Input Output Sample Input Sample Output HINT Solution 首先,D操作为删除操作显然不可做,又发现这道题可以离线处理,那么我们考虑倒着来,维护加入操作. 那么这时候,D操作就变为了合并操作,那么这时候我们只需要维护一个:可以支持单点修改.查询第 k 大.信息可合并的数据结构即可. 显然构建若干棵权值线段树即可!对于每个联通块维护一…
划分序列 Time Limit: 20 Sec  Memory Limit: 256 MB Description Input Output 仅一行一个整数表示答案. Sample Input 9 4 1 1 1 3 2 2 1 3 1 Sample Output 5 HINT Main idea 将序列分为若干段,使得和最大的那一段最小,值可以为负. Source 首先,显然都想到了二分答案. 我们先把都为正数或负数的情况写了:Ai>=0的时候求出最小的划分段数x,若x<=K则表示当前答案可…
染色 Time Limit: 20 Sec  Memory Limit: 256 MB Description Input Output Sample Input 13 0 1 0 2 1 11 1 10 1 9 9 12 2 5 5 8 2 4 2 3 4 6 4 7 7 q 0 O 4 q 6 q 2 O 9 q 9 q 2 Sample Output 2.0000000000 1.0000000000 0.8571428571 0.5000000000 1.8571428571 HINT…
阅读 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output Sample Input 0 10 4 10 2 3 10 8 5 Sample Output -20 HINT Main idea 从K走向M,路上有n个收益点,表示到了pos位置可以增加val的收益,每次最多可以走D步,走一次损耗A.求最大收益. Solution 这题必然是一道DP,我们层层深入来思考. 先从20%考虑:首先我们一下子就想到了暴力DP,令…
题目描述 $duyege$的电脑上面已经长草了,经过辨认上面有金坷垃的痕迹.为了查出真相,$duyege$准备修好电脑之后再进行一次金坷垃的模拟实验.电脑上面有若干层金坷垃,每次只能在上面撒上一层高度为$v_i$的金坷垃,或者除掉最新$v_i$层(不是量)撒的金坷垃.如果上面只留有不足$v_i$层金坷垃,那么就相当于电脑上面没有金坷垃了.$duyege$非常严谨,一开始先给你$m$个上述操作要你依次完成.然后又对实验步骤进行了$q$次更改,每次更改都会改变其中一个操作为另外一个操作.每次修改之后…
题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行 ),其优先级为Pi.同一时间可能有多个任务同时执行,它们的优先级可能相同,也可能不同.调度系统会经常向 查询系统询问,第Xi秒正在运行的任务中,优先级最小的Ki个任务(即将任务按照优先级从小到大排序后取前Ki个 )的优先级之和是多少.特别的,如果Ki大于第…