首页 > 其他分享 >归档 221009 | 做题记录

归档 221009 | 做题记录

时间:2022-10-10 13:33:42浏览次数:61  
标签:记录 int 221009 read while maxn 端点 归档 区间

B. 萌萌哒

很容易想到对于形如 \([l_1, r_1]\) 和 \([l_2, r_2]\),只需让两个区间内每个数两两对应相等。由相等关系易联想到并查集。

如果暴力合并整个区间的话,复杂度是 \(\mathcal O(n^2\alpha)\) 的,考虑优化。

然而并没有想到怎么优化(哭哭

瞅了一眼题解,可以用倍增???过于玄学,下次再做吧(

D. Wilcze doły

因为都是正数,所以删最多,也就是说要删就得一次性删 \(d\) 个。

不难想到对于一个区间,肯定选择删掉区间内总和最大的连续 \(d\) 个数。

枚举右端点 \(i\),单调队列维护左右端点间总和最大的连续 \(d\) 个数。

问题来了,左端点怎么找?这是这道题的关键。需要想明白,以 \(i + 1\) 为右端点的区间的左端点 不可能比 以 \(i\) 为右端点的区间的左端点 更靠左。也就是说,左端点具有单调性

假设当前左端点为 \(l\),则当 \([l,i]\) 的总和减去最大的 \(d\) 个数的和后仍然大于 \(p\),就可以将 \(l\) 向后移动了。

namespace XSC062 {
using namespace fastIO;
const int maxn = 2e6 + 5;
int n, p, d, l, h, t, ans;
int a[maxn], s[maxn], q[maxn];
inline int max(int x, int y) {
	return x > y ? x : y; 
}
int main() {
	read(n), read(p), read(d);
	l = 1;
	q[h = t = 1] = d;
	for (int i = 1; i <= n; ++i) {
		read(a[i]);
		a[i] += a[i - 1];
		if (i >= d)
			s[i] = a[i] - a[i - d];
		if (i > d) {
			while (h <= t && q[h] - d + 1 < l)
				++h;
			while (h < t && a[i] - a[l - 1] - s[q[h]] > p) {
				while (h <= t && a[i] - a[l - 1] - s[q[h]] > p)
					++l;
				while (h <= t && q[h] - d + 1 < l)
					++h;
			}
			ans = max(ans, i - l + 1);
			while (h <= t && s[i] >= s[q[t]])
				--t;
			q[++t] = i;
		}
	}
	print(ans);
	return 0;
}
} // namespace XSC062

标签:记录,int,221009,read,while,maxn,端点,归档,区间
From: https://www.cnblogs.com/XSC062/p/16771939.html

相关文章

  • 工作中搭建的框架,记录下
    go_gin  基于gin搭建的一个搞性能框架,实现了一些基础功能,详情见项目的READMEhttps://gitee.com/huifang/go_gin tp6admin基于tp6搭建的一个后台,可以直接使用,支......
  • 一次磁盘占用率 100% 的排查记录
    你好,我是悟空。最近遇到一个服务器的问题:磁盘满了,占用率100%~这个问题太常见了,于是先来排查一波是哪些文件占用了大量磁盘。一、排查磁盘占用率100%1.1查看磁盘使用......
  • flood_it 方法记录
    心路历程根据题面的描述,我们面临的问题无非是,每次将色块更新成什么颜色。又因为是从左上角开始更新,所以我的有了第一个想法。将左上角的色块命名为“原色块”。对于每个......
  • 扎克伯格:未来技术能够记录我们的梦
    马克·扎克伯格在今天举办了Facebook的首届LiveQ&A,在此过程中对于网友提出的问题进行坦率的回答。当其中一名用户询问:“在VR之后会涌现什么新技术?”对此,扎克伯格坚信在未......
  • Springboot日志记录方案
    目录​​一、概述​​​​二、市面上的日志框架以及日志抽象层类​​​​三、slf4j+Logback​​​​第一种:简单配置​​​​第二种:通过logback专有的xml配置文件详细配置​......
  • tabulate结合loguru打印出美观又方便查找的日志记录!
    在开发过程中经常碰到在本地环境无法完成联调测试的情况,必须到统一的联机环境对接其他系统测试。往往是出现了BUG难以查找数据记录及时定位到错误出现的位置。​​【阅读全......
  • tabulate结合loguru打印出美观又方便查找的日志记录!
    在开发过程中经常碰到在本地环境无法完成联调测试的情况,必须到统一的联机环境对接其他系统测试。往往是出现了BUG难以查找数据记录及时定位到错误出现的位置。【阅读全文......
  • 20221009
    20221009(种)题目小朋友的数字题意每个人有3个数值,手上的数字,特征值和分数。每个人的特征值是这个人之前(包括这个人)的最大连续子段和。每个人的分数是这个人之前(不......
  • 位位运算 方法记录
    题解位运算简单理解:and(&):有假则假;or(|):有真则真;不妨从输入样例入手,看看能有什么发现。举几个例子:1(001)&2(010)==3(011)1(001)|2(010)==0(000)2(010......
  • 【博学谷学习记录】超强总结,用心分享 。多线程相关点知识学习。
    一、实现多线程1.1了解多线程多线程是指从软件或硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提......