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 补全记录的更多相关文章

  1. Yahoo Programming Contest 2019 补题记录(DEF)

    D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在 ...

  2. CozyRSS开发记录6-继续补全订阅内容栏

    CozyRSS开发记录6-继续补全订阅内容栏 1.订阅内容栏布局 按照之前的原型图,把订阅内容栏分成三块.Xaml如下: 2.照葫芦画瓢,完成头部和列表 头部依然使用ColorZone,右侧再放两个按 ...

  3. Ubuntu16.04VIM无法补全错误记录

    先记录一下YouCompleteMe的安装过程. 按照教程进行安装 1. 安装 vundle # vundle是vim的包管理器,十分好用 cv@cv: ~$ git clone https://gi ...

  4. 记录一次bug解决过程:else未补全导致数据泄露和代码优化

    一.总结 快捷键ctrl + alt + 四个方向键 --> 倒置屏幕 未补全else逻辑,倒置查询数据泄露 空指针是最容易犯的错误,数据的空指针,可以普遍采用三目运算符来解决 SVN冲突解决关 ...

  5. 删除Chrome地址栏记录中自动补全的网址

    为了删除某个自动补全的网站,多年的历史纪录没了,还浪费我十多分钟,蠢哭_(:з」∠)_ 不是历史记录.不是清除浏览器数据.不是myactivity(谷歌账号)中的历史纪录,直接在书签中搜索,删除,OK ...

  6. centos7安装docker记录+命令补全

    原本用centos6.6部署项目环境,突然想装docker ,使用uname -r 发现内核版本太低,更新内核完后重启起不来了~~~~~,还是用回7吧 21 yum -y install gcc 22 ...

  7. 使用Visual Studio Comunity 2019开发Unity C#脚本没有自动补全的解决方法

    最近开始试着玩Unity3D,要为场景中的物体编辑脚本.Unity3D推荐的脚本语言是C#,在Unity打开C#就会使用Visual Studio来进行编辑. 启动Visual Studio之后注意到 ...

  8. QLineEdit拾遗:数据的过滤、验证和补全

    QLineEdit是使用频率最高的控件之一,当我们想获取用户输入时自然而然得会用到它. 通常我们会将QLineEdit的信号或其他控件的信号绑定至槽函数,然后获取并处理编辑器内的数据.你会觉得我们拿到 ...

  9. 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)  # 进行图片的 ...

  10. Mac Tab自动补全键

    最近入手一个Mac(Mac 2019版本),在使用终端时,发现不能使用Tab键自动补全代码,网络搜寻下,发现这里有个方法,记录下,免得自己忘记: 1 / 首先找到这个图标 2 / 输入命令 nano ...

随机推荐

  1. 每天学五分钟 Liunx 0010 | 软件篇: RPM 和 YUM

    1. RPM RPM(RedHat Package Manager),顾名思义是 RedHat 的软件包管理器.它遵循 GPL 规则且功能强大好用,从而逐渐运用到其它 Liunx 发行版中,包括 Fe ...

  2. Oracle process/session/cursor/tx/tm的简单学习

    Oracle process/session/cursor/tx/tm的简单学习 Oracle的部署模式 Oracle安装时有专用模式和共享模式的区别 共享模式(Shared mode): 在共享模式 ...

  3. 【转帖】PyCharm---Django简单例子--基础1

    https://www.cnblogs.com/kllay/p/7286701.html 环境: python 2.7 Django 1.11.2    查看版本:python -m django - ...

  4. [转帖]centos7 firewall-cmd主机之间端口转发

    目录 1. firewalld 1.1 firewalld守护进程 1.2 控制端口/服务 1.3 伪装IP 1.4 端口转发 2. 案例 2.1 配置ServerA 2.2 安装nginx测试 (可 ...

  5. 【转帖】Linux创建软连接出现的错误及解决方法

    问题: 创建软连接以后,使用cd 软连接路径显示没有那个文件或目录. 创建过程及切换结果,如图: 原因: 路径一定要写成绝对路径!!! 解决办法: 了解创建软连接的命令: ln -s 源文件 目标文件 ...

  6. [转帖]50年来Intel CPU变化有多大?频率从0.75MHz提升到5.2GHz

    https://m.baidu.com/bh/m/detail/ar_9297450181050583423?data_from=lemon 今天(11月15日)是Intel推出4004处理器50周年 ...

  7. [转帖]适用于 Azure VM 的 TCP/IP 性能优化

    https://learn.microsoft.com/zh-cn/azure/virtual-network/virtual-network-tcpip-performance-tuning?con ...

  8. Linux 清理 防火墙已有IP地址的方法

    最简单的处理 for i in `firewall-cmd --zone=trusted --list-sources` ;do firewall-cmd --zone=trusted --remov ...

  9. easyUI 多表头设置

  10. 在mac中双击执行python

    执行python脚本 mac有内置的python,但还是建议你自己安装一个python,如果没有卸载mac自带的python2.7,当你需要使用python3执行脚本时,python命令需要改为pyt ...