题意 题目链接 Sol ODT板子题.就是用set维护连续段的大暴力.. 然鹅我抄的板子本题RE提交AC??.. 具体来说,用50 50 658073485 946088556这个数据测试下面的代码,然后在79行停住,看一下bg和i的值会发生神奇的事情.. 问题已解决,确实是那位博主写错了, 只要把split(l)和split(r + 1)反过来就行了 #include<bits/stdc++.h> #define LL long long #define int long long #def…
仿佛没用过std::set Seniorious has n pieces of talisman. Willem puts them in a line, the i-th of which is an integer ai. In order to maintain it, Willem needs to perform m operations. There are four types of operations: 1 l r x: For each i such that l ≤ i …
题意 给你一个长为 \(n\) 的序列 \(a_i\) 需要支持四个操作. \(1~l~r~x:\) 把 \(i \in [l, r]\) 的 \(a_i\) 加 \(x\) . \(2~l~r~x:\) 把 \(i \in [l, r]\) 的 \(a_i\) 赋值成 \(x\) . \(3~l~r~x:\) 求 \([l, r]\) 区间的第 \(x\) 小元素. \(4~l~r~x~y:\) 求 \((\sum_{i = l}^{r} {a_i}^x) \mod y\) . 一共会操作 \…
https://www.cnblogs.com/WAMonster/p/10181214.html 主要用于支持含有较难维护的区间操作与查询的问题,要求其中区间赋值操作(assign())是纯随机的. 注意要先split(r+1)再split(l),最好最后设一个点(n+1,n+1,0) #include<set> #include<cstdio> #include<algorithm> #include<iostream> #define rep(i,l,…
题目大意:有$n$个数,有$m$次$4$种操作: l r x :将$[l,r]$区间所有数加上$x$ l r x :将$[l,r]$区间所有数变成$x$ l r k :输出$[l,r]$区间第$k$大 l r x p :输出$\sum\limits_{i=l}^rs_i^x\pm $n,m\leqslant10^5$ 题解:珂朵莉树模板题 卡点:$split$中写错,写成 it==s.end() C++ Code: #include <cstdio> #include <algorith…
中文题面 珂朵莉树的板子……这篇文章很不错 据说还有奈芙莲树和瑟尼欧里斯树…… 等联赛考完去学一下(逃 //minamoto #include<bits/stdc++.h> #define IT set<node>::iterator #define ll long long using namespace std; ,mod9=1e9+,N=1e5+; ll ksm(ll a,ll b,ll mod){ ll res=;a%=mod; while(b){ ) res=res*a%…
Willem, Chtholly and Seniorious https://codeforces.com/contest/897/problem/E time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output — Willem... — What's the matter? — It seems that there's someth…
http://codeforces.com/problemset/problem/896/C 题意: 对于一个随机序列,执行以下操作: 区间赋值 区间加 区间求第k小 区间求k次幂的和 对于随机序列,可以使用Old Driver Tree 就是将序列中,连续的相同值域合并为一段 然后暴力操作 #include<set> #include<vector> #include<cstdio> #include<iostream> #include<algor…
Prelude ODT这个东西真是太好用了,以后写暴力骗分可以用,写在这里mark一下. 题目链接:ヽ(✿゚▽゚)ノ Solution 先把原题解贴在这里:(ノ*・ω・)ノ 简单地说,因为数据是全部随机的,所以一定会有特别多的区间set,就会有很多数字相同,那么我们暴力把相同的数字合并成一个点,合并完之后数组就变得很短,然后对于询问暴力做就可以了. 具体复杂度是什么我也不会证明qwq,所以就把由乃的题解贴上来了qwq,感觉很靠谱的样子. 题解中给的是用STL的set维护缩点后的数组,我感觉不是很…
题意简述 维护一个数列,支持区间加,区间赋值,区间求第k小,区间求幂和 数据随机 题解思路 ODT是一种基于std::set的暴力数据结构. 每个节点对应一段区间,该区间内的数都相等. 核心操作split可以将节点拆开,修改需要的部分. 每个操作都split(r+1),split(l),再遍历其中所有区间,修改或求值. 至于时间复杂度,由assign保证 代码 #include <set> #include <vector> #include <utility> #in…