传送门

另一个在推荐的相关题目里有

删除不好删 反过来变成加 都是基本操作

然后被删的数加一维就是时间

然后时间第一维 序号第二维 权值第三维

开一个权值树状数组维护三维偏序就行

两个题要注意输入的时候一个是删掉的权值 一个是删掉的编号

然后如果开不下要离散化

Code:

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5 #define rep(i,a,n) for(int i = a;i <= n;++i)
 6 #define per(i,n,a) for(int i = n;i >= a;--i)
 7 using namespace std;
 8 typedef long long ll;
 9 ll read() {
10     ll as = 0,fu = 1;
11     char c = getchar();
12     while(c < '0' || c > '9') {
13         if(c == '-') fu = -1;
14         c = getchar();
15     }
16     while(c >= '0' && c <= '9') {
17         as = as * 10 + c - '0';
18         c = getchar();
19     }
20     // printf("#%d\n",as);
21     return as * fu;
22 }
23 const int N = 100005;
24 //head
25 int n,Q;
26 struct node {
27     int x,idx,tim;
28     bool operator < (const node &o) const {
29         return tim < o.tim || (tim == o.tim && idx < o.idx);
30     }
31 } a[N],tmp[N];
32 int b[N],ans[N];
33
34 int t[N];
35 void upd(int x,int k) {
36     for(int i = x;i <= n;i += (i & (-i))) t[i] += k;
37 }
38 int qry(int x) {
39     int sum = 0;
40     for(int i = x;i;i -= (i & (-i))) sum += t[i];
41     return sum;
42 }
43
44
45 void CDQ(int l,int r) {
46     if(l == r) return;
47     int m = l+r >> 1,p1,p2;
48     CDQ(l,m),CDQ(m+1,r);
49
50     p1 = l,p2 = m+1;
51     rep(i,l,r) {
52         if(p1 <= m && (p2 > r || a[p1].idx < a[p2].idx))
53             tmp[i] = a[p1],upd(a[p1].x,1),p1++;
54         else tmp[i] = a[p2],ans[tmp[i].tim] += qry(n) - qry(a[p2].x),p2++;
55     }
56     rep(i,l,m) upd(a[i].x,-1);
57
58     p1 = m,p2 = r;
59     rep(i,l,r) {
60         if(p1 >= l && (p2 == m || (a[p1].idx > a[p2].idx)))
61             upd(a[p1].x,1),p1--;
62         else ans[a[p2].tim] += qry(a[p2].x-1),p2--;
63     }
64     rep(i,l,m) upd(a[i].x,-1);
65
66     rep(i,l,r) a[i] = tmp[i];
67 }
68
69 int main() {
70     n = read(),Q = read();
71     rep(i,1,n) {
72         a[i].x = read();
73         a[i].idx = b[a[i].x] = i;
74         a[i].tim = 1;
75     }
76     rep(i,1,Q) a[b[read()]].tim = n-i+1;
77     sort(a+1,a+n+1),CDQ(1,n);
78     int tot = 0;
79     rep(i,1,n) tot += ans[i];
80     per(i,n,n - Q + 1) printf("%lld\n",tot),tot -= ans[i];
81     return 0;
82 }

转载于:https://www.cnblogs.com/yuyanjiaB/p/10094920.html

luogu P1393 P3157 动态逆序对相关推荐

  1. P3157 动态逆序对 ,树状数组套动态开点线段树

    题目 洛谷题目链接 题解 在求整体的逆序对的数量时,很好办,直接用树状数组处理即可,不过在这时,我们还需要处理出一个数组pa[]pa[]pa[],其中pa[i]pa[i]pa[i]代表在区间[1,i) ...

  2. [Luogu P3157][CQOI2011]动态逆序对 (树套树)

    题面 传送门:[CQOI2011]动态逆序对 Solution 一开始我看到pty巨神写这套题的时候,第一眼还以为是个SB题:这不直接开倒车线段树统计就完成了吗? 然后冷静思考了一分钟,猛然发现单纯的 ...

  3. P3157 [CQOI2011]动态逆序对 (CDQ解决三维偏序问题)

    P3157 [CQOI2011]动态逆序对 题目描述 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任 ...

  4. 【Luogu1393】动态逆序对(CDQ分治)

    [Luogu1393]动态逆序对(CDQ分治) 题面 题目描述 对于给定的一段正整数序列,我们定义它的逆序对的个数为序列中ai>aj且i < j的有序对(i,j)的个数.你需要计算出一个序 ...

  5. HYSBZ - 3295  动态逆序对 (cdq分治)

    F - 动态逆序对 HYSBZ - 3295 题目大意:给出一个序列有m个询问,每一个询问要求输出当前的逆序对数量后在原序列中删除该数字. 解题思路:如果将删除倒着做就变成了插入.没插入一个数字我们就 ...

  6. 洛谷 P3157 [CQOI2011]动态逆序对 | CDQ分治

    题目:https://www.luogu.org/problemnew/show/3157 题解: 1.对于静态的逆序对可以用树状数组做 2.我们为了方便可以把删除当成增加,可以化动为静 3.找到三维 ...

  7. P3157-[CQOI2011]动态逆序对【CDQ分治,树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P3157 题目大意 一个长度为nnn序列,每次删除一个数,求删除前的逆序对数量. 解题思路 时光倒流之后,我们变为每 ...

  8. 【bzoj3295】动态逆序对

    我怎么控制不住自己又写了个数据结构啊--真是的-- 其实我是想练CDQ分治的--结果忍不住又写了个主席树. 首先看看不动态的逆序对咋做?树状数组嘛. 那么删除咋搞?就是考虑贡献,把它前面比他大的,后面 ...

  9. UVA 11990 ``Dynamic'' Inversion 动态逆序对

    ``Dynamic'' Inversion Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/index ...

最新文章

  1. LeetCode 7. 整数反转 Reverse Integer 官网答案的条件判定的一点思考
  2. CodeIgniter类库
  3. 如何判断一个字符串在JavaScript中是否包含某个字符?
  4. CS224W图机器学习课,斯坦福大牛主讲 | 视频、课件
  5. 在进行正式托管之前,服务器托管用户需要做哪些准备?
  6. 利用snmptools实现cacti自定义监控Windows性能计数器
  7. 动画学信奥 漫画学算法 CSP-J入门级 (一)、计算机基础与编程环境(依据「NOI大纲」)
  8. 计算机毕业设计之微信小程序的点餐系统 网上订餐app的论文
  9. war包的解压与打包
  10. alpha-beta剪枝算法
  11. mysql英雄联盟卡_MySQL学习之路:爬取英雄联盟数据后续使用
  12. 产业互联网周报 | 上海数交所:数据产品交易额预计全年超过1亿元;Zoom单季度净利润同比下降86%;...
  13. 知道Unicode表的数字,怎么用java推出相对应的日文?
  14. 日常微博营销技巧究竟有哪些呢?
  15. 十八个关于推荐使用IntBell网络电话软件的理由
  16. 新版kali如何配置IP地址?
  17. APICloud AVM框架开发消防检查助手APP
  18. y7000p 2020 vbios_2020年冬季千元环300公里上笼验资明细-长沙市南湖赛鸽俱乐部
  19. 一个简单的一千行冒险游戏
  20. 补学图论算法:算法竞赛入门经典(第二版)第十一章:

热门文章

  1. 《python3网络爬虫开发实战》--基本库的使用
  2. 项目管理三大认证体系,该选择谁?
  3. linux usb驱动框架
  4. 转iOS性能优化:Instruments使用实战
  5. jQuery 分类导航菜单条点击变色
  6. log4j使用方法(一)——先跑起来再说
  7. 为什么说Lucene不好
  8. flask数据库迁移理解及命令
  9. 设计模式——门面(外观)模式
  10. Redhat 5 无法安装elfutils-libelf-devel-0.137问题