bzoj4759 [Usaco2017 Jan]Balanced Photo
2024-10-02 06:31:31
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4759
【题解】
排序,从大到小插入,树状数组统计。
# include <vector>
# include <stdio.h>
# include <string.h>
# include <iostream>
# include <algorithm>
// # include <bits/stdc++.h> using namespace std; typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int M = 2e5 + , N = 4e5 + ;
const int mod = 1e9+; # define RG register
# define ST static # define lb(x) (x&(-x))
struct BIT {
int c[N], n;
inline void set(int _n) {
memset(c, , sizeof c);
n = _n;
}
inline void edt(int x, int d) {
for (; x<=n; x+=lb(x)) c[x] += d;
}
inline int sum(int x) {
int ret = ;
for (; x; x-=lb(x)) ret += c[x];
return ret;
}
inline int sum(int x, int y) {
if(x>y) return ;
return sum(y) - sum(x-);
}
}T; int n;
vector<int> ps;
struct pa {
int x, pos;
pa() {}
pa(int x, int pos) : x(x), pos(pos) {}
friend bool operator < (pa a, pa b) {
return a.x > b.x;
}
}p[M]; int L[M], R[M]; int main() {
cin >> n;
T.set(n);
for (int i=; i<=n; ++i) {
scanf("%d", &p[i].x);
p[i].pos = i;
ps.push_back(p[i].x);
} sort(ps.begin(), ps.end());
ps.erase(unique(ps.begin(), ps.end()), ps.end()); for (int i=; i<=n; ++i) p[i].x = lower_bound(ps.begin(), ps.end(), p[i].x) - ps.begin() + ; sort(p+, p+n+); for (int i=; i<=n; ++i) {
int j = i;
while(j<n && p[j+].x == p[i].x) ++j;
for (int k=i; k<=j; ++k) {
L[k] = T.sum(, p[k].pos-);
R[k] = T.sum(p[k].pos+, n);
}
for (int k=i; k<=j; ++k) T.edt(p[k].pos, );
i = j;
} int ans = ;
for (int i=; i<=n; ++i)
if(max(R[i], L[i]) > *min(R[i], L[i]))
++ans; cout << ans << endl; return ;
}
最新文章
- NOIP2008双栈排序[二分图染色|栈|DP]
- 基于C#在WPF中使用斑马打印机进行打印【转】
- AutoLayout ViewDidAppear 小坑
- 博文写作——摘要&;摘要图标
- Eclipse的安装和java环境变量的设置
- Android 定时器
- unity缓存和浏览器缓存
- CSS之自适应布局webkit-box
- 发现UC/OS-III源码有一处不明白!会不会是BUG.高手过来看看!
- 【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)
- codeforces Winner
- DevExpress中,添加Winform窗体到DockPanel z
- Linux动态库的编译与使用
- 在winform程序中实现按照不同的角色或用户展现不同的页面
- 九章算法系列(#4 Dynamic Programming)-课堂笔记
- Treasure Exploration(二分最大匹配+floyd)
- 3.3.3 PCI设备对可Cache的存储器空间进行DMA读写
- Beta Scrum
- @RequestParam @PathVariable
- Linux(centos)下安装JDK