[USACO17JAN]Balanced Photo平衡的照片 (树状数组)
题目链接
Solution
先离散化,然后开一个大小为 \(100000\) 的树状数组记录前面出现过的数。
然后查询 \((h[i],n]\) 即可.
还要前后各做一遍。
Code
#include<bits/stdc++.h>
#define N 200008
#define ll long long
using namespace std;
void in(ll &x)
{
char ch=getchar();ll f=1,w=0;
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch<='9'&&ch>='0'){w=w*10+ch-'0';ch=getchar();}
x=f*w; return;
}
ll h[N],c[N],a[N],n;
ll L[N],R[N],ans;
ll lowbit(ll x){return x&(-x);}
void insert(int x)
{for(int i=x;i<=n;i+=lowbit(i))c[i]++;}
ll query(int x)
{ll ans=0;for(int i=x;i>=1;i-=lowbit(i))ans+=c[i];return ans;}
int main()
{
//freopen("a.in","r",stdin);
in(n);
for(int i=1;i<=n;i++)in(h[i]),a[i]=h[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
h[i]=lower_bound(a+1,a+n+1,h[i])-a;
for(int i=1;i<=n;i++)
L[i]=query(n)-query(h[i]),insert(h[i]);
memset(c,0,sizeof(c));
for(int i=n;i>=1;i--)
R[i]=query(n)-query(h[i]),insert(h[i]);
for(int i=1;i<=n;i++)
{
ll x=L[i],y=R[i];
if(x<y)swap(x,y);
if(x==y)continue;
if(x>y*2)ans++;
}cout<<ans<<endl;
}
[USACO17JAN]Balanced Photo平衡的照片 (树状数组)的更多相关文章
- 洛谷P3608 [USACO17JAN]Balanced Photo平衡的照片
P3608 [USACO17JAN]Balanced Photo平衡的照片 题目描述 Farmer John is arranging his NN cows in a line to take a ...
- [luoguP3608] [USACO17JAN]Balanced Photo平衡的照片(树状数组 + 离散化)
传送门 树状数组裸题 #include <cstdio> #include <cstring> #include <iostream> #include <a ...
- 【luogu P3608 [USACO17JAN]Balanced Photo平衡的照片】 题解
题目链接:https://www.luogu.org/problemnew/show/P3608 乍一看很容易想到O(N^2)的暴力. 对于每个H[i]从i~i-1找L[i]再从i+1~n找R[i], ...
- [USACO17JAN] 晋升者计数 dfs序+树状数组
[USACO17JAN] 晋升者计数 dfs序+树状数组 题面 洛谷P3605 题意:一棵有点权的树,找出树中所有\((u,v)\)的对数,其中\(u,v\)满足\(val(u)\le val(v)\ ...
- 【BZOJ】1699: [Usaco2007 Jan]Balanced Lineup排队(rmq/树状数组)
http://www.lydsy.com/JudgeOnline/problem.php?id=1699 我是用树状数组做的..rmq的st的话我就不敲了.. #include <cstdio& ...
- [USACO17JAN] Promotion Counting晋升者计数 (树状数组+dfs)
题目大意:给你一棵树,求以某节点为根的子树中,权值大于该节点权值的节点数 本题考查dfs的性质 离散+树状数组求逆序对 先离散 我们发现,求逆序对时,某节点的兄弟节点会干扰答案 所以,我们在递推时统计 ...
- P2995 [USACO10NOV]牛的照片(树状数组,逆序对)
题目: P2995 [USACO10NOV]牛的照片Cow Photographs P4545 [USACO10NOV]奶牛的图片Cow Photographs SP7809 COWPIC - Cow ...
- 【树状数组】【P3608】平衡的照片
传送门 Description FJ正在安排他的N头奶牛站成一排来拍照.(1<=N<=100,000)序列中的第i头奶牛的高度是h[i],且序列中所有的奶牛的身高都不同. 就像他的所有牛的 ...
- Balanced Lineup(树状数组 POJ3264)
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 40493 Accepted: 19035 Cas ...
随机推荐
- 读Dubbo源码,学习SPI
核心类 ExtensionLoader 使用方法 定义接口,使用@SPI标记 @SPI("impl1") public interface SimpleExt { // @Adap ...
- Tensorflow | 基本函数介绍 简单详细的教程。 有用, 很棒
http://blog.csdn.net/xxzhangx/article/details/54606040 Tensorflow | 基本函数介绍 2017-01-18 23:04 1404人阅读 ...
- Android Bitmap变迁与原理解析(4.x-8.x)
App开发不可避免的要和图片打交道,由于其占用内存非常大,管理不当很容易导致内存不足,最后OOM,图片的背后其实是Bitmap,它是Android中最能吃内存的对象之一,也是很多OOM的元凶,不过,在 ...
- gradle implementation runtimeOnly 和api 区别
implementation 不对外开发,只是本项目依赖. runtimeOnly 运行时才依赖 api 可以传递依赖,别的项目也可以依赖api的jar包.
- 剑指offer(2):字符串
C语言中的字符串 C语言中字符串的存储方式和数组类似,都是连续定长的内存块.字符串数组以\0结尾,所以会比正常数组多一位,char str3[5] = "1234"; //此处赋值 ...
- PHP 图片+文字+二维码生成小程序分享海报
思路: 1.请求微信接口获取一定尺寸微信二维码 2.准备海报主图,处理尺寸按比例缩放 3.准备分享语录,计算段落高度 4.生成海报:创建画布,分写别入按顺序和位置写入二维码.图片.文字等 5.保存海报 ...
- java 泛型深入
1.<? extends E> <? extends E> 是 Upper Bound(上限) 的通配符,用来限制元素的类型的上限. 赋值 List<? extend ...
- 详解 vue 双向数据绑定的原理,并实现一组双向数据绑定
1:vue 双向数据绑定的原理: Object.defineProperty是ES5新增的一个API,其作用是给对象的属性增加更多的控制Object.defineProperty(obj, prop, ...
- Linux基础命令一(补充)
echo ls ls–l ---- ll cd / 根目录 cd ~ cd - 返回上一个目录 env ip addr 显示物理网络地址,缩写:ip a /etc/init.d/network ...
- FFmpeg从入门到出家(FLV文件结构解析)
FLV(FLASH VIDEO),是一种常用的文件封装格式,目前国内外大部分视频分享网站都是采用的这种格式.其标准定义为<Adobe Flash Video File Format Specif ...