BZOJ 2016十连测 D3T3序列
主席树
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define rd read()
using namespace std;
const int N = 1e5 + 5;
int ls[N], tot, n, m, q;
int a[N], ans;
vector<int> ad[N], reduce[N];
struct que {
int l, r, x;
}b[N];
int read() {
int X = 0, p = 1; char c = getchar();
for (; c > '9' || c < '0'; c = getchar())
if (c == '-') p = -1;
for (; c >= '0' && c <= '9'; c = getchar())
X = X * 10 + c - '0';
return X * p;
}
namespace SegT {
int cnt, root[N];
struct node {
int sum, lson, rson;
}p[N * 50];
#define lc(x) p[x].lson
#define rc(x) p[x].rson
#define sum(x) p[x].sum
#define mid ((l + r) >> 1)
void modify(int &x, int now, int pos, int d, int l, int r) {
x = ++cnt;
sum(x) = sum(now) + d;
lc(x) = lc(now);
rc(x) = rc(now);
if (l == r) return;
if (pos <= mid) modify(lc(x), lc(now), pos, d, l, mid);
else modify(rc(x), rc(now), pos, d, mid + 1, r);
}
int query(int x, int pos, int l, int r) {
if (!x) return 0;
if (r <= pos) return sum(x);
int res = 0;
if (mid <= pos)
return query(lc(x), pos, l, mid) + query(rc(x), pos, mid + 1, r);
else
return query(lc(x), pos, l, mid);
}
}using namespace SegT;
int main()
{
n = rd; m = rd; q = rd;
for (int i = 1; i <= n; ++i) a[i] = rd;
for (int i = 1; i <= m; ++i)
b[i].l = rd, b[i].r = rd, b[i].x = rd, ls[++tot] = b[i].x;
sort(ls + 1, ls + 1 + tot);
tot = unique(ls + 1, ls + 1 + tot) - ls - 1;
for (int i = 1; i <= m; ++i) {
int tmp = lower_bound(ls + 1, ls + 1 + tot, b[i].x) - ls;
ad[tmp].push_back(b[i].l);
if (b[i].r < n) reduce[tmp].push_back(b[i].r + 1);
}
for (int i = 1; i <= tot; ++i) {
root[i] = root[i - 1];
for (int j = 0, up = ad[i].size(); j < up; ++j)
modify(root[i], root[i], ad[i][j], 1, 1, n);
for (int j = 0, up = reduce[i].size(); j < up; ++j)
modify(root[i], root[i], reduce[i][j], -1, 1, n);
}
for (int i = 1; i <= n; ++i) {
int tmp = upper_bound(ls + 1, ls + 1 + tot, a[i]) - 1 - ls;
ans += query(root[tmp], i, 1, n);
}
printf("%d\n", ans);
for (int i = 1; i <= q; ++i) {
int u = rd ^ ans, v = rd ^ ans;
int tmp = upper_bound(ls + 1, ls + 1 + tot, a[u]) - 1 - ls;
ans -= query(root[tmp], u, 1, n);
a[u] = v;
tmp = upper_bound(ls + 1, ls + 1 + tot, a[u]) - 1 - ls;
ans += query(root[tmp], u, 1, n);
printf("%d\n", ans);
}
}
BZOJ 2016十连测 D3T3序列的更多相关文章
- BZOJ NOI十连测 第二测 T2
思路:20%可以搜索.. #include<algorithm> #include<cstdio> #include<cmath> #include<cstr ...
- BZOJ NOI十连测 第二测 T1
出题人居然是个哲学家.. 26%的程序,太SB了...本来我的想法也是二分+贪心,但是贪心是个怪怪的SX贪心.. #include<algorithm> #include<cstdi ...
- BZOJ NOI十连测 第一测 T1
思路:首先考虑t=1的情况,t等于1,那么所有位置的颜色相同,我们不用考虑概率的问题,那么,k+d*x在模d下都相等,我们考虑预处理一个数组s[i][j],代表d为i,起始位置为j的等差数列的和,这个 ...
- BZOJ NOI十连测 第一测 T2
思路:看到这题,就感觉是一道很熟悉的题目: http://www.cnblogs.com/qzqzgfy/p/5535821.html 只不过这题的K最多可以到N,而且边权不再只是1,考试的时候yy了 ...
- bzoj 5216 [Lydsy2017省队十连测]公路建设 线段树维护 最小生成树
[Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 93 Solved: 53[Submit][Status][ ...
- bzoj 5216: [Lydsy2017省队十连测]公路建设
5216: [Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 66 Solved: 37[Submit][St ...
- 提高十连测day3
提高十连测day3 A 我们可以枚举两个 $ 1 $ 之间的相隔距离,然后计算形如 $ 00100100 \cdots $ 的串在原串中最⻓⼦序列匹配即可,复杂度 $ O(n^2) $ .寻找 $ S ...
- ZROI2019 提高十连测
额 掰手指头一数 特么又是第三年十连测了= = 2017一场没打 那时候好像一场比赛也就100人左右 2018前几场还都好好补了 后来开始放飞自我了 这时候一场有150人还多了 2019想让今年的No ...
- Lydsy2017省队十连测
5215: [Lydsy2017省队十连测]商店购物 可能FFT学傻了,第一反应是前面300*300背包,后面FFT... 实际上前面背包,后面组合数即可.只是这是一道卡常题,需要注意常数.. //A ...
随机推荐
- SQL多表操作
1.多表之间的建表原则 一对多:商品和分类 建表原则:在多的一方添加一个外键,指向一的一方的主键 多对多:老师和学生,学生和课程 建表原则:建立一张中间表,将多对多的关系,拆分成一对多的关系,中间表至 ...
- leetCode70.爬楼梯
假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两 ...
- 关于web前端base64转换为Blob,存入数组后 ajax请求传输到后端 接受不到文件问题
前端console输出是正常Blob对象,通过ajax formdata 传输到 后端java SpringMvc用MultipartFile接受却一直接受不到,后来直接解析HttpServletRe ...
- activiti官网实例项目activiti-explorer之扩展流程节点属性
节点中添加“关联表单”属性 1,stencilset.json中加入如下代码 , { "name" : "approveTypepackage", ...
- View的相关原理(读书笔记)
View的使用方法相关: 1.setContentView() 2.LayoutInflater.inflate() PS:本质上setContentView()方法最终也是通过LayoutInfla ...
- Ruby on Rails 开发笔记
安装 Ruby on Rails Install Rails: A step-by-step guide 创建应用 # 创建新的应用程序 $ rails new blog $ cd blog # 启动 ...
- sublime_text3代码自动补全
因为项目需要用sublime_text3编辑器,安装之后代码自动补全功能没有,这比较苦恼. 其实蛮简单的 英文界面:menu->Preferences->Setting-User-> ...
- 修复Microsoft Store 无法连接网络 代码: 0x80072EFD
事情的经过是这样的,我的Windows版本是1709,前两天刚从1703升上来,今天突然发现它自己给我装了个skype,我上Microsoft商店里查一下是什么情况,结果突然发现它又双双双不正常工作了 ...
- jsTree通过AJAX从后台获取数据
页面代码: <div id="MenuTree"></div> javascript代码: $(document).ready(function ($) { ...
- 关于如何登陆oracle 18c pdb 的问题
server 上输入 sqlplus username/password@lP:port/service name 登陆提示 no listener 的时候, 在另外一台机器上 直接连接 哈哈哈.. ...