Solution Set -「LOCAL」冲刺省选 Round XXIV
\(\mathscr{Summary}\)
名副其实的 trash round,希望以后没有了。
A 题算好,确实一个比较关键的简化状态的点没想到,所以只拿了暴力(不考虑 \(\mathcal O(n^4)\) 能操过更多分的情况,明明 \(\mathcal O(n^4)\) 和 \(\mathcal O(2^n)\) 是一档的。)
B 题签到,C 题倍增 + 分治 NTT 你开 \(10^6\) 我确实 ,要不是 \(10^5\) 分多我甚至懒得写。
\(\mathscr{Solution}\)
\(\mathscr{A}-\) Good
给定 \(\{a_n\},\{w_n\}\),每次可以在 \(\{a_n\}\) 中删去一个先升再降相邻差 \(1\) 的子串,删去长度为 \(l\) 的子串的收益为 \(w_l\)。求经过任意次操作获得的最大收益。
\(n\le400\)。
联系 \(n\) 的范围猜测是区间 DP,所以先莽一个 \(f(l,r)\):把 \(a_{l..r}\) 删干净的最大收益(求出 \(f\) 之后可以再 DP 一下求答案)。注意“子串”成为“子序列”,能够划分子问题,所以自然想到转移时去讨论 \(a_l\) 被怎样的操作删除。
这一点比较巧妙,也算是一个“删子串”转移的 trick:如果删除 \(a_l\) 时没有一起删除 \(a_r\),那么 \(a_{l..r}\) 本身就能分成两段独立转移,所以我们只需要考虑 \(a_l\) 和 \(a_r\) 一起被删掉的操作。
接下来就简单了。定义 \(g(l,r)\) 表示从 \(a_l\) 出发升序删子序列删到 \(a_r\) 所划分出的子问题 \(f\) 的最大和;\(h(l,r)\) 则为降序删子序列。那么
g(l,r)=\max_{i\in[l,r),a_i+1=a_r}\{g(l,i)+f(i+1,r-1)\},\\
h(l,r)=\max_{i\in(l,r],a_i+1=a_l}\{f(l+1,i-1)+h(i,r)\}.
\]
\(\mathcal O(n^3)\) 转移即可。
\(\mathscr{B}-\) Color
给定含有 \(n\) 个点 \(m\) 条边的连通无向图,结点 \(u\) 有颜色 \(c_u\)。每次修改一个结点的颜色,修改后求出异色结点间的最短路。
\(n\le2\times10^5\),\(m\le3\times10^5\),边权非负。
显然最短路一定是一条边;显然只有 MST 上的边有用;显然可以 \(\mathcal O(q\log n)\) 在树上做。
\(\mathscr{C}-\) Music
给定 \(\{v_n\}\),求序列 \(S=\{s_n\}\) 的个数,使得 \(1\le s_i\le v_i\),且 \(S\) 没有 border。
\(n\le10^6\),\(v_i\le v_{i+1}\)。
注意 \(v_i\le v_{i+1}\) 这个限制告诉我们,对于 \(S\) 的任意一个 \(|S|/2\) 以内的前缀,我们可以让它成为 border。所以不难设计出基于此的暴力 DP,令 \(f(i)\) 表示仅考虑 \(s_{1..i}\) 的答案,\(p_i=\prod_{j=1}^iv_j\),那么
\]
发现这是一个很像卷积的东西,但是它要求 \(p(x)\cdot q(x)\) 时,\(p\) 取出的 \(x\) 指数不小于 \(q\) 取出的 \(x\) 指数。从分治乘法的角度考虑,显然所有左端点不为 \(1\) 的区间无法内部转移,所以分治实质上是一个倍增。随便写写画画可以设计这样一个倍增方法:

我们想要求 \(f\) 的灰色部分;红线是当前的中点,橙线是右半部分的中点。黄色连线可以直接卷,蓝色连线递归处理做上文提及的特殊卷积。特殊卷积的复杂度 \(T(n)=\mathcal O(n\log n)+2T(n/2)=\mathcal O(n\log^2n)\),总复杂度 \(F(n)=T(n)+F(n/2)=\mathcal O(n\log^2n)\)。这个 \(10^6\) 带俩 \(\log\) 跑多项式?我的笔记本也是超神只用 \(0.7\text s\) 跑大样例,总之这就是正解,我也想问候出题人。
Solution Set -「LOCAL」冲刺省选 Round XXIV的更多相关文章
- Solution Set -「LOCAL」冲刺省选 Round XXV
\(\mathscr{Summary}\) 读错题了读错题了 B 题差点没做出来真的太吓人了. 逆序开题,C 题直接冲一发暴力最大权闭合子图居然过了.A 题确实一下子没想到用"可能的 ...
- Solution Set -「LOCAL」冲刺省选 Round XXIII
\(\mathscr{Summary}\) 有一说一,虽然我炸了,但这场锻炼心态的效果真的好.部分分聊胜于无,区分度一题制胜,可谓针对性强的好题. A 题,相对性签到题.这个建图确实巧妙,多见 ...
- Solution Set -「LOCAL」冲刺省选 Round XXII
\(\mathscr{Summary}\) 和出题人很有缘分但是没有珍惜.jpg A 题有一个显然的二维偏序斜率式,以及显然的 CDQ 套李超树 \(\mathcal O(n\log^2n)\ ...
- Solution Set -「LOCAL」冲刺省选 Round XXI
\(\mathscr{Summary}\) 省选几个小时啊,怎么模拟赛只打三个小时啊./kk 时间安排较为合理,没有出现严重的因思考时间过少引起的丢分. A 题比较可惜,二分 + 点分治大 ...
- Solution -「LOCAL」过河
\(\mathcal{Description}\) 一段坐标轴 \([0,L]\),从 \(0\) 出发,每次可以 \(+a\) 或 \(-b\),但不能越出 \([0,L]\).求可达的整点数. ...
- Solution -「LOCAL」画画图
\(\mathcal{Description}\) OurTeam. 给定一棵 \(n\) 个点的树形随机的带边权树,求所有含奇数条边的路径中位数之和.树形生成方式为随机取不连通两点连边直到全 ...
- Solution -「LOCAL」充电
\(\mathcal{Description}\) 给定 \(n,m,p\),求序列 \(\{a_n\}\) 的数量,满足 \((\forall i\in[1,n])(a_i\in[1,m])\l ...
- Solution -「LOCAL」二进制的世界
\(\mathcal{Description}\) OurOJ. 给定序列 \(\{a_n\}\) 和一个二元运算 \(\operatorname{op}\in\{\operatorname{ ...
- Solution -「LOCAL」大括号树
\(\mathcal{Description}\) OurTeam & OurOJ. 给定一棵 \(n\) 个顶点的树,每个顶点标有字符 ( 或 ).将从 \(u\) 到 \(v\) ...
随机推荐
- PowerShell【For篇】
1-10的循环 1 for($i=1;$i -le 10;$i++){ 2 $i 3 } 当然之前前一篇中所写到的1..9你也可以直接在ps中写道 1..10 运行结果也是一样的. 也可以这样 1 f ...
- 【填坑往事】使用Rxjava2的distinct操作符处理自定义数据类型去重的问题
最近碰到一个问题,自定义数据类型列表中出现了重复数据,需要去重.处理去重的办法很多,比如借助Set集合类,使用双重循环拿每一个元素和其他元素对比等.这里介绍一种简单而且比较优雅的方式:使用Rxjava ...
- java mapreduce实现网站PV分析
原文链接: https://www.toutiao.com/i6765677128022229517/ PV 是Page Views的缩写,即页面浏览量,用户每一次对网站中的每个网页访问均被记录一次. ...
- html手机调试
长话短说 npm install anywhere -g 安装好后,cmd 命令 进入你要调试html页面的目录,运行 anywhere AnyWhere 静态文件服务器 软件简介 AnyWhere是 ...
- python驱动SAP完成数据导出(一)
写在前面 我们使用Python驱动SAP时,经常会需要导出一些SAP报表数据至本地Excel文件.这个看似简单的问题背后,其实暗藏玄机,今天小爬就带各位同学好好捋捋. 以事务代码FB03(凭证清单)为 ...
- testng 的常用注解
常用注解如下: @BeforeSuite: 此注解的方法会在当前测试集合中的任一测试用例前执行 @AfterSuite: 此注解的方法会在当前测试集合中的所有测试程序结束后执行 @BeforeTest ...
- JAVA8-STREAM 使用说明
概述 本人在java开发过程中,有些知识点需要记录整理,我尽量严谨的叙述我学习的经过和心得,以便备份和和大家一起进步学习,此篇文章是在网上多出搜集整理验证,结尾会注明出处,今天学习一个java8新的功 ...
- Java基础(十)——枚举与注解
一.枚举 1.介绍 枚举类:类的对象只有有限个,确定的.当需要定义一组常量时,强烈建议使用枚举类.如果枚举类中只有一个对象,则可以作为单例模式的实现. 使用 enum 定义的枚举类默认继承了 java ...
- [SWPUCTF 2018]SimplePHP
[SWPUCTF 2018]SimplePHP 知识点 1.PHP反序列化入门之phar 2.反序列化魔术方法 __construct()//当一个对象创建时被调用 __destruct() //当一 ...
- BarTender调用示例
安装BarTender 软件后,会注册一个COM 然后在项目中添加BarTender COM 引用 BarTender模板中的条码右键属性-数据源类型-嵌入的数据-名称(比如设置为 barcode p ...