首页 > 其他分享 >LibreOJ L3735 「COCI 2015.11」 VUDU

LibreOJ L3735 「COCI 2015.11」 VUDU

时间:2023-01-18 22:55:46浏览次数:65  
标签:begin int hsh 2015.11 ge long VUDU COCI

https://loj.ac/p/3735


套路 \(\times 3\)。


对于求平均数,直接对每一个 \(a_i\gets a_i-P\),和 \(\ge 0\) 的连续子序列就满足平均数 \(>P\)。

然后对其进行前缀和处理 \(s_i=\sum\limits_{j=1}^{i-1}a_j\),则连续子序列的和就可以转为差分处理,只要 \(s_r-s_l\ge 0(l<r)\) 则说明满足条件

然后能发现这玩意就是求 \(i < j, s_i\le s_j\) 的个数(注意有一个开头的 \(s_0=0\)),维护即可。


# include <bits/stdc++.h>
using namespace std;
const int N = 1000000;
vector <long long> hsh;
int m;
int getsum (long long x) {
	return lower_bound (hsh .begin (), hsh .begin () + m, x) - hsh .begin ();
}
long long a [N + 10], t [(N + 10) << 1];
void add (int u) {
	for (int i = u; i <= (int) hsh .size (); i += i & -i) {
		++ t [i];
	}
	return ;
}
long long query (int u) {
	long long ans = 0;
	for (int i = u; i; i -= i & -i) {
		ans += t [i];
	}
	return ans;
}
int main () {
	int n;
	scanf ("%d", & n);
	for (int i = 1; i <= n; ++ i) {
		scanf ("%lld", & a [i]);
	}
	long long p;
	scanf ("%lld", & p);
	for (int i = 1; i <= n; ++ i) {
		a [i] += a [i - 1] - p;
		hsh .push_back (a [i]);
	}
	hsh .push_back (LONG_LONG_MIN);
	hsh .push_back (0);
	sort (hsh .begin (), hsh .end ());
	m = unique (hsh .begin (), hsh .end ()) - hsh .begin ();// 离散化
	long long ans = 0;
	add (getsum (0));// 记得先扔一个 0
	for (int i = 1; i <= n; ++ i) {
		ans += query (getsum (a [i]));
		add (getsum (a[i]));
	}
	printf ("%lld", ans);
	return 0;
}

标签:begin,int,hsh,2015.11,ge,long,VUDU,COCI
From: https://www.cnblogs.com/lhzQAQ/p/17060811.html

相关文章

  • P7312 [COCI2018-2019#2] Sunčanje
    想要使第i个矩形覆盖第j个矩形,必须满足:$i>j$$x1_i\lex2_j$&&$x1_j\lex2_i$$y1_i\ley2_j$&&$y1_j\ley1_i$第一个条件可以直接排序。考虑使用cdq分治完......
  • Solution -「COCI 2009-2010」「洛谷 P8076」RESTORAN
    \(\mathscr{Description}\)  Link.  给定一个含\(n\)个点\(m\)条边的简单图,求一种边二染色方案,使得所有\(\deg\ge2\)的结点都邻接于两种颜色的边.  \(n......
  • 洛谷P4956 [COCI2017-2018#6] Davor
    [COCI2017-2018#6]Davor题面翻译在征服南极之后,Davor开始了一项新的挑战。下一步是在西伯利亚、格林兰、挪威的北极圈远征。他将在2018年12月31日开始出发,在这之......
  • P7163 [COCI2020-2021#2] Svjetlo
    题意给你一棵点权是\(0/1\)的树,你可以从任意一点开始,走到任意一点结束,每到达一个点,都要翻转当前的点权。给定初始的点权,求使得整棵树的点权都变成\(1\)的最短路径长度......
  • luogu P7201 [COCI2019-2020#1] Džumbus题解
    须知本题解骨架是本人由官方题解翻译得来的,并补充了一些不详细的地方,修改了一些错误,自己写了每一个子任务的代码(因为官方题解代码和文本不太匹配)。基本信息任务名:Džumb......
  • P6406 [COCI2014-2015#2] Norma 题解
    前言洛谷上很多大佬都写的CDQ分治的解法。但看了某篇大佬的线段树解法,受益匪浅,于是决定写一篇题解来记录一下这种解法。前置知识:单调栈,线段树题目通道题目描述给......
  • 题解 P5188 【[COCI2009-2010#4] PALACINKE】
    postedon2022-07-2520:12:26|under题解|source做法:矩阵优化DP+容斥原理。矩阵优化DP先不要考虑商品,写个不管约束条件的DP。令\(f_{t,u}\)表示在\(t\)......
  • 题解 P7775 【[COCI 2009-2010 #2] VUK】
    postedon2021-08-0316:20:45|under题解|sourcebfs+二分。首先算出一个数组\(w_{i,j}\),表示\((i,j)\)这个格子与离它最近的树的距离。这个过程可以参考P133......
  • P7676 COCI2013-2014#5 TROKUTI
    P7676COCI2013-2014#5TROKUTI-洛谷|计算机科学教育新生态(luogu.com.cn)首先考虑三角形的形成条件(注意到题面保证了无三线共点):三条边;任意两条边不平行。考虑......
  • Luogu P4421 [COCI2017-2018#1] Lozinke
    题目链接:​​传送门​​一开始直接AC自动机每个串暴力跳fail显然会T,44分#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<complex>#i......