首页 > 其他分享 >P4392 [BOI2007]Sound 静音问题 题解

P4392 [BOI2007]Sound 静音问题 题解

时间:2022-10-08 12:23:06浏览次数:44  
标签:Sound maxx include minn int 题解 tr MAXN P4392

用树状数组维护区间最值,然后求和即可。

//P4392 [BOI2007]Sound 静音问题
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
const int INF=0x7f7f7f7f,MAXN=1000005;
struct Bit
{
	int mx,mn;
}tr[MAXN];
int n,m,c,x,a[MAXN];
vector<int> ans;
#define lowbit(x) ((x)&-(x))
void add(int x,int c)
{
	for(int i=x;i<=n;i+=lowbit(i))
	{
		tr[i].mx=max(tr[i].mx,c);
		tr[i].mn=min(tr[i].mn,c);
	}
	return;
}
bool sum(int l,int r)
{
	int maxx=-INF,minn=INF;
	while(l<=r)
	{
		while(r-lowbit(r)>=l)
		{
			maxx=max(maxx,tr[r].mx);
			minn=min(minn,tr[r].mn);
			r-=lowbit(r);
		}
		maxx=max(maxx,a[r]);
		minn=min(minn,a[r]);
		r--;
	}
	return abs(maxx-minn)<=c;
}
int main()
{
	scanf("%d%d%d",&n,&m,&c);
	for(int i=1;i<=n;i++)
	{
		tr[i].mx=-INF;
		tr[i].mn=INF;
	}
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		add(i,a[i]);
	}
	for(int i=1;i<=n-m+1;i++)
	{
		if(sum(i,i+m-1))
		{
			ans.push_back(i);
		}
	}
	if(ans.empty())
	{
		printf("NONE\n");
	}
	else 
	{
		for(int u:ans)
		{
			printf("%d\n",u);
		}
	}
	return 0;
}
/*
 * 洛谷
 * https://www.luogu.com.cn/problem/P4392
 * C++20 -O0
 * 2022.10.8
 */

标签:Sound,maxx,include,minn,int,题解,tr,MAXN,P4392
From: https://www.cnblogs.com/2020gyk080/p/16768551.html

相关文章

  • scanf安全问题解决:
    1.加#define_CRT_SECURE_NO_WARNINGS  //必须写在程序的首句2.加#pragmawarning(disable:4996)       //可以写到任意位置 3.将scanf改为scanf_s......
  • LeetCode 阶乘后的零算法题解 All In One
    LeetCode阶乘后的零算法题解AllInOnefactorial阶乘后的零原理图解实现factorial计算后面0的个数,除0!本身的0阶乘!https://www.shuxuele.com/num......
  • PAT程序设计题解
    @目录7-1PY圆面积输入格式:输出格式:输入样例:输出样例:7-2求正弦值输入角度输入格式:输出格式:输入样例:输出样例:7-3PY时间差输入格式:输出格式:输入样例:输出样例:......
  • 「题解」Codeforces GYM 102268 J Jealous Split(300iq Contest 1 J)
    怎么想到的结论?结论是,如果把看成最小化\(\sum{s_i}^2\),那么一定满足条件。证明是考虑如果相邻两段\(s>t\),如果不满足条件即\(s-t>\max\),说明将\(s\)和\(t\)交界处......
  • 阿里云移动端热修复-Sophix(for Android)-问题解答
    前段时间了解了阿里云的热修复Sophix的基本使用,在使用过程中遇到很多问题,特此记录一下。 1、热修复可以发多个补丁么?答:补丁可以发好多次,但只能发布一个补丁。例如:我已......
  • CF1508C题解
    设题目给定的边为实边,未给出的为虚边容易发现2个性质:1.设所有实边的权值异或和为\(s\),则令一条未给出的边的权值为s,其他为0最优考虑求出虚边构成的连通块,这是个经典问题......
  • [SCOI2005] 骑士精神 题解
    题目描述解法采用IDA*算法。不移动骑士而移动空格。每次限制深度,然后对每个遍历到的点进行一次估价,估价函数的值即为当前状态和终点的差异数。如果估计的加上已经确......
  • P2467 地精部落 题解
    P2467地精部落题解比较恶心的一道线性dp。要求1~N的排列,满足a[i-1]<a[i]>a[i+1]或a[i-1]>a[i]<a[i+1],求这样的排列的个数。既然是线性dp,那么状态一定和长度有关,一维的......
  • 答题比赛难题解析(2)
    1、以下说法中正确的个数是():1)实体-关系图和数据流图也可以描述分析模型2)和设计工作流的对象相比较,分析工作流的对象的特点是仅存在于内存中,不保存到硬盘3)每个用例映......
  • 答题比赛难题解析(1)
    1、针对某组织流程的改进,以下列出的措施中,可以采取的个数是()1)引进新的业务实体取代现有业务工人的责任2)在现有业务实体上增加新的责任3)引进新的业务工人取代现有业......