CF961E Tufurama 主席树
对原问题进行转化
考虑对每个$i$,询问在$j \in [i + 1, a[i]]$中满足$a[j] \geqslant i$的个数
这样子可以做到不重不漏
个数满足差分的性质,使用主席树来维护即可
复杂度$O(n \log n)$
- #include <vector>
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- namespace remoon {
- #define ri register int
- #define ll long long
- #define tpr template <typename ra>
- #define rep(iu, st, ed) for(ri iu = st; iu <= ed; iu ++)
- #define drep(iu, ed, st) for(ri iu = ed; iu >= st; iu --)
- #define gc getchar
- inline int read() {
- int p = , w = ; char c = gc();
- while(c > '' || c < '') { if(c == '-') w = -; c = gc(); }
- while(c >= '' && c <= '') p = p * + c - '', c = gc();
- return p * w;
- }
- int wr[], rw;
- #define pc(iw) putchar(iw)
- tpr inline void write(ra o, char c = '\n') {
- if(!o) pc('');
- if(o < ) o = -o, pc('-');
- while(o) wr[++ rw] = o % , o /= ;
- while(rw) pc(wr[rw --] + '');
- pc(c);
- }
- tpr inline void cmin(ra &a, ra b) { if(a > b) a = b; }
- tpr inline void cmax(ra &a, ra b) { if(a < b) a = b; }
- tpr inline bool ckmin(ra &a, ra b) { return (a > b) ? a = b, : ; }
- tpr inline bool ckmax(ra &a, ra b) { return (a < b) ? a = b, : ; }
- }
- using namespace std;
- using namespace remoon;
- #define sid 10000050
- #define xid 200050
- ll ans;
- int n, id;
- int a[xid], rt[xid];
- int ls[sid], rs[sid], sz[sid];
- inline void insert(int &now, int pre, int l, int r, int v) {
- now = ++ id;
- ls[now] = ls[pre]; rs[now] = rs[pre];
- sz[now] = sz[pre] + ;
- if(l == r) return;
- int mid = (l + r) >> ;
- if(v <= mid) insert(ls[now], ls[pre], l, mid, v);
- else insert(rs[now], rs[pre], mid + , r, v);
- }
- inline int qry(int l, int r, int ql, int qr, int ml, int mr) {
- if(ml > r || mr < l) return ;
- if(ml <= l && mr >= r) return sz[qr] - sz[ql];
- int mid = (l + r) >> ;
- int ret = qry(l, mid, ls[ql], ls[qr], ml, mr);
- ret += qry(mid + , r, rs[ql], rs[qr], ml, mr);
- return ret;
- }
- int main() {
- n = read();
- rep(i, , n) a[i] = min(read(), n);
- rep(i, , n) insert(rt[i], rt[i - ], , n, a[i]);
- rep(i, , n) if(i + <= a[i])
- ans += qry(, n, rt[i], rt[a[i]], i, n);
- write(ans);
- return ;
- }
CF961E Tufurama 主席树的更多相关文章
- CF961E Tufurama【主席树】
CF961E Tufurama 题意翻译 题目描述 有一天Polycarp决定重看他最喜爱的电视剧<Tufurama>.当他搜索“在线全高清免费观看Tufurama第3季第7集”却只得到第 ...
- 2018.12.05 codeforces 961E. Tufurama(主席树)
传送门 一眼主席树sbsbsb题(%%%树状数组大佬们). 简化题意:求满足x<y,y≤ax,x≤ayx<y,y\le a_x,x\le a_yx<y,y≤ax,x≤ay的(x, ...
- 【树状数组】CF961E Tufurama
挺巧妙的数据结构题(不过据说这是一种套路? E. Tufurama One day Polycarp decided to rewatch his absolute favourite episode ...
- EC Round 41 (Rated for Div. 2)主席树 E. Tufurama
简单分析一下,对于x<y,求a[x]>=y 同时a[y]>=x 再简化一下,求1-a[y]区间内大于>=y的个数...主席树牛逼 #include<iostream> ...
- [CF961E] Tufurama
Description: 有一天Polycarp决定重看他最喜爱的电视剧<Tufurama>.当他搜索"在线全高清免费观看Tufurama第3季第7集"却只得到第7季第 ...
- bzoj3207--Hash+主席树
题目大意: 给定一个n个数的序列和m个询问(n,m<=100000)和k,每个询问包含k+2个数字:l,r,b[1],b[2]...b[k],要求输出b[1]~b[k]在[l,r]中是否出现. ...
- bzoj1901--树状数组套主席树
树状数组套主席树模板题... 题目大意: 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[ ...
- BZOJ 3626: [LNOI2014]LCA [树链剖分 离线|主席树]
3626: [LNOI2014]LCA Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2050 Solved: 817[Submit][Status ...
- BZOJ 1146: [CTSC2008]网络管理Network [树上带修改主席树]
1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 3522 Solved: 1041[Submi ...
随机推荐
- 2016.07.15——istringstream测试
istringstream测试 1.istringstream strcin(str),字符串(str)可以包括多个单词,单词之间使用空格分开 #include "stdafx.h" ...
- aarch64_g4
golang-github-inconshreveable-muxado-devel-0-0.7.gitf693c7e.fc26.noarch.rpm 2017-02-11 16:47 30K fed ...
- mycat读写分离与主从切换【转】
什么是mycat,以及mycat的优点和特性本文不做赘述,本文继续本着实战的态度,来分享一些个人对mycat的基础功能实践.本文mycat的读写分离和主从切换的环境为mysql主从环境. 如何安装my ...
- 好用的工具---screen命令
问 题场景:要在服务器上配置环境,但是我的电脑无法直接连到服务器上,通常要经过好几次ssh跳转.配环境需要设置好几个用户,这自然需要同时打开好几个连 接服务器的终端窗口,每个连接到服务器的终端窗口都要 ...
- MYSQL-重做系统恢复MYSQL过程
记笔记是好习惯,记笔记是好习惯,记笔记是好习惯! 重要的事情说三遍. 说多了都是泪.第一次装MYSQL时候就遇到了很多问题,当时解决了忘记记录了.家里硬盘满了,于是买了个4T的硬盘重装系统.重装系统后 ...
- MFC中CString.Format类详解
在MFC程序中,使用CString来处理字符串是一个很不错的选择.CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串.CString的Format方法给我们进行字符串的 ...
- MySQL 连接本地数据库、远程数据库命令
一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:/>mysql -h localhost -u root -p123 二. ...
- OA项目CRUD和单元测试(一)
使用ModeFirst方法生成数据库,EntityFramework5.0. 一:Model层的模型:(根据模型生成数据库) 二:Dal层的UserInfo代码: namespace SunOA.EF ...
- Spring MVC之JSON数据交互和RESTful的支持
1.JSON概述 1.1 什么是JSON JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式.它是基于JavaScript的一个子集,使用了C.C ...
- 浅谈C、C++及其区别、兼容与不兼容
一.闲说C C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言. 1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是 ...