首页 > 其他分享 >[COCI2015-2016#2] VUDU

[COCI2015-2016#2] VUDU

时间:2024-09-24 20:35:06浏览次数:9  
标签:树状 int COCI2015 VUDU 2016 ll

[COCI2015-2016#2] VUDU

题意

求一个序列中有多少个子段平均数大于 \(P\)。

思路

区间和相关的问题可以考虑前缀和。

对于原序列前缀和序列 \(a\),询问等价于求数对 \((l,r)(l\le r)\) 的个数,满足:

\[\frac{a_r - a_{l-1}}{r-l+1} \ge P \]

移项整理得:

\[a_r-Pr\ge a_{l-1}-P(l-1) \]

令 \(b_i=a_i-Pi\),就是求 \(b\) 中的顺序对个数,树状数组求即可。

坑点:实现时要往树状数组中先插入 \(0\),所以离散化时也要离散化 \(0\),树状数组值域开到 \(n+1\)。

代码

#include <bits/stdc++.h>
using namespace std;

using ll = long long;
const int N = 1e6 + 5;

int n, tot;
ll ans, a[N], b[N], P;

struct BIT {
	ll t[N];
	void add(int x, ll y) {
		for (int i = x; i <= n + 1; i += i & (-i)) {
			t[i] += y;
		}
	}
	ll query(int x) {
		ll res = 0;
		for (int i = x; i; i -= i & (-i)) {
			res += t[i];
		}
		return res;
	}
} T;

int main() {
	cin >> n;
	for (int i = 1; i <= n; i ++) {
		cin >> a[i];
		a[i] += a[i - 1];
	}
	cin >> P;
	for (int i = 1; i <= n; i ++) {
		a[i] -= 1ll * i * P;
		b[++ tot] = a[i];
	}
	b[++ tot] = 0;
	sort(b + 1, b + tot + 1);
	tot = unique(b + 1, b + tot + 1) - b - 1;
	for (int i = 0; i <= n; i ++) {
		a[i] = lower_bound(b + 1, b + tot + 1, a[i]) - b;
	}
	T.add(a[0], 1);
	for (int i = 1; i <= n; i ++) {
		ans += T.query(a[i]);
		T.add(a[i], 1);
	}
	cout << ans << "\n";
	return 0;
} 

标签:树状,int,COCI2015,VUDU,2016,ll
From: https://www.cnblogs.com/maniubi/p/18429958

相关文章

  • AI 大模型计算机科学家群英传:明斯基(Marvin Lee Minsky,1927年—2016年)
    AI大模型计算机科学家群英传:明斯基(MarvinLeeMinsky,1927年—2016年)作者:禅与计算机程序设计艺术/ZenandtheArtofComputerProgramming1.背景介绍1.1问题的由来人工智能(ArtificialIntelligence,AI)作为一门横跨计算机科学、认知科学、数学等多个学科的交叉学......
  • 快速掌握Matlab R2016a安装,就是这么简单
    MatlabR2016a下载方法:MatlabR2016a安装教程:1、右击下载好的压缩包,选择解压到MatlabR2016a2、打开文件夹【R2016a_win64】,右击下面的setup.exe,选择【以管理员身份运行】3、点击选择【使用文件安装密钥】,然后点击【下一步】4、选择【是】后,点击【下一步】5、选......
  • NOIP 2016 普及组初赛试题及解析(第三部分:阅读程序(1-2))
    ......
  • Shiro-550—漏洞分析(CVE-2016-4437)
    目录漏洞原理源码分析加密过程解密过程漏洞复现漏洞原理Shiro-550(CVE-2016-4437)反序列化漏洞在调试cookie加密过程的时候发现开发者将AES-CBC用来加密的密钥硬编码了,并且所以导致我们拿到密钥后可以精心构造恶意payload替换cookie,然后让后台最后解密的时候进行反序列化我们的......
  • APIO2016 烟火表演
    传送门给定一棵树,带边权。\(1\)的代价可以使某边权\(\pm1\)。求最小代价使从根到叶子距离都相等。\(n\le3\times10^5,w_e\le10^9\)。\(f_u(x)\)表示\(u\)的子树内把\(u\)到叶子的距离都变成\(x\)的最小代价。\(F_u(x)\)表示\(u\)的子树内把\(fa[u]\)到叶子......
  • JOI Open 2016
    T1JOIRIS你在玩俄罗斯方块,游戏区域是一个宽度为\(n\),高度足够大的矩形网格、初始时第\(i\)列有\(a_i\)个方块。给定参数\(k\),你可以做不超过\(10^4\)次操作,来将这个网格中的所有方块全部消除,一次操作形如:在网格的最顶端落下一个\(1\timesk\)或者\(k\times1\)......
  • 对 Windows Server 2016 进行优化时,可以考虑以下条目:这些步骤可以帮助提高 Windows Se
    对WindowsServer2016进行优化时,可以考虑以下条目:关闭不必要的服务:服务管理:通过“服务”管理工具(services.msc),禁用或设置为手动启动以下服务(根据实际需要):PrintSpooler(如果不使用打印功能)WindowsSearch(如果不需要文件索引)RemoteRegistryBluetoothSupportService(......
  • P3267 [JLOI2016/SHOI2016] 侦察守卫 题解
    P3267[JLOI2016/SHOI2016]侦察守卫题解\(n\le5\times10^5,D\le20\)的数据范围显然想到\(O(nd)\)的树形dp。考虑\(d\)这一维的状态设计。考虑\(i\)子树中的情况分为全部被覆盖和未全部被覆盖两种。对于第一种,显然我们要考虑子树中能向上覆盖影响的点的个数,于是设......
  • 2016 ACM/ICPC Asia Regional Qingdao Online(SDKD 2024 Summer Training Contest H2)
    A-ICountTwoThree题意给定n,求第一个\(\ge\)n的数k,且k=\(2^a3^b5^c7^d\)。思路考虑到样例很多,直接打表存入set省去数组排序操作,由于n$\le$1e9,所以只需要打到1e9后二分即可。(记得加上快读快写,T得饱饱的......
  • saber2016安装教程
    saber2016安装教程-知乎(zhihu.com)第一步:保证解压时某些应用程序不会被系统当作病毒自动删除。①下载安装包②断网;③关闭防火墙;④关闭windows安全中心—病毒和威胁防护—实时保护。解压文件包。“Saber_L-2016.03”用以安装;“license”文件夹用以破解。注意如果防......