UVa 12299 RMQ with shifts(线段树单点修改 区间查询)

【AI之路】cmd命令行通过Huggingface镜像站快速下载模型文件的方法 Hugging Face Hub 是分享机器学习模型、演示、数据集和指标的首选之地。huggingface_hub 库可以轻松下载Huggingface上有用的模型和数据集元数据。但大模型文件通常较大,国内下载太慢,那有没有高效便捷的方法?这个当然必须有!看到了吗?只是添加一个参数,下载大模型就搞定了。当然也可以使用python程序来下载。具体见前期博文:【AI之路】使用huggingface_hub通过huggingface镜像站hf-mirror.com下载大模型(附代码,实现大模型自由) 阅读详情

由于命令长度最大才30,shift操作包含位置的数量不超过12,可以视为常数。

把每一个shift操作当成N个单点修改即可。

对命令字符串解析,使用:

for(int j=0;j<len;j++){
    if(isdigit(s[j])){
     sscanf(&s[j],"%d",&pos[p++]);
    }
    while(isdigit(s[j])){
     j++;
    }
   }

比较方便。


代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#include <algorithm>
#define maxn 100005
int a[maxn<<2];
int n[maxn];
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,r
#define INF 10000000
void pushup(int rt){
	int lc=rt<<1,rc=rt<<1|1;
	a[rt]=min(a[lc],a[rc]);
}

void build(int rt,int l,int r){
	if(l==r){
		a[rt]=n[l];
		return ;
	}
	int mid=(l+r)>>1;
	build(lson);
	build(rson);
	pushup(rt);
}

void update(int rt,int l,int r,int pos,int num){
	if(l==r){
		a[rt]=num;
		return ;
	}
	int mid=(l+r)>>1;
	if(mid>=pos) update(lson,pos,num);
	else update(rson,pos,num);
	pushup(rt);
}

int Query(int rt,int l,int r,int L,int R){
	if(l>=L&&r<=R){
		return a[rt];
	}
	int mid=(l+r)>>1;
	int res=INF;
	if(mid>=L) res=min(res,Query(lson,L,R));
	if(mid<R) res=min(res,Query(rson,L,R));
	return res;
}
int N,Q;
int main(){
	scanf("%d%d",&N,&Q);
	for(int i=1;i<=N;i++){
		scanf("%d",&n[i]);
	}
	build(1,1,N);
	for(int i=1;i<=Q;i++){
		char s[40];
		scanf("%s",s);
		if(s[0]=='q'){
			int pos[2];
			int p=0;
			int len=strlen(s);
			for(int j=0;j<len;j++){
				if(isdigit(s[j])){
					sscanf(&s[j],"%d",&pos[p++]);
				}
				while(isdigit(s[j])){
					j++;
				}
			}
			printf("%d\n",Query(1,1,N,pos[0],pos[1]));
		}
		else{
			int pos[30];
			int p=0;
			int len=strlen(s);
			for(int j=0;j<len;j++){
				if(isdigit(s[j])){
					sscanf(&s[j],"%d",&pos[p++]);
				}
				while(isdigit(s[j])){
					j++;
				}
			}
			for(int k=0;k<p;k++){
				int next=(k+1)%p;
				update(1,1,N,pos[k],n[pos[next]]);
			}
			int tmp=n[pos[0]];
			for(int j=0;j<p-1;j++){
				n[pos[j]]=n[pos[j+1]];
			}
			n[pos[p-1]]=tmp;
		}
	}
	return 0;
}
/*
7 5
6 2 4 8 5 1 4
query(3,7);
shift(2,4,5,7);
query(1,4);
shift(1,2);
query(2,2);
*/


快手NS sig3签名算法(2025年1月) 阅读详情

相关推荐

Unity地形数据高效转换:从Terrain到3DMAX的OBJ导出实战

本文详细解析了Unity地形数据无法直接导入3DMAX的原因,并提供了高效转换的实战方案。通过编写自定义编辑器脚本,将Unity Terrain的高度图数据“烘焙”为静态网格模型,并以OBJ格式导出。文章重点讲解了核心代码逻辑、分辨率选择对模型精度的影响,以及在3DMAX中导入和优化模型的实用技巧,旨在打通Unity与3DMAX之间的数据协作壁垒。

sky77的博客 447

RMQ with Shifts

RMQ with Shifts 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述     In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for each query (L, R) (L      In this pro

梧桐下的四叶草 646

Orcad 17.2导出PDF原理图终极指南:从Ghostscript安装到带属性书签配置

本文是Orcad 17.2导出高质量PDF原理图的终极指南。针对导出过程中常见的Ghostscript安装报错、软件卡死及版本兼容性问题,提供了详细的解决方案。重点推荐使用Ghostscript 9.53.3版本以确保最佳兼容性,并深入讲解了从安装配置、内存优化到高级书签属性设置的完整流程,帮助硬件工程师稳定、高效地生成带完整器件属性和导航书签的PDF文档。

weixin_29281915的博客 396

RMQ with Shifts(线段树单点跟新)

Problem Description In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for each query (L, R) (L In this problem, the array A is no longer static: we need to suppo

青春无悔 1756

运用AD进行stm32最小系统PCB图的绘制

运用AD进行stm32最小系统PCB图的绘制一、PCB图的绘制(1)布局(2)布线(3)覆铜(4)电气规则检查二、给PCB添加logo三、生成garber文件总结 一、PCB图的绘制 (1)布局 1.画好原理图后,新建一个PCB项目 2.在Design中选择第二项,导入器件 3.先点击右下角第一项,再点第二项导入器件 导入成功 4.导入后效果 选择紫红色方框,按电脑上的delete键把它删掉 5.在Tools选择Outside Board,自动排布器件 排布后效果如图 6.画线,确定板子范围

lucario1的博客 2149

SAP 配额修改 + 修改记录写入实现

采购配额修改并写入修改记录 cdhdr 和 cdpos

GAVIN 1098

RMQ with Shifts (线段树)

In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for eachquery (L, R) (L ≤ R), we report the minimum value among A[L], A[L + 1], . . . , A[R]. Note that theindices ...

a1046765624的博客 506

AutoSAR MemMap模块概述及配置参数详解

这个模块是干啥的?它是用来配置Memory Mapping and Compiler Abstraction module。

4508

UVA - 12299 RMQ with Shifts (线段树:单点修改,区间查询)

题意:在传统的RMQ的基础上加上一个操作:shift(i1,i2,i3...ik),表示将这些元素,依次向左移动一位 思路:在原先线段树的基础上再加上:首先要先得到该位的数字,那么就是在[i,i]的区间找最小值,然后将该位置的值修改为后一位 #include #include #include #include using namespace std; const int MAXN =

那些年 1020

6、探索音乐结构中的统一性:贝多芬《英雄交响曲》第一乐章的深度剖析

本文深入剖析了贝多芬《英雄交响曲》第一乐章的音乐结构,探讨其统一性的来源及表现形式。通过主题与动机、和声与调性、旋律与节奏、织体与动态等多方面的分析,揭示了这部作品在技术层面和情感表达上的卓越成就。

b9c0d的博客 518

新手必看:C#调用YOLO模型完成图片/视频目标检测(上位机版)

新手学习C#调用YOLO模型,核心是先把基础流程跑通,再逐步优化。图片检测是基础,视频检测就是在图片的基础上加循环和线程,而上位机的实际项目,就是在这个基础上适配工业硬件和业务需求。本文的代码都是新手能直接复制运行的,如果你运行时遇到问题,先检查前期准备是否到位,再看避坑指南。记住,新手别追求一步到位,先实现功能,再慢慢优化性能和界面。等你能熟练调用YOLO模型后,再去研究模型训练、量化优化等进阶内容,会轻松很多。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 987

uva12299 - RMQ with Shifts

线段树裸题

ACoder 268

【异常】Claude Code 第三方API 400报错(thinking type should be enabled or disabled)解决方案

摘要: Claude Code接入第三方API端点时出现400参数错误,主要因新版默认启用的Adaptive Thinking功能与旧版接口参数格式不兼容(需thinking: {type: "adaptive"},但第三方仅支持布尔值)。解决方案为修改本地settings.json配置文件,添加"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"环境变量并重启客户端,即可恢复思考模式功能。Adaptive Th

奶爸的编程之路,也就一周冷个三天 1万+

【UVA】12299-RMQ with Shifts(线段树)

修改的时候由于数据很小,所以可以直接暴力修改,查询的时候利用线段树就行了。 14337858 12299 RMQ with Shifts Accepted C++ 0.282 2014-10-11 16:02:53 #include #include #include #include using namespace st

花月阁 1202

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

uva 12299 - RMQ with Shifts(线段树)

题目链接:uva 12299 - RMQ with Shifts 题目大意:给定一个数组,有两种操作。 query l r:查询l到r之间的最小值shift x1 x2 x3:将下标为x1 x2 x3的位置上的数循环移动一个长度。 解题思路:线段树维护最小值,因为每条命令的长度不会超过30,所以循环移动的数并不会很多,用单点修改去处理。 #include #include

不慌不忙、不急不躁 1343

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

UVA 12299 RMQ with Shifts

线段树。单点更新,区间查询。就是说每次更新时,就按照题意,一个一个去修改。一开始我认为这样做会超时,跟队友商量了一下,也都认为会超时,但又想不到别的方法。。。。百度了一下,别人都说是水题,简单模板题,也都是这样做的。可能字符串长度不超过30使得更新的量不会太大,所以也不会TLE吧。 #pragma comment(linker, "/STACK:1024000000,1024000000")

DotACM 715

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

uva 12299 - RMQ with Shifts--- 线段树单点更新

// // main.cpp // uva 12299 - RMQ with Shifts--- 线段树单点更新 // // Created by XD on 15/9/10. // Copyright (c) 2015年 XD. All rights reserved. // /* 线段树单点更新 */ #include #include #include #include

最爱她! 534

【UVA12299 RMQ with Shifts】

【Analysis】 这题其实在考输入吧,其他好像不难,shiftshiftshift就用线段树的单点修改即可 【Code】 #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <queue> typedef long l...

zyn_615的博客 174

UVA 12299 RMQ with Shifts(线段树)

题目大意:第一行输入两个整数(数据个数,操作个数),query(a,b)为查找区间a到b的最小值,并输出。shift(a,b,c,d...)为将a,b,c,d...全部循环左移。 解析:线段树的单点更新。 #include #include #include #include using namespace std; const int INF = 0x3f3f3f3f; cons

小G的ACM之路 665

UVA12299 - RMQ with Shifts(线段树)

UVA12299 - RMQ with Shifts(线段树) 题目链接 题目大意:要求你查询某一段的最小值,但是还有一个shift操作,将(a0, a1, a2, a3..ak)这个K个位置的数字互相对掉,例如a0位置的值变成a1,a1位置的值变成a2...ak位置的值变成a0. 解题思路:因为shift后面的操作数最多30个,所以可以用线段树单点修改。复杂度n*logn。用s

1494

UVA 12299 - RMQ with Shifts(线段树)

UVA 12299 - RMQ with Shifts 题目链接 题意:给定一个数组,两种操作,每次query操作输出区间最小值,每次shift操作把选中位置每个位置向左移一位,最左的到最后去 思路:线段树,shift操作中位置个数不会超过30个,那么直接当作点修改来做,那么就变成了简单的线段树了 代码: #include #include #include u

Remilia's 1437

UVa 12299 - RMQ with Shifts

题目链接: 线段树,点修改。 1 #include <cstdio> 2 #include <cctype> 3 #define lson l, m, rt << 1 4 #define rson m + 1, r, ( rt << 1 ) | 1 5 6 const int MAXN = 100...

aegt43853的博客 110

UVA - 12299 - RMQ with Shifts - (单点更新,区间查询)

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;Itemid=8&amp;page=show_problem&amp;problem=3720题意:给出一个长为n的数组,先对其有q次操作,操作有两种类型:①.query(l,r)作用即是在区间a[l]~a[r]中找最小值②.shift(i1,i2,i3...i...

Orz 260

UVA 12299 - RMQ with Shifts(线段树单点更新+模拟)

题目链接 https://cn.vjudge.net/problem/UVA-12299 【题意】 对于一个给定的数组A[1],A[2]…A[n],支持以下两种操作 query(L,R) 查询区间[L,R]中的最小元素值 shifti(i1,i2,..ik) 把元素A[i1],A[i2]…A[ik]的元素循环左移一位 如A={6,2,4,8,5,1,4},执行shift(2,4,5,7)...

Change the world by program. 281

UVA12299 RMQ with Shifts

其实这个题只有输入有点麻烦,其余的就是线段树的单点修改,区间查询,因为说了一行不会超过30个字符还是数字啥的,这个暴力的时间是可以接受的,就是我们先从输入的字符串里面提取出来位置,然后又把每个位置的数字给提取出来,然后循环,把每个位置的数字放到前面一个的位置,这是单点修改,最后把第一个位置的数字放到最后一个位置上,然后就是区间查询了,这个题还是有点简单的,感觉可以评绿题的。

m0_73035684的博客 136

NYOJ-568/1012//UVA-12299RMQ with Shifts,线段树单点更新+区间查询

RMQ with Shifts 时间限制:1000 ms  |  内存限制:65535 KB 难度:3                                                                ->  Link1                                                                 

NYIST_TC_LYQ的博客 642
上一篇: UVa 11987 Almost Union-Find(带权并查集)
下一篇: UVa 11525 Permutation(二分+树状数组)
Baoli1008
博客等级 码龄12年 70粉丝 293原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值