Codeforces 1690G 思维

C++火车头优化 本文章写了本人(C++OIer)在日常coding中常用的几种优化方法/卡常技巧(bushi 阅读详情
题意:

有nnn节火车车厢,从左到右依次是头至尾,每个车厢有一个最高速度viv_{i}vi​,如果后面的车的速度不小于前车vi+1≥viv_{i+1}\geq v_{i}vi+1​≥vi​,那么后车的速度会受到限制,会变为前车速度viv_{i}vi​,反之则不受影响。我们把连续的极长一段的共速车厢看作一辆完整火车。给出mmm个操作,每个操作给出两个整数x dxx\ dxx dx,代表xxx车厢的最高速度减少dxdxdx,在每次操作后给出能组成的火车数。

方法:

利用mapmapmap或vectorvectorvector,每次只保存火车头,在操作的时候,我们检查一下xxx是否在mapmapmap里,如果在mapmapmap里有xxx,那么这节火车头降速,然后检查后面的火车头速度是否不小于这个新的vxv_{x}vx​,如果后面的火车头的速度≥vx\geq v_{x}≥vx​,那么这个火车头会被xxx同化,直接并入xxx所在的火车,删去这个火车头即可;如果mapmapmap里没有xxx,那么我们需要检查一下他是否脱离了前面火车头的控制,如果脱离了控制,就说明组成了一节新的火车,然后再检查后面的是否速度是否≥\geq≥这个新的火车头的速度,如果是,那么被这个新的同化,把后面的删去即可。每次操作后输出map.size()map.size()map.size()即可

#include<bits/stdc++.h>
#define ll long long
#define fr first
#define se second
using namespace std;

int read()
{
	int ret=0,base=1;
	char ch=getchar();
	while(!isdigit(ch))
	{
		if(ch=='-') base=-1;
		ch=getchar();
	}
	while(isdigit(ch))
	{
		ret=(ret<<3)+(ret<<1)+ch-48;
		ch=getchar();
	}
	return ret*base;
}

int n,m,a[100005];
vector<int>ans;
map<int,int>map1;

void work()
{
	map1.clear();
	ans.clear();
	n=read();m=read();
	for(int i=1;i<=n;i++) a[i]=read();
	int l=1,r=1;
	while(l<=n)
	{
		while(r+1<=n&&a[r+1]>=a[l]) r++;
		map1[l]=a[l];
		l=++r;
	}
	while(m--)
	{
		int x=read(),dx=read();
		a[x]-=dx;
		if(map1.count(x))
		{
			map1[x]-=dx;
			auto it=map1.lower_bound(x); it++;
			while(it!=map1.end()&&it->se>=map1[x]){
				map1.erase(it--);it++;
			}
		}
		else
		{
			auto it=map1.lower_bound(x); it--;
			//it不可能是begin(),因为第一节车厢一定是一个火车头
			if(it->se>a[x]) 
			{
				map1[x]=a[x];
				it=map1.lower_bound(x); it++;
				while(it!=map1.end()&&it->se>=map1[x]){
					map1.erase(it--);it++;
				}
			}
		}
		ans.push_back(map1.size());
	}
	for(auto i:ans) printf("%d ",i);
	putchar('\n');
}

int main()
{
	int t=read();
	while(t--) work();
 	return 0;
}

c++火车头N合一 c++巨长火车头~其实也没有那么长~ 阅读详情

相关推荐

【C++】快读&快写模板及火车头优化代码

快读快写,顾名思义,就是提升输入和输出的速度。在这里简单介绍一下几种输入输出的优劣。C++cin / cout输入输出:优点是读入的时候不用管数据类型,但是缺点就是比scanf/printf慢一些。这里给一个关同步流的代码,可以显著优化cin / cout需要注意的是,关了同步流之后就不能再用了。C输入输出:与 C++ 对比,比cin / cout快一些,但使用方法细节比较多,容易出锅。快读/快写:只能处理整数读入 / 输出,但是要比标准输入输出函数都快得多。

星河依旧长明的博客 2130

C++程序优化方法总结

1. 读入优化(快读) 原理:利用getchar读入更快的原理,读入字符后转换成数字 代码: int qread() { int x(0),y(1),c=getchar(); while(c<'0'||c>'9') { if(c=='-')y=-1; c=getchar(); } while(c>='0'&&c<='9') { x=(x<<1)+(x<<3)+(c^48); c=getchar(); } return

Andysun06的博客 2592

C++全能工具箱:从优化火车头到高精度计算的实战整合

本文为算法竞赛选手打造了一个开箱即用的C++全能工具箱,深度解析了如何定制高效的编译器优化火车头,并整合了高精度计算、快速IO、数学工具等核心模块。通过实战案例,展示了如何利用该工具箱简化编码流程,将开发者从繁琐的底层实现中解放出来,专注于算法逻辑,从而在比赛中提升效率与代码可靠性。

open4的博客 251

G. Count the Trains【思维(2000

结果正解压根就不需要修改这个区间的值——【为什么能想到:让我们想一个极端情况,每次都是修改头尾,实际上中间的压根对答案不产生贡献——也就是说我只要修改产生贡献的点就行了——什么样的点产生贡献呢,维护一个严格下降序列就行】当时是这么想的,修改某个点的贡献是看前一个是否小于,小于贡献+1,然后二分到后面第一个小于他的位置,删去这个区间的贡献,然后修改这个区间的值;其他都好说,但这个修改这个区间的值,实在不知道咋处理;(上图是一开始的错误思路;总之还是很值得再做的一道题。

zlq7777的博客 212

OI程序优化技巧

OI程序优化技巧

luhaoren2009的博客 1195

C++竞赛向火车头(免费下载)

前48行请不要在csp/NOIP/NOI中使用

#797 Div.3 G. Count the Trains 思维

1690G 2000,思维,数据结构nnn 辆车排成一列,每列车的速度不能超过前面的车的速度也不能超过自己的最高限速,现给出它们的最高限速。并给出 mmm 次修改:形如 ,表示将第 iii 辆车的最高限速降低 xxx ,保证任意时刻车的速度为非负。求出每次操作后序列的总段数是多少。(例如 分别算1、2、3段)。题目意思就是维护一个最长严格下降子序列的长度。 注意到修改只有降低,没有升高。也就是说假如第 iii 辆车对答案没有贡献,那么之后除非对第 iii 辆车进行修改,否则它永远对答案没有贡献,同时即便修

Strezia的博客 518

【 Git学习记录(三)】推荐四款主流的Git代码托管平台 —— GitHub、GitLab、Gitee、Coding

了解过Git之后,作为一个程序猿最基本的,你还需要了解目前主流的在线代码托管平台,并至少选择其中一款在平时开发中使用。这里特别介绍以下四款: 国外平台 GitHub —— 全球最流行的代码托管平台 GitLab —— 基于git的仓库管理程序 国内平台 Gitee —— 开源中国旗下的代码托管平台 Coding —— 支持社交元素的代码托管平台 一. GitHub 链接地址:https://github.com/ GitHub目前是全球最流行的代码托管平台(别称:全球最大的同性交友.

JZevin的博客 6092

思维+双指针

如果我们不采取任何措施,那么我们看完这n段视频的总时间一定是 a1+a2+a3+......+an+ n,即我们看完一部下载一部,可是我们可以在观看视频的时候继续下载别的视频,这样我们就可以节约2min的时间,因此我们就可以利用排序后的视频时长进行双指针,如果这两个视频的不会超限,那么我们就可以节约2min的时间。给我们n个礼物(n时偶数),每个礼物的重量为ai,现在让我们对这些礼物两两打包,打包后的重量等于两个礼物重量之和,并且你会得到(a1+a2)/k的贡献,让你最大化这个贡献。

qq_62249357的博客 302

第4章 本地一键部署(新手首选)

本文介绍了OpenClaw的本地部署方法,特别适合新手用户。部署过程仅需执行一条命令,通过自动脚本完成安装和配置向导。安装完成后,用户可通过终端TUI或Web控制面板验证部署是否成功。文章还提供了常见问题的排查方法,包括端口占用、权限不足、APIKey无效和安装卡顿等情况。整个部署流程简单直观,无需手动修改配置文件,适合快速搭建使用。

eastyuxiao的专栏 194

【SLAM】SVO2.0编译运行和论文代码解读

SVO2是我遇到的最难编译的代码了,可能公开版本不能放太鲁棒的代码吧,搞了快一个星期,终于跑起来了。

iwanderu的博客 5973

#797Div3 codeforcesround (A~G题)

Problem - G - Codeforces思维。不断维护递减序列。set内保存的是每节火车的头。对于一个修改,如果其前一个id的值比它大那就放入集合s。后面依次排出不符合严格递减序列的元素。复杂度O(mlogn)。 F. Shifting String Problem - F - Codeforces画出来就是很多个圈,他们之间能不断右移。最小交换次数就是所有圈的最小右移最小周期数的最小公倍数。思路很好想,主要在于怎么解决。处理方法上想到dfs,求出圈的序列。然后不断枚举可能性求出最小的右移周期。考虑

Crushlikearush的博客 399

使用PyTorch设计卷积神经网络(CNN)来处理遥感图像Indian Pines数据集

使用PyTorch设计卷积神经网络(CNN)来处理遥感图像Indian Pines数据集

XAX520_1314的博客 2490

火车头/信仰优化

用于缩短程序运行速度的手法targetoptimize1optimize2optimize3optimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimizeoptimize。

Gohldg的博客 656

基于多物理参数数据融合和先进人工智能算法的锂电池热失控监测传感器

基于多物理参数数据融合和先进人工智能算法的锂电池热失控监测传感器是多种方案中的优选项!是一种快速、准确、可靠、应用广泛的传感方案!可有效监测锂离子电池热失控风险,保障化学能储能电站安全!

chicheng_danxin的博客 2412

51单片机 驱动有源/无源蜂鸣器+Proteus仿真

51单片机 驱动有源/无源蜂鸣器+Proteus仿真 相关篇《51单片机 Proteus仿真有源蜂鸣器始终不响原因及解决方法》 电路搭建 采用NPN管驱动有源蜂鸣器电路 采用PNP管驱动有源蜂鸣器电路 采用PNP管驱动无源蜂鸣器 采用NPN管驱动无源蜂鸣器 Proteus元器件列表 实例代码 /************************************************************************************* * 实验现象:下载程序

perseverance51博客 2万+

Codeforces Round 950 (Div. 3) 个人题解 (A~F1)

矩阵 [[1,2],[3,4]]、[[1]]、[[1,5,3],[2,6,4]] 包含排列,而矩阵 [[2]]、[[1,1],[2,2]]、[[1,2],[100,200]] 不包含排列。, cm 使得对数组 a1, a2, …例如,数组 [1]、[2,1,3]、[5,4,3,2,1] 是排列,而数组 [1,1]、[100]、[1,2,4,5] 不是排列。每个测试用例描述的第一行分别包含三个整数 n、f 和 k(1≤f,k≤n≤100)——立方体的数量、德米特里最喜欢的立方体的索引以及移除的立方体的数量。

Lazy_ChessPlayer的博客 1048

AI幻觉缓解的成本效益分析:投入产出比优化

在当今AI技术飞速发展的时代,AI幻觉成为了一个不容忽视的问题。AI幻觉就像是AI在“做梦”,会给出一些不符合实际或者错误的答案。我们这篇文章的目的就是要分析缓解AI幻觉所需要投入的成本和能够获得的效益,看看怎么能让投入和产出的比例达到最优。范围涵盖了常见的AI应用场景,比如智能客服、自动驾驶等领域。接下来,我们会先介绍一些和AI幻觉、成本效益分析相关的术语。然后用一个有趣的故事引出核心概念,解释什么是AI幻觉、成本效益分析等,以及它们之间的关系。

AI 原生应用开发的博客 935

优化火车头

m0_71934197的博客 467

RSL-RL:开源人形机器人强化学习控制研究库

摘要:RSL-RL是一款专为机器人领域设计的开源强化学习库,其核心特点是紧凑性、可修改性和高性能。该库聚焦PPO和BC两大主流算法,并整合了对称性增强、好奇心驱动等机器人专用技术。通过纯GPU训练优化,RSL-RL在大型仿真中展现出卓越的吞吐性能,已成功应用于腿足运动控制、全身协调等多个机器人研究场景。其轻量级架构包含运行器、算法和网络三个可独立修改的组件,支持TensorBoard等主流日志工具。该框架特别适合需要快速原型开发的机器人研究者,但不适用于通用机器学习基准测试。开源地址:https://git

2506_90492529的博客 1675

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

GCC 火车头优化

当你不打算写正解试图打暴力的时候可以试试,万一过了呢? ╰(°▽°)╯ (忘了哪里找到的了,本地存了好久) 效果好象还不错(?) Code #pragma GCC optimize("-fdelete-null-pointer-checks,inline-functions-called-once,-funsafe-loop-optimizations,-fexpensive-optimizations,-foptimize-sibling-calls,-ftree-switch-conversion,.

果光的博客 916

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【6.7】Codeforces Round #797 (Div. 3)

ALL:7 AC:6 补题:1A B C D 略。题意:n 个数,数字两两配对,配对的权值定义为 ⌊x+yk⌋\left \lfloor \frac{x+y} {k} \right \rfloor⌊kx+y​⌋ 。问你配对后的最大权值。思路:先全取模。剩下的数两两配对。赛时写的是 k2k^2k2 的复杂度,不好写。AC代码:O(k2)O(k^2)O(k2) https://codeforces.com/contest/1690/submission/159817620 O(k)

ZhgDgE的博客 243

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

CQOI2018day1 (XJOI contest908)

一题 破解D-H协议 时间限制:1S 内存限制:512M 具体思路:BSGS,没了 AC代码 #include<bits/stdc++.h> using namespace std; #define int long long int n,i,j,p,g,a,b,A,B; map<int,pair<...

a380988182的博客 496

CodeForces ~ 996C ~ Tesla (思维 + 模拟)

题意 4*n停车场,第二行和第三行是过道,第一行和第四行是车库,0表示空地。在过道的车可以上下左右四个方向随意走动,车一旦进入第一和第四行就不能动了。现在有k辆车(1~k)要停车,编号为 i 的车要停入编号为 i 的车库,保证车和车库的编号都只有一个。一辆车移动一下算一步,现在要把所有的车入库,请你输出一种20000步以内的解法,没有输出-1。 思路 我们让这些车在第二行和第三行兜圈...

张松超的博客 822
上一篇: 牛客#2 L,多层图dp
下一篇: Codeforces 1624G 按位贪心
stdforces
博客等级 码龄4年 9粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值