当前位置:网站首页>洛谷P1110 报表统计 multiset stl好题
洛谷P1110 报表统计 multiset stl好题
2022-08-09 07:01:00 【swust_fang】
题目链接
一开始自己想的是multiset维护顺序结构,然后查找所有的值差最小时候找加入的当前点的前驱以及后继,然后查找相邻两个的就用线段树维护一个差最小值~,但是后来发现是全局的,直接再开一个multiset维护相邻段之差就行了,但是set的话要删除,也挺费时间的,不是所有点相邻都往set里边装,比如在某一个段加一个点的时候他前一个点的差值直接用一个ans来储存最小,然后输出的时候差的set里边最小值与ans比较一下就行。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<set>
#include<stack>
#include<vector>
#include<map>
#include<queue>
#include<time.h>
#define myself i,l,r
#define lson i<<1
#define rson i<<1|1
#define Lson i<<1,l,mid
#define Rson i<<1|1,mid+1,r
#define half (l+r)/2
#define inff 0x3f3f3f3f
#define lowbit(x) x&(-x)
#define PI 3.14159265358979323846
#define min4(a, b, c, d) min(min(a,b),min(c,d))
#define min3(x, y, z) min(min(x,y),min(y,z))
#define pii make_pair
#define pr pair<int,int>
#define li __int128
void print(li x) {if(x>9) print(x/10);putchar(x%10+48);}
const int dir[4][2] = {0, -1, -1, 0, 0, 1, 1, 0};
typedef long long ll;
typedef unsigned long long ull;
const ll inFF = 9223372036854775807;
using namespace std;
const int maxn=1e6+5;
int st[maxn],ed[maxn];
multiset<int> s,ss;
char str[20];
int main()
{
int n,m,x,val;
cin>>n>>m;
int ans=inff,anss=inff;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
st[i]=ed[i]=x;
}
for(int i=1;i<=n;i++)
{
if(i<n) ss.insert(abs(st[i]-st[i+1]));
auto it=s.lower_bound(st[i]);
if(it!=s.end()) ans=min(ans,*it-st[i]);
if(it!=s.begin()) it--,ans=min(ans,st[i]-*it);
s.insert(st[i]);
}
for(int i=1;i<=m;i++)
{
scanf("%s",str);
if(strcmp(str,"INSERT")==0)
{
scanf("%d %d",&x,&val);
auto it=s.lower_bound(val);
if(it!=s.end()) ans=min(ans,*it-val);
if(it!=s.begin()) it--,ans=min(ans,val-*it);
s.insert(val);
anss=min(anss,abs(ed[x]-val));
if(x!=n)
{
it=ss.lower_bound(abs(st[x+1]-ed[x]));
ss.erase(it);
ss.insert(abs(st[x+1]-val));
}
ed[x]=val;
}
else if(strcmp(str,"MIN_SORT_GAP")==0) printf("%d\n",ans);
else printf("%d\n",min(anss,*ss.begin()));
}
return 0;
}
边栏推荐
猜你喜欢

分布式理论

变压器的工作原理(图解,原理图讲解,一看就懂)

排序第三节——交换排序(冒泡排序+快速排序+快排的优化)(5个视频讲解)

The JVM thread state

灵活好用的sql monitoring 脚本 part7

XILINX K7 FPGA+RK3399 PCIE驱动调试

Altium designer软件常用最全封装库,包含原理图库、PCB库和3D模型库

图论,二叉树,dfs,bfs,dp,最短路专题

【报错】Root Cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Variable used in lambda expression should be final or effectively final报错解决方案
随机推荐
网络学习总结
【nuxt】服务器部署步骤
Flask failed to create database without error
AD的library中 库文件后缀有.intlib .schlib .pcblib 的区别
日期处理,字符串日期格式转换
Integer 线程安全的
半导体新能源智能装备整机软件系统方案设计
我入职阿里后,才知道原来简历这么写
常见的分布式事务解决方案
【转载】Deep Learning(深度学习)学习笔记整理
多米诺骨牌
Built-in macros in C language (define log macros)
分布式理论
常用测试用例设计方法之正交实验法详解
字节跳动笔试题2020 (抖音电商)
leetcode 之 70 爬楼梯问题 (斐波那契数)
【烂笔头】各厂商手机手动抓log
P7 Alibaba Interview Questions 2020.07 Sliding Window Algorithm (Alibaba Cloud Interview)
The Integer thread safe
线程池总结