首页 > 其他分享 >8月18日测试总结

8月18日测试总结

时间:2023-08-18 16:47:54浏览次数:40  
标签:总结 head int 18 高度 ++ tail maxn 测试

8月18日测试总结

触手( xyx )

题目大意:

给定 \(n\) 个柱子,每一次只能刷相邻的 \(x\) 个柱子,在这 \(x\) 个柱子中,只能刷到其中高度最低的,问最大的粉刷面积及其最少操作次数

思路:

首先,用一个单调队列维护可能的操作高度,然后,再用一个单调队列维护当前位置的最终高度,也就是所有操作高度中最高的那一个。最后,对于一个还未达到最终高度的柱子找到最长的合法操作即可

Code:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=2e5+1;
int ans;
int n,x,tot;
int h[maxn];
int b[maxn];//对它的操作高度(不一定是最终高度) 
int c[maxn];//记录最终高度  
int qmin[maxn];
int qmax[maxn];
int head=1,tail;
signed main()
{
	//freopen("xyx4.in","r",stdin);
	std::ios::sync_with_stdio(false);
	cin>>n>>x;
	for(int i=1;i<=n;++i)cin>>h[i];
	for(int i=1;i<=n;++i)//单调递增队列(以i为队首,长度为x的一串中高度最小的)
	{
		while(head<=tail&&i-qmin[head]+1>x)++head;
		while(head<=tail&&h[qmin[tail]]>=h[i])--tail;
		qmin[++tail]=i;
		if(i>=x)
			b[i-x+1]=h[qmin[head]];
	}
	head=1,tail=0;
	for(int i=1;i<=n;++i)//单调递减队列(找最终高度)  
	{
		while(head<=tail&&i-qmax[head]+1>x)++head;
		while(head<=tail&&b[qmax[tail]]<=b[i])--tail;
		qmax[++tail]=i;
		c[i]=b[qmax[head]];
		ans+=c[i];
	}
	for(int i=1;i<=n;++i)
	{
		int j=i;
		while(j<n&&c[j+1]==c[i])++j;//找到包括第i位的最长的合法操作 
		tot+=(j-i+1+x-1)/x;
		i=j;
	}
	cout<<ans<<endl;
	cout<<tot<<endl;
	return 0;
}
/*
5 2
1 2 4 2 3
9
3
1 2 2 2 0
1 2 2 2 2

8 2
2 4 4 6 5 2 4 1
25
5
2 4 4 5 2 2 1 0
2 4 4 5 5 2 2 1
*/

数数( count )鸽

砖( wude )鸽

转化( trans )鸽

标签:总结,head,int,18,高度,++,tail,maxn,测试
From: https://www.cnblogs.com/PenguinChen/p/17640920.html

相关文章

  • 测试 | CICD | JEKINS 持续
    #Jenkins持续集成##介绍: *持续集成CI *jenkins介绍 Jenkins是开源的java语言开发的持续集成工具,支持CI(持续集成),CD(持续交付项目)。集成Jenkins可以用于一些测试和项目部署。##jenkins安装配置 *1.下载war包放到一个没有中文的目录下 *2.使用指令启动jenkins服务--bs架......
  • CF 1860 VP
    A猜结论,谁都会!B简单数学,谁都会!C简单博弈,谁都会!D数据范围小,\(O(N^4)\)乘小常数可以过。\(00,10,01,11\)个数均知道。\(i\)是\(1\)导致\(01,11\)总和增加\(i\)。dp即可。E要么不传送。要么\(x\)到一个地方,传送到一个地方,再到\(y\)。预处理所有可能的......
  • Oracle——redo+undo总结
    Oracle——redo+undo总结 《Oracle------redo》重做日志文件(redologfile)对数据库来说至关重要,他们是数据库的事务日志;Oracle数据库维护着两类重做日志文件:在线重做日志文件(redo)和归档重做日志文件(archivelog),(归档重做日志文件实际上就是已填满的“旧”在线重做日志......
  • SPI驱动0.96寸OLED单色屏刷新率测试以及代码优化改进,方法适用于SPI驱动其他设备
    目前嵌入式当中OLED常用驱屏方式有两种:SPI或IIC。以速度来讲,SPI速度相较于IIC会快上一些,硬件IIC相较于模拟IIC速度又会快上一些。此外还有模拟SPI的,但该种用法我遇到较少,本文就硬件SPI驱动OLED屏幕做一个简单的刷新率测试。 测试硬件平台:CH32V307VCT6+杜邦线连接0.96寸SPI接口O......
  • 软件测试|测试平台开发-Flask 入门:编写第一个简单 Web 应用
    简介Flask是一个轻量级的PythonWeb框架,它使得创建Web应用变得简单快捷。相比于Django框架,它具有以下的优点:轻:Flask是一个轻量级的Web框架,使用Python语言编写易:较其他同类型框架更为灵活、轻便且容易上手快:小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务......
  • 软件测试|使用 VMware 安装 Ubuntu 虚拟机的详细教程
    简介在日常工作中,我们有时候会遇到需要在Linux系统中部署环境,但是申请服务器资源的时效性又不高,很多时候就需要我们自己在电脑中有一套Linux的环境,但是如何在Windows电脑中部署Linux系统呢?很多时候,在电脑中创建一个虚拟机是我们的首选,在本教程中,我们将介绍如何使用VMware虚拟化软......
  • 软件测试|Linux三剑客之grep命令详解
    简介grep是一款在Linux和类Unix系统中广泛使用的文本搜索工具。它的名字来源于GlobalRegularExpressionPrint(全局正则表达式打印),它的主要功能是根据指定的模式(正则表达式)在文本文件中搜索并打印匹配的行。grep非常强大且灵活,可以用于日志分析、文件过滤、代码搜索等多种场......
  • 软件测试|Linux三剑客之sed命令详解
    简介sed(StreamEditor)是一款流式文本编辑器,在Linux和类Unix系统中广泛使用。它的设计目的是用于对文本进行处理和转换,可以用于替换、删除、插入、打印等操作。sed命令通过逐行处理文本,允许您使用简单的命令来编辑大量文本数据。本文将详细介绍sed命令的基本用法和一些常见的......
  • 817考试总结
    暑假玩了三周太开心了。第一周去了桂林广西自驾游,去了千户苗寨漓江北屿银滩等地方;后两周回了老家巫溪,天天游泳,还和小表弟玩了几天,最后恋恋不舍的回重庆上课了。不扯远了来总结一下开学第一场考试 今天上午9:20何老板突然叫我们准备考试什么突击检查。一看试题,只有三道。......
  • iBooker 布客技术评论 20230818
    一、程序员自检手册为了避免焦虑,你首先需要做的就是梳理你的业务:(1)你所在的行业是轻资产还是重资产?重资产就是人绕着机器转,创业需要买一大堆设备。如果是重资产,赶紧换一个。(2)你在行业中的位置,离最终用户有多远?如果中间有一堆中间商赚差价,要么干掉,要么走人。(3)你目前的技能能够......