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