链接

luogu

思路

可耐我连cdq都不会,Orz 陈丹琦

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 7;
int read() {
int x = 0, f = 1; char s = getchar();
for (;s > '9' || s < '0'; s = getchar()) if (s == '-') f = -1;
for (;s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0';
return x * f;
}
int ans[N];
struct node {
int type, id, val;
node(int a = 0,int b = 0, int c = 0) {
type = a, id = b, val = c;
}
bool operator < (const node &b) const {
return id == b.id ? type < b.type : id < b.id;
}
} Q[N<<2], tmp[N<<2];
void cdq(int l, int r){
if (l == r) return;
int mid = (l + r) >> 1;
cdq(l, mid), cdq(mid + 1, r);
int p = l, q = mid + 1, js = l, sum = 0;
while (p <= mid && q <= r) {
if (Q[p] < Q[q]) {
if (Q[p].type == 1) sum += Q[p].val;
tmp[js++] = Q[p++];
} else {
if (Q[q].type == 2) ans[Q[q].val] -= sum;
if (Q[q].type == 3) ans[Q[q].val] += sum;
tmp[js++] = Q[q++];
}
}
while (p <= mid) tmp[js++] = Q[p++];
while (q <= r) {
if (Q[q].type == 2) ans[Q[q].val] -= sum;
if (Q[q].type == 3) ans[Q[q].val] += sum;
tmp[js++] = Q[q++];
}
for (int i = l; i <= r; ++i) Q[i] = tmp[i];
}
int main() {
int n = read(), m = read(), js = 0, DSR = 0;
for (int i = 1; i <= n; ++i) {
int x = read();
Q[++js] = node(1, i, x);
}
for(int i = 1; i <= m; ++i) {
int opt = read(), x = read(), y = read();
if (opt == 1) {
Q[++js] = node(1, x, y);
} else {
Q[++js] = node(2, x-1, ++DSR),
Q[++js] = node(3, y, DSR);
}
}
cdq(1, js);
for (int i = 1; i <= DSR; ++i) printf("%d\n", ans[i]);
return 0;
}

最新文章

  1. MySQL绿色版的安装(mysql-5.6.22-win32.zip)
  2. 2015暑假多校联合---Assignment(优先队列)
  3. bzoj1691[Usaco2007 Dec]挑剔的美食家 平衡树treap
  4. HttpClient总结一之基本使用
  5. HDU 4793 Collision --解方程
  6. apiCloud结合layer实现动态数据弹出层
  7. 超人学院Hadoop大数据技术资源分享
  8. Bandit Wargame Level12 Writeup
  9. 【IOI1998】Picture(扫描线+线段树)
  10. HCNA-链路聚合(手工模式)
  11. flask下载文件---文件流
  12. jquery批量提交表单值 和批量设置表单值
  13. 第八届蓝桥杯国赛java B组第三题
  14. Python3中StringIO
  15. 在div中放一个相同大小的svg,实际显示的位置svg偏下
  16. Grunt-jsdoc生成JS API文档
  17. [Windows Azure] Developing Multi-Tenant Web Applications with Windows Azure AD
  18. sublime编写markdownm
  19. JAVA—IO操作
  20. c++之带默认形参值的函数

热门文章

  1. 创建一个RAS 非对称 公私密钥示例
  2. SUSE12Sp3-安装DockerCE和Docker-compose
  3. .net代码混淆
  4. java.net.URLEncoder对中文的编码和解码
  5. Ext.urlEncode与Ext.urlDecode
  6. VsCode中编写python环境配置
  7. can解析
  8. Linux搭建MySQL主从
  9. RabbitMQ基本概念(二)-RabbitMQ消息队列架构与基本概念
  10. Filter和Listener