P8592 『JROI-8』颅脑损伤 2.0(加强版) 题解

news/2025/11/8 17:09:36/文章来源:https://www.cnblogs.com/allforgod/p/19202686

你说得对,但是由乃救爷爷。

联考考到了这个题,要求线性,数据随机,不用离散化。没时间写由乃救爷爷了,于是耻辱下播。

P8592 『JROI-8』颅脑损伤 2.0(加强版)

思路

朴素 DP 是比较简单的。

\(f_i\) 表示钦定必须选一个右端点为 \(i\) 的最小代价。

我们将区间挂在右端点上,然后扫。我们设当前右端点为 \(r\),扫到的区间左端点为 \(l\),区间权值为 \(w\).

那么能从一个位置 \(j\) 转移而来的充要条件就是 \((j,l)\) 之间没有任何一个完整的区间。
我们设对于一个位置 \(i\),所有右端点不大于 \(i\) 的区间的左端点的最大值是 \(L_i\)
那么上面的意思就是 \([L_{l-1},l-1]\) 中必须有一个位置被选,于是我们的转移就是

\[f_i\gets \min_{j\in[L_{l-1},l-1]}(f_j)+w \]

然后要求 \(r=i\)

于是就是一个朴素的 RMQ。但是非常遗憾的是写 ST 表会在联考中被空间卡飞,写线段树之类的会被时间卡飞。

我又比较迟钝,单调性什么的显然看不出来,于是只能写线性时空的 ST 表了,也就是最开始说的由乃救爷爷。其大体思路就是将序列按 \(\log n\) 分块,然后暴力预处理块间的 ST 表,块内的前后缀最小值。如果询问在块内,我们就暴力。显然最坏的时间复杂度是单次 \(O(\log n)\) 的,也就是每次都暴力。但是由于联考的时候是随机数据,于是大胜利。

code

但是问题是瓶颈是离散化,就很坏。如果要这么做扫描线可以说是必须的,于是这道题又只能做到 \(O(n\log n)\)

点击查看代码
#include<bits/stdc++.h>
bool Mbe;
using namespace std;
#define ll unsigned long long
#define ui unsigned int
//namespace FIO{
//	template<typename P>
//	inline void read(P &x){P res=0,f=1;char ch=getchar();while(ch<'0' || ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0' && ch<='9'){res=(res<<3)+(res<<1)+(ch^48);ch=getchar();}x=res*f;}
//	template<typename Ty,typename ...Args>
//	inline void read(Ty &x,Args &...args) {read(x);read(args...);}
//	inline void write(ll x) {if(x<0ll)putchar('-'),x=-x;static int sta[35];int top = 0;do {sta[top++] = x % 10ll, x /= 10ll;} while (x);while (top) putchar(sta[--top] + 48);}
//}
//using FIO::read;using FIO::write;
const int N=1e6+7;
const ll inf=2e18+7;
int n,m,ql[N],qr[N],Lg[N],L[N],stk[N],top;
ll ans,qw[N],f[N],mi[N];
struct node{int l;ll w;};
vector<node>que[N];
void input() {for(int i=1;i<=n;i++){cin>>ql[i]>>qr[i];qw[i]=qr[i]-ql[i];stk[++top]=ql[i],stk[++top]=qr[i];}sort(stk+1,stk+top+1);top=unique(stk+1,stk+top+1)-(stk+1);for(int i=1;i<=n;i++)ql[i]=lower_bound(stk+1,stk+top+1,ql[i])-stk,qr[i]=lower_bound(stk+1,stk+top+1,qr[i])-stk,m=max(m,qr[i]);
}
namespace st{const int B=16;#define bel(x) (((x-1)>>4)+1)#define bl(x) (((x-1)<<4)+1)#define br(x) min(m,(x<<4))ll pre[N],suf[N],g[N/B+5][16];ll get_reg(const int &l,const int &r){const int L=bel(l)+1,R=bel(r)-1;if(L<=R){const int &k=Lg[R-L+1];return min(g[R][k],g[L+(1<<k)-1][k]);}else return inf;}ll get(const int &l,const int &r){if(bel(l)==bel(r)){ll res=inf;for(int i=l;i<=r;i++)res=min(res,f[i]);return res;}return min(suf[l],min(pre[r],get_reg(l,r)));}    void insert(const int &i){if(i==bl(bel(i))){pre[i]=f[i];return;}pre[i]=min(pre[i-1],f[i]);if(i==br(bel(i))){suf[i]=f[i];for(int j=i-1;j>=bl(bel(i));j--)suf[j]=min(suf[j+1],f[j]);g[bel(i)][0]=pre[i];for(int k=1;k<=15;k++){if(bel(i)-(1<<k)+1<1)break;g[bel(i)][k]=min(g[bel(i)][k-1],g[bel(i)-(1<<(k-1))][k-1]);}}}
}
using st::get;using st::insert;
bool Med;
signed main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);// freopen("rules.in","r",stdin);// freopen("rules.out","w",stdout);cin>>n;input();for(int i=1;i<=n;i++)que[qr[i]].push_back({ql[i],qw[i]});Lg[0]=-1;for(int r=1;r<=m;r++){Lg[r]=Lg[r/2]+1;ll res=inf;L[r]=L[r-1];for(int j=0;j<(int)que[r].size();j++){int l=que[r][j].l;ll w=que[r][j].w;if(L[l-1]==0)res=min(res,w);else res=min(res,get(L[l-1],l-1)+w);L[r]=max(L[r],l);}f[r]=res;insert(r);}ll ans=get(L[m],m);cout<<ans<<'\n';cerr<<'\n'<<1e3*clock()/CLOCKS_PER_SEC<<"ms\n";cerr<<'\n'<<fabs(&Med-&Mbe)/1048576.0<<"MB\n";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/959849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个挺好用的SLM,ARPA格式

链接: https://pan.baidu.com/s/1Q9WlB_zlqeeL_dLfs3lmjg 提取码: t63f 语料:你猜 其他:没有 公孙离 是我的问题吗?

2025年高台打包机定做厂家权威推荐榜单:低台打包机/打包机/捆扎机源头厂家精选

在工业自动化加速推进的背景下,高台打包机凭借其操作便捷性和高效率,正成为各类生产线不可或缺的关键设备。据行业数据显示,2025年中国自动化包装设备市场规模预计达到387亿元,年复合增长率稳定在12%-15% 的区间。…

「笔记」JavaScript/TypeScript

js 都是 ts 的(何意味目录作者@Luckyblock,转载请声明出处。

程序员的第二成长曲线:从技术深度到认知广度

如果说学会编程是一场“技能的启蒙”, 那么理解技术背后的逻辑,则是一场“认知的觉醒”。 很多人写了多年代码,却依然在问: “为什么我越忙越累,却感觉成长越来越慢?” 事实上,每个程序员都会经历两条成长曲线:…

实用指南:如何在 Linux_Ubuntu 上安装 Qt 5:详细教程

实用指南:如何在 Linux_Ubuntu 上安装 Qt 5:详细教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

*题解:P2824 [HEOI2016/TJOI2016] 排序

原题链接 解析“这个题不是典爆了,,,只跟大小相关的题想不到 0/1 Trick 建议先多做题。”收到。 二分答案 \(x\),将大于等于 \(x\) 的数都标记为 \(1\),小于 \(x\) 的数都标记为 \(0\)。这样排序操作就变成了对 \…

事务方法失效情况

事务方法失效情况1、声明了事务的方法没有用public修饰,Spring事务基于AOP(动态代理),默认只对public方法生效。 2、事务方法里触发的异常大于等于Transactional注解配置的rollbackFor的回滚异常,例如Transactiona…

Nginx是干嘛用的?nginx服务器配置

Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗…

2025年疏浚挖泥船实力厂家权威推荐榜单:绞吸清淤船/河道清淤船/清淤挖泥船源头厂家精选

在内河航道维护与水利工程建设加速推进的背景下,疏浚挖泥船作为关键施工装备,其性能直接关系到工程效率与成本。据水利行业数据显示,2025年中国疏浚设备市场规模预计达到286亿元,年复合增长率稳定在8%-12% 的区间。…

开源 C++ QT QML 开发(十三)多线程 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

PyCharm 配置 PySide6

本地安装好 PySide6 后,在 PyCharm 中还需要进行配置。 首先是 PyCharm 工程的虚拟环境必须也要安装 PySide6。 新建一个 PyCharm 工程:把终端切换为 CMD 窗口,输入指令 pip install pyside6 -i https://pypi.tuna.…

《密码系统设计》第十周预习

20231313 张景云《密码系统设计》第十周预习AI对内容的总结Headfirst C 进程间通信(IPC)核心知识总结 一、核心基础:文件描述符与数据流进程通过文件描述符(非负整数)管理数据流,描述符表固定前3项:0(标准输入…

从容器到云原生:开发者需要掌握的核心思维

在软件工程的发展浪潮中,云原生(Cloud Native) 已成为最热门的关键词之一。 但很多开发者在听到这个词时,往往会问:“云原生到底是什么?和容器、微服务、DevOps 有什么关系?我该如何入门?” 本文将从实际工程视…

从零开始学Flink:实时流处理实战 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【STM32方案开源】基于STM32的智能语音台灯框架

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年实验室全钢通风橱订制厂家权威推荐榜单:实验室全钢排风柜/全钢结构步入式通风柜/全钢台式通风柜源头厂家精选

在现代实验室建设中,全钢通风橱作为保障实验人员安全的核心装备,其性能直接关系到实验室的运营安全与效率。据实验室设备行业数据显示,2025年中国实验室通风设备市场规模预计达到87亿元,年复合增长率稳定在10%-12%…

flask: 对Flask-SQLAlchemy查询得到的数据遍历处理

一,代码: @user.route("/list/") def user_list():meta = {"title": "用户列表","code": 200,"msg": ""}# 得到数据库中的数据users = User.query.all…

go 工作区(workspace)模式

使用go写一个处理数学运算的小通用包 go.mod文件如下 module gitee.com/demo_go/utils_mathgo 1.25.3utilsmath.go 文件内容如下 package utilsmathimport "fmt"func AddInt(a, b int) int {fmt.Printf(&quo…

# [NOIP 2016 提高组] 天天爱跑步 题解

简要题意 给定一个拥有 \(n\) 个节点的树和 \(m\) 条运动路径,求对于每个点 \(u\) , 在 \(w_i\) 时刻经过此点的玩家数量。 思路 暴力 首先暴力模拟每个玩家的运动路径来计算对每个节点 \(u\) 是否有贡献是不可取的,…

2025年搓管机全套管实力厂家权威推荐榜单:旋挖全套管/全回转钻机全套管/全回转全套管源头厂家精选

在基建工程持续发展的推动下,搓管机全套管作为桩基施工的关键设备,其性能直接关系到施工效率与工程质量。据基建行业数据显示,2025年中国桩工机械市场规模预计达到387亿元,年复合增长率保持在12%-15% 的区间。 搓管…