几个题

· 浏览次数 : 0

小编点评

题目分析 PKUWC 2024 D1T2题中,通过构建笛卡尔树统计信息,可以使用区间DP来解决。将原序列f建立笛卡尔树,遍历树时会计算出f',即f数组中对应区间内的子树代表的区间最小值位置k。通过区间DP,设dp(l,r,x)表示[l,r]内所有f'全局减x后能否构造出对应的f。转移方程为dp(l,r,x)=∨k dp(l,k,x+f_k×(r-l))∧dp(k+1,r,x+f_k×(r-l))。最后枚举x和f_k,时间复杂度为O(n^2V^2)。但可以通过观察发现,对于每个x模(r-l),只需要知道x的最大值即可。 PKUWC 2024 D2T3题是一道套路题,操作差分下来,问题变成在线扫描n。可以考虑分块维护,支持单点修。询问时需要二分的块分配得好的话可以做到O(n√n+nlogn)。关于segt beats做法不会,不了解。 PKUSC 2024 D2T2题实际上不会出现一个人在排与不排之间反复横跳的情况,所以直接维护即可,过程比较无聊。 gym103260H Excluded Min题比较难,需要找到一个神仙trick才能解决。题面转化后可以发现,从大到小扫描x,每次看一下哪些询问满足条件,如果满足就记一下答案然后把它踢出去。这个过程不好维护,但是发现当[l1,r1]被[l2,r2]包含时,Ans([l1,r1])≤Ans([l2,r2])。每次看哪些询问满足条件时只需要看没被其他区间包含的询问区间即可。这个时候发现区间之间不包含可以直接线段树维护区间加全局max了。复杂度就是O(nlogn)。 总结 综上所述,通过构建笛卡尔树统计信息,使用区间DP解决PKUWC 2024 D1T2题;通过分块维护和单点修解决PKUWC 2024 D2T3题;直接维护线段树解决PKUSC 2024 D2T2题;找到一个神仙trick解决gym103260H Excluded Min题。

正文

PKUWC 2024 D1T2

很牛的题,想到了在笛卡尔树上统计,没想到可以做区间 dp。

把原序列 \(f\) 建一个笛卡尔树,会发现有 \(f'=\sum_{j} f_j\times(sz_j-1)\)。具体而言,遍历这棵笛卡尔树,当前节点的子树代表的区间为 \([l,r]\),最小值位置在 \(k\)。发现 \(f_k\)\([l,r]\) 里的每个 \(f'\) 分别有贡献 \(f_k\times(r-l)\)\([l,r]\) 里的 \(f'\) 全局减去这个贡献后,会发现 \(f'_{[l,k]}\) 会只与 \(f_{[l,k-1]}\) 有关,\(f'_{[k+1,r]}\) 会只与 \(f_{[k+1,r]}\) 有关,然后继续往下递归算贡献,一种合法的 \(f\) 构造方案会让所有 \(f'\) 都在遍历完毕后被减成 \(0\)

考虑将这棵笛卡尔树自下往上遍历,这是一个区间合并的过程,所以考虑区间 dp。设 \(dp(l,r,x)\) 表示 \([l,r]\) 内的所有 \(f'\) 全局减 \(x\) 后是否能构造出对应的 \(f\) 方案。转移也可以写出来:\(dp(l,r,x)=\bigvee_{k} dp(l,k,x+f_k\times (r-l)) \wedge dp(k+1,r,x+f_k\times (r-l))\)。需要枚举 \(x\)\(f_k\),时间复杂度 \(O(n^2V^2)\)

显然是过不去的,注意到 \(dp(l,r,x)\) 成立时,\(dp(l,r,x-(r-l))\) 时直接把 \(dp(l,r,x)\)\(f_k+1\) 代成 \(f_k\) 就成立,所以我们对于每个 \(x \bmod (r-l)\) 只需要知道 \(x\) 的最大值即可。不妨重设状态 \(dp(l,r,x)\) 表示 \([l,r]\) 内的所有 \(f'\) 全局减 \(y\equiv x\pmod {(r-l)}\) 后能构造出对应的 \(f\) 方案的最大 \(y\)。经过一些数论操作后可以做到 \(O(n^5)\),由于常数很小就过了。

PKUWC 2024 D2T3

套路题,在周末返校的路上想明白了。

操作差分下来,离线扫描 \(n\)。问题变成现在有操作序列,每次询问进行一个前缀的操作后(在原题中即在时间轴上的前缀),栈里某个区间的和。

对于一段操作序列的信息,只需要存进行完当前这一段的操作过后,这一段操作剩下的栈长啥样,以及需要删这一段操作的之前的操作的栈里多少个数。要维护一个 vector 一个 int,线段树维护有点过于复杂了,考虑分块。要支持单点修,每次单点修时暴力重构即可。询问时需要二分的块分配得好的话可以做到 \(O(n\sqrt n+n\log n)\)。关于 segt beats 做法,我不会。

PKUSC 2024 D2T2

扫描线,事实上并不会出现一个人在排与不排之间反复横跳的情况,所以直接维护即可,很没意思。

gym103260H Excluded Min

做不来啊,这个 trick 真是神仙。

题面转化就不说了。从大到小扫描 \(x\),每次看一下哪些询问满足条件,如果满足就记一下答案然后把它踢出去。

这个是不好维护的,然而发现当 \([l_1,r_1]\)\([l_2,r_2]\) 包含时,\(\mathrm{Ans}([l_1,r_1])\le \mathrm{Ans}([l_2,r_2])\)。每次看哪些询问满足条件时只需要看没被其他区间包含的询问区间即可。这个时候发现区间之间不包含可以直接线段树维护区间加全局 \(\max\) 了。复杂度就是 \(O(n\log n)\)

与几个题相似的内容:

几个题

PKUWC 2024 D1T2 很牛的题,想到了在笛卡尔树上统计,没想到可以做区间 dp。 把原序列 \(f\) 建一个笛卡尔树,会发现有 \(f'=\sum_{j} f_j\times(sz_j-1)\)。具体而言,遍历这棵笛卡尔树,当前节点的子树代表的区间为 \([l,r]\),最小值位置在 \

Java并发篇:6个必备的Java并发面试种子题目

免费体验AI绘画:https://www.topgpt.one;文章涉及了几个常见的并发编程相关的主题。首先,线程的创建和生命周期是面试中常被问及的话题,面试官可能会询问如何创建线程、线程的状态转换以及如何控制线程的执行顺序等。其次,synchronized关键字是用于实现线程同步的重要工具,面试中可能会涉及到它的使用场景以及与其他同步机制的比较。此外,抽象队列同步器(AQS)是Java并发编程中

洛谷官方题单--线段树

前言 发现线段树根本不会写,所以想要完成洛谷官方题单来稍微提升一下... 持续更新ing [ ] P3870 [TJOI2009] 开关 明确了写线段树要思考的几个点 1.如何update,即如何合并子节点的信息,这里就是直接将子节点的灯的数量相加即可 2.如何modify,即如何根据tag修改该节

Codechef - Maximize Colours(IQ)

题目大意 有红绿蓝三种颜色,三种颜色当中任意两个颜色混合都可以产生出一个新的颜色(然而混合产生的颜色不能与任何其它的颜色进行混合)。输入三个整数,分别代表红色,绿色,蓝色的颜色个数(每次混合各消耗一个颜色数目),求出能获得的最大颜色数量。 思路 举几个样例找找规律。比如说(1,1,0),原本有两种颜

我所理解的机器学习

(2017年写的博客,搬过来) 断断续续看了几个月的机器学习,我觉得是时候总结一下了。正如题目讲的那样,我只说我所理解的机器学习,我不能保证我理解的都对,很多东西可能是我的误解,但无论说错了什么,我都认。如果有人发现错误,恳请指正,不胜感激。 我不讲算法也不讲公式推导,因为,我从头到尾都没看懂。 我

[转帖]看一遍就理解:零拷贝原理详解

https://juejin.cn/post/7043948967729561607 前言 大家好,我是程序员田螺。 零拷贝是老生常谈的问题啦,大厂非常喜欢问。比如Kafka为什么快,RocketMQ为什么快等,都涉及到零拷贝知识点。最近技术讨论群几个伙伴分享了阿里、虾皮的面试真题,也都涉及到零拷贝

国产大模型参加高考,同写2024年高考作文,及格分(通义千问、Kimi、智谱清言、Gemini Advanced、Claude-3-Sonnet、GPT-4o)

大家好,我是章北海 今天高考,上午的语文结束,市面上又要来一场大模型参考的文章了。 我也凑凑热闹,让通义千问、Kimi、智谱清言一起来写一下高考作文。 公平起见,不加任何其他prompt,直接把题目甩过去。 感觉写的都很一般,通篇口水文,都能拿个及格分吧。 有点好奇,就加了几个国外选手参赛:Gemi

洛谷P2433 小学数学 N 合一

写完了这道题结果脑子断电把浏览器关了。。。。。。打开一看 没保存 寄 传送门:【深基1-2】小学数学 N 合一 - 洛谷 第一题 第二题 第三题 这几道题没啥好说的,直接输出就彳亍了 cout << "I love Luogu!" << endl; cout << “6 4” << endl; co

[BUUCTF][WEB][极客大挑战 2019]Knife 1

这题几乎是送分 题目不断暗示,后台存在一句话木马 拿个蚁剑连上去就完事了 这里用curl 连上去,演示一下,理解一下其中的原理 #注意 phpinfo() 后面的分号不能省 curl -d "Syc=phpinfo();" http://32a31ff6-2815-4485-a74e-e646f67

顺着这份Java面试地图,国内一二线互联网公司随便进...

临近春节,这几天手头没什么事情,花了点时间,将自己近两年收集的面试真题,进行了一番深度归纳总结,整理出了这份面试大纲,基本上涵盖了国内一二线互联网公司的Java面试题(一、二、三面技术面试)。 我这样做的唯一目的是希望让面试题本身有迹可循,不让小伙伴们在准备面试的时候,不会被埋没在茫茫题海中,面对众多面试题,无从下手,手足无措。