NOI 2019 补全记录
D1T1 回家路线
好久之前写的,忘了具体细节,但是发现有平方项所以考虑拆项之后斜率优化。
D1T2 机器人
考虑 DP。
记 \(f_{l,r,i}\) 表示 \([l,r]\) 这段区间,最大值为 \(i\) 的方案数,同时记 \(g_{l,r,i}=\sum\limits_{j=1}^if_{l,r,i}\)。
由于向左可以走到 \(\le h_s\) 的,向右可以走到 \(< h_s\) 的。
所以我们找到 \(h_i\) 最大的位置中编号最大的,除非以这个位置为起点,则没有任何一个机器人会到达这个位置。
考虑枚举这个最高点,则有 \(f_{l,r,i}=\sum\limits_{|(r-j)-(j-l)|\le 2\land l_j\le i\le r_j}g_{l,j-1,i}g_{j+1,r,i-1}\)。
初始化 \(f_{i,i-1,0}=1\)。
则这个转移是 \(O(n^2V)\) 的(转移枚举量看作 \(O(1)\)),我们考虑如何优化它。
考虑从转移的两个限制下手:
由于有 \(|(r-j)-(j-l)|\le 2\),考虑到最终对 \(f_{1,n,*}\) 做贡献的区间不会取遍 \(O(n^2)\) 个,所以考虑从 \(1,n\) 开始深搜,发现极限数据下 \(S\approx 2000\)。
这样复杂度可以做到 \(O(SV)\),但是 \(V\) 仍然很大。
\(n\) 个数的取值将值域划分成了 \(O(n)\) 个不同的区间
通过感性的理解,在每个区间内 \(g_{l,r,i}\) 应该会是一个关于 \(i\) 的 \(O(n)\) 次多项式(其实可以认为 \(g_{l,l,i}\) 是关于 \(i\) 的一次式,在通过转移式子可知 \(g_{l,r,i}\) 至多是一个 \(r-l+1\) 次多项式)。
而当前区间和下一个区间有关的只有最后一项,所以我们可以使用拉格朗日插值求出最后一项是多少。
这样的时间复杂度为 \(O(n^2S)\)。
D1T3 序列
感觉这个东西很反悔贪心,我们考虑建出它的费用流模型。
至少有 \(L\) 对相同,也就是最多有 \(K-L\) 对不相同。
设 \(S\) 为源点,\(T\) 为汇点,\(A_i\) 表示第一个序列上的第 \(i\) 个点,\(B_i\) 表示第二个序列上的第 \(i\) 个点,以及两个特殊节点 \(P,Q\)。
记一条有向边信息为 \((u,v,f,w)\) 表示从 \(u\) 到 \(v\),流量为 \(f\),费用为 \(w\) 的有向边。
则需要连边:
\((S,A_i,1,a_i)\),\((A_i,B_i,1,0)\),\((B_i,T,1,b_i)\),\((A_i,P,1,0)\),\((P,Q,K-L,0)\),\((Q,B_i,1,0)\)。
考虑枚举费用流可能的增广路径,发现有 \(5\) 中可能的路径,使用堆维护即可。
D2T1 弹跳
可以从一个点跳到一个矩形,类似最短路模型。
使用 KDT 维护当前到达每个点的最短距离,每次使用没有增广过且距离最短的增广,时间复杂度 \(O(n\sqrt{n})\)。
D2T2 斗主地
找规律之后发现,假设洗牌前牌对应一个 \(k\) 次函数 \(f(i)\) 洗牌之后的函数 \(g(i)\) 仍为 \(k\) 次函数,所以每一次暴力 DP 出前 \(k+1\) 项的值,然后拉格朗日插值即可。
D2T3 I 君的探险
测试点 \(1\sim 5\):每一个点 modify
一次,暴力检查每个点是否被反转了,如果被反转了,说明有连边。
测试点 \(6\sim 17\):图是一个树形态,我们通过二进制分组来得到每一个点相连的点的异或和,我们每一次尝试找到一个叶子(特殊形式 A B 可以直接取当前还有连边的最大的)将其和父亲相连,递归这个过程即可。
测试点 \(18\sim 25\):考虑整体二分,先随机打乱序列,然后找到向前连了奇数条边的点,找到他们连的边。
NOI 2019 补全记录的更多相关文章
- Yahoo Programming Contest 2019 补题记录(DEF)
D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在 ...
- CozyRSS开发记录6-继续补全订阅内容栏
CozyRSS开发记录6-继续补全订阅内容栏 1.订阅内容栏布局 按照之前的原型图,把订阅内容栏分成三块.Xaml如下: 2.照葫芦画瓢,完成头部和列表 头部依然使用ColorZone,右侧再放两个按 ...
- Ubuntu16.04VIM无法补全错误记录
先记录一下YouCompleteMe的安装过程. 按照教程进行安装 1. 安装 vundle # vundle是vim的包管理器,十分好用 cv@cv: ~$ git clone https://gi ...
- 记录一次bug解决过程:else未补全导致数据泄露和代码优化
一.总结 快捷键ctrl + alt + 四个方向键 --> 倒置屏幕 未补全else逻辑,倒置查询数据泄露 空指针是最容易犯的错误,数据的空指针,可以普遍采用三目运算符来解决 SVN冲突解决关 ...
- 删除Chrome地址栏记录中自动补全的网址
为了删除某个自动补全的网站,多年的历史纪录没了,还浪费我十多分钟,蠢哭_(:з」∠)_ 不是历史记录.不是清除浏览器数据.不是myactivity(谷歌账号)中的历史纪录,直接在书签中搜索,删除,OK ...
- centos7安装docker记录+命令补全
原本用centos6.6部署项目环境,突然想装docker ,使用uname -r 发现内核版本太低,更新内核完后重启起不来了~~~~~,还是用回7吧 21 yum -y install gcc 22 ...
- 使用Visual Studio Comunity 2019开发Unity C#脚本没有自动补全的解决方法
最近开始试着玩Unity3D,要为场景中的物体编辑脚本.Unity3D推荐的脚本语言是C#,在Unity打开C#就会使用Visual Studio来进行编辑. 启动Visual Studio之后注意到 ...
- QLineEdit拾遗:数据的过滤、验证和补全
QLineEdit是使用频率最高的控件之一,当我们想获取用户输入时自然而然得会用到它. 通常我们会将QLineEdit的信号或其他控件的信号绑定至槽函数,然后获取并处理编辑器内的数据.你会觉得我们拿到 ...
- 7. 进行图片的数据补全和增强(随机亮度,随机饱和度,随机翻转) Image.open(进行图片的读入) 2.ImageEnhance.Brightness(亮度变化) 3.ImageEnhance.Contrast(饱和度变化) 4.enhance_image.transpose(图片随机翻转) 5.enhance_image.save(进行图片保存)
1.Image.open(image_path) 进行图片的打开 参数说明:image_path 表示图片的路径 2. ImageEnhance.Brightness(image) # 进行图片的 ...
- Mac Tab自动补全键
最近入手一个Mac(Mac 2019版本),在使用终端时,发现不能使用Tab键自动补全代码,网络搜寻下,发现这里有个方法,记录下,免得自己忘记: 1 / 首先找到这个图标 2 / 输入命令 nano ...
随机推荐
- spring IoC 源码
spring IoC 容器的加载过程 1.实例化容器: AnnotationConfigApplicationContext 实例化工厂: DefauiltListableBeanFactory 实例 ...
- 【C/C++】 开发必备知识总结
>from: C/C++ 开发必备知识总结 (qq.com) const 作用 修饰变量,说明该变量不可以被改变: 修饰指针,分为指向常量的指针和指针常量: 常量引用,经常用于形参类型,即避免了 ...
- [javaee] - tomcat 下载和配置环境变量
以tomcat9为例 第一步 :下载到本地并解压文件 解压后: 第二步:配置环境变量,在系统变量中添加 CATALINE_HOME ,路径为tomcat的目录 启动tomcat , 启动之后不要关 ...
- [转帖]ORACLE新参数MAX_IDLE_TIME和MAX_IDLE_BLOCKING_TIME简介
https://www.cnblogs.com/kerrycode/p/16856171.html Oracle 12.2 引入了新参数MAX_IDLE_TIME.它可以指定会话空闲的最大分钟数.如果 ...
- [转帖]【mmap】深度分析mmap:是什么 为什么 怎么用 性能总结
https://blog.csdn.net/bandaoyu/article/details/106750990 目录 有什么用? 1.文件映射 2.分配内存(匿名文件映射) mmap基础概念 mma ...
- [转帖]记录几个常用linux命令的使用方法——find、grep、file、which、whereis和压缩命令gzip、bzip2、tar
一.命令1: find.grep.file.which.whereis 1.find 目的:查找符合条件的文件 1)在哪些目录中查找 2)查找的内容 格式: find 目录名 选项 查找条件 举例: ...
- [转帖]Windows磁盘性能压测(1)-DiskSpd
http://www.manongjc.com/detail/59-xrydhtisrajqsxn.html 本文章向大家介绍Windows磁盘性能压测(1)-DiskSpd,主要内容包括其使用实例. ...
- Stress-ng 的简单学习
背景 想研究一下国产和不同架构,不通型号CPU的算力 也作为后续生产交付的基线准备. 学习各种不同工具进行简要测试. 安装 git clone https://github.com/ColinIanK ...
- Docker 安装Oracle12c的镜像修改字符集 并且进行启动的简单过程
学习来自 昨天晚上转帖的文章 这里面添加一些自己的内容 首先获取配置文件 git clone https://github.com/oracle/docker-images.git 获取之后比较容易了 ...
- Redis 菜鸟进阶
Redis 菜鸟进阶 背景 最近产品一直要优化性能,加强高可用. 有一个课题是Redis高可用与性能调优. 我这边其实获取到的内容很有限. 最近济南疫情严重,自己锁骨骨折. 然后通勤时间基本上都用来查 ...