Description:

有一天Polycarp决定重看他最喜爱的电视剧《Tufurama》。当他搜索“在线全高清免费观看Tufurama第3季第7集”却只得到第7季第3集的结果时,他很惊讶。这让Polycarp感到疑惑——如果有天他决定重看整个系列却无法找到正确的剧集观看,那该怎么办呢?Polycarp现在想统计一下他被迫用不同方案搜索同一剧集的次数。

电视连续剧有\(n\) 季(从\(1\) 到\(n\) 编号),第\(i\) 季有\(a_i\) 集(从\(1\) 到\(a_i\) 编号)。Polycarp认为如果有一对\(x\) 和\(y\) (\(x\<y\) ),使第\(x\) 季第\(y\) 集、第\(y\) 季第\(x\) 集存在,那么其中一个搜索就会包含错误的内容。请帮助Polycarp统计这样的数对的数量吧!

Hint:

主席树SB题,随便搞个前缀和,离散化都不用

#include <map>
#include <set>
#include <stack>
#include <cmath>
#include <queue>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int mxn=2e5+5;
int n,m,tot,cnt,hd[mxn]; inline int read() {
char c=getchar(); int x=0,f=1;
while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}
while(c<='9'&&c>='0') {x=(x<<3)+(x<<1)+(c&15);c=getchar();}
return x*f;
}
inline void chkmax(int &x,int y) {if(x<y) x=y;}
inline void chkmin(int &x,int y) {if(x>y) x=y;} struct ed {
int to,nxt;
}t[mxn<<1]; inline void add(int u,int v) {
t[++cnt]=(ed) {v,hd[u]}; hd[u]=cnt;
} int a[mxn],rt[mxn<<6],ls[mxn<<6],rs[mxn<<6],sz[mxn<<6];
ll ans; void update(int las,int &p,int l,int r,int pos) {
if(!p) p=++tot; sz[p]=sz[las]+1;
if(l==r) return ; int mid=(l+r)>>1;
if(pos<=mid) update(ls[las],ls[p],l,mid,pos),rs[p]=rs[las];
else update(rs[las],rs[p],mid+1,r,pos),ls[p]=ls[las];
} int query(int p,int l,int r,int pos) {
if(l==r) return sz[p];
int mid=(l+r)>>1;
if(pos<=mid) return sz[rs[p]]+query(ls[p],l,mid,pos);
else return query(rs[p],mid+1,r,pos);
} int main()
{
n=read();
for(int i=1;i<=n;++i) {
a[i]=read();
update(rt[i-1],rt[i],1,n,a[i]);
ans+=query(rt[min(i-1,a[i])],1,n,i);
}
printf("%lld",ans);
return 0;
}

最新文章

  1. 四步让你的网站秒开,wordpress框架为例子,其他框架道理类似
  2. eclipse通过ctrl+shift+t无法找到源文件类的解决方法
  3. python利用or在列表解析中调用多个函数.py
  4. STL六大组件之——分配器(内存分配,好深奥的东西)
  5. DTCC2016
  6. UGUI实现的虚拟摇杆,可改变摇杆位置
  7. JIT和程序的首次执行
  8. Shell script fails: Syntax error: “(” unexpected
  9. Flask-uploads 简单使用
  10. react中根据后台值动态配置
  11. vue iview render里面写时间截取
  12. 8.Appium的基本使用-3(安装JDK、android-sdk)
  13. 1.1.4 A+B for Input-Output Practice (V)
  14. 【Android】18.1 利用安卓内置的定位服务实现位置跟踪
  15. Python之模块二
  16. 无法连接到服务器,用户xxx登陆失败&quot;
  17. C语言链表结构体(学习笔记)
  18. 如何使用动画库animate.css
  19. auth认证组件
  20. POJ2528 Mayor&#39;s posters —— 线段树染色 + 离散化

热门文章

  1. 出现xml错误的时候都是配置文件的名字没有改造成的
  2. IDEA新建模块
  3. python functools
  4. POJ 1364 / HDU 3666 【差分约束-SPFA】
  5. (4).NET CORE微服务 Micro-Service ---- Consul服务发现和消费
  6. 【BZOJ2560】串珠子
  7. 从源码开始运行Bitcoin Core
  8. 桐桐的数学游戏(N皇后)
  9. Codeforces 542E Playing on Graph 其他
  10. HDU4466 Triangle 计数 容斥原理