[COCI2015-2016#2] VUDU
思路
这是一种简单的树状数组解法。
我们设偏移值表示 \(a_i\) 与目标平均数 \(p\) 的差值,显然,一个区间若能满足条件,需要满足此区间的偏移值之和 \(\ge 0\)。
看到区间之和,我们就想到了前缀和,设 \(sum\) 数组表示偏移值的前缀和数组,若我们固定一个右端点 \(r\),则我们要求的是满足 \(sum_r-sum_l \ge 0\) 的 \(l\) 总数,不妨改变一下这个柿子的形式,变成 \(sum_r \ge sum_l\),然后就变成简单的树状数组板子了。
代码
//A tree without skin will surely die.
//A man without face is invincible.
#include<bits/stdc++.h>
using namespace std;
#define int long long
int const N=1e6+10;
int n,a[N],b[N],sum[N];
struct Tree_Array{
int c[N];
#define lowbit(x) (x&-x)
inline void update(int x,int v){while (x<=n) c[x]+=v,x+=lowbit(x);}
inline int query(int x){int res=0;while (x) res+=c[x],x-=lowbit(x);return res;}
}T;
signed main(){
//读入
for (int i=1;i<=n;++i) a[i]-=p;
for (int i=1;i<=n;++i) sum[i]=sum[i-1]+a[i],b[i]=sum[i];
sort(b+1,b+n+1);int l=unique(b+1,b+n+1)-b-1;
int ans=0;
for (int i=1;i<=n;++i) ans+=(sum[i]>=0);//这个数本身就满足条件
for (int i=1;i<=n;++i) sum[i]=lower_bound(b+1,b+l+1,sum[i])-b;//离散化
for (int i=1;i<=n;++i){
ans+=T.query(sum[i]);
T.update(sum[i],1);
}
//输出
return 0;
}
[COCI2015-2016#2] VUDU的更多相关文章
- [COCI]coci2015/2016 nekameleoni
题意: 初始数列,每个数都在1~k以内 支持两种操作:1.修改一个数,修改后的数在1~k内 2.查询一个最短包含1~k的序列的长度 查询100000 ...
- Be Better:遇见更好的自己-2016年记
其实并不能找到好的词语来形容过去的一年,感觉就如此平淡的过了!没有了毕业的稚气,看事情淡了,少了一丝浮躁,多了一分认真.2016也许就是那句话-多读书,多看报,少吃零食多睡觉,而我更愿意说--Be B ...
- Connect() 2016 大会的主题 ---微软大法好
文章首发于微信公众号"dotnet跨平台",欢迎关注,可以扫页面左面的二维码. 今年 Connect 大会的主题是 Big possibilities. Bold technolo ...
- “.Net 社区虚拟大会”(dotnetConf) 2016 Day 3 Keynote: Scott Hanselman
美国时间 6月7日--9日,为期三天的微软.NET社区虚拟大会正式在 Channel9 上召开,美国时间6.9 是第三天, Scott Hanselman 做Keynote.今天主题围绕的是.NET ...
- “.Net 社区虚拟大会”(dotnetConf) 2016 Day 2 Keynote: Miguel de Icaza
美国时间 6月7日--9日,为期三天的微软.NET社区虚拟大会正式在 Channel9 上召开,美国时间6.8 是第二天, Miguel de Icaza 做Keynote,Miguel 在波士顿Xa ...
- “.Net 社区虚拟大会”(dotnetConf) 2016 Day 1 Keynote: Scott Hunter
“.Net 社区虚拟大会”(dotnetConf) 2016 今天凌晨在Channel9 上召开,在Scott Hunter的30分钟的 Keynote上没有特别的亮点,所讲内容都是 微软“.Net社 ...
- 微软发布正式版SQL Server 2016
微软于今天在SQL 官方博客上宣布 SQL Server 数据库软件的正式发布版本(GA),历时一年多,微软为该软件发布了多个公共预览版和候选版本,而今天最终版本终于上线了.在博客中,微软数据集团的企 ...
- Summary of Critical and Exploitable iOS Vulnerabilities in 2016
Summary of Critical and Exploitable iOS Vulnerabilities in 2016 Author:Min (Spark) Zheng, Cererdlong ...
- 黑云压城城欲摧 - 2016年iOS公开可利用漏洞总结
黑云压城城欲摧 - 2016年iOS公开可利用漏洞总结 作者:蒸米,耀刺,黑雪 @ Team OverSky 0x00 序 iOS的安全性远比大家的想象中脆弱,除了没有公开的漏洞以外,还有很多已经公开 ...
- 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)
环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...
随机推荐
- Promise基础知识
Promise 1.Promise的前置小知识 进程(厂房) 程序的运行环境 线程(工人) 线程是实际进行运算的东西 同步 通常情况代码都是自上向下一行一行执行的 前边的代码不执行后边的代码也不会执行 ...
- 【机器学习】李宏毅——Adversarial Attack(对抗攻击)
研究这个方向的动机,是因为在将神经网络模型应用于实际场景时,它仅仅拥有较高的正确率是不够的,例如在异常检测中.垃圾邮件分类等等场景,那些负类样本也会想尽办法来"欺骗"模型,使模型无 ...
- [常用工具] OpenCV获取网络摄像头实时视频流
所需要硬件及软件环境: python 3/OpenCV3.4 or C++11/OpenCV3.4 1 RTSP协议 RTSP (Real Time Streaming Protocol),是一种语法 ...
- [编程基础] C++多线程入门7-条件变量介绍
原始C++标准仅支持单线程编程.新的C++标准(称为C++11或C++0x)于2011年发布.在C++11中,引入了新的线程库.因此运行本文程序需要C++至少符合C++11标准. 文章目录 7 条件变 ...
- Ubuntu20.04/22.04 安装 Arduino IDE 2.x
这周收到两片基于LGT8F328P LQFP32的Arduino Mini EVB, 机器上没有 Arduino 环境需要新安装, 正好感受一下新出的 Arduino IDE 2.x, 记录一下 Ub ...
- Ubuntu下的LGT8F328P MiniEVB Arduino开发和烧录环境
基于 LGT8F328P LQFP32 的 Arduino MiniEVB, 这个板型资料较少, 记录一下开发环境和烧录过程以及当中遇到的问题. 关于 LGT8F328P 芯片参数 8位RISC内核 ...
- Vue3的script setup语法糖这么好用的吗????
最近发现这个vue3居然还可以这样写 原始写法 <template> <h1>Tangdoudou</h1> <h1>{{ num }}</h1& ...
- Java基础学习笔记-常量与变量♪(^∇^*)
常量与变量相同点 都有作用域,跟JS差不多, 变量的作用域:一对{ }之间有效 1.局部 2.全局 2.1.属于类的量(类常量和类变量) 2.2.属于实例的量(实例常量和实例变量) • 前面都可加权限 ...
- 解决微信小程序 自定义tabBar 切换时候闪烁问题
这个闪烁真的很迷 我搜了一些资料,进行了以下步骤的操作 第一种解决办法 ,把tabbar自定义组件的this.setData中的代码注释掉 显示tabbar中的页面中,添加下面的:这个好像没什么用啊 ...
- WPF中使用WebView2控件
目录 WebView2简介 概述 优势 支持的运行时平台 进程模型 基本使用 安装WebView2运行时 安装WebView2Sdk 打开一个网页 导航事件 打开一个网页的过程 更改url的过程 空u ...