YNOI 做题记
YNOI 做题记
偶然有一天做到了其中的一道题,于是便开始做相关的题了……
[Ynoi2015] 我回来了 - 洛谷
这之一场联考搬过来的题……于是考场上写了一个 \(O((n + m)\log^2 n)\) 的代码,然后成功被卡掉,非常慢速。
其实离线,将每一个伤害答案变化的时间做出来,然后加入时间序列后,树状数组维护即可。
其实发现如果询问很多,但是序列没有询问长,很可能考虑离线。
[Ynoi2010] y-fast trie - 洛谷
\(\mathrm{FaKe}\) y-fast trie……
其实有很 naive
的想法就是维护单向的最优。但是很明显,一次修改可能影响到 \(O(n)\) 个关系,所以单向显然是不好的。
其实维护双向最优,因为单向的一定不是最优的,所以完全可以缩减答案候选范围。于是一次修改最多影响到 \(O(1)\) 个关系,显然很优秀,所以小小的用 set
维护即可。
只是很难写,真的可以直接维护边吗?
显然很麻烦,所以需要每次动态的查询双向关系。
[Ynoi2016] 镜中的昆虫 - 洛谷
区间赋值,区间数颜色?\(\mathrm{ODT}\) 的复杂度真的很对!
先有单点修改,区间数颜色,依据套路,维护 \(pre\) 即可,发现每次修改会影响 \(O(1)\) 个 \(pre\),所以分块维护 \(pre\) 即可。
但是区间?对于信息的重复修改显然是不优的,所以有结论区间赋值对于 \(pre\) 的影响是 \(O(n + m)\) 的。
因为区间中的 \(pre\) 显然有 \(pre_i = i - 1\)。所以会影响到的其实只有颜色段的两端。
由于每次至多增加 \(4\) 个端点(认为 \(O(1)\)),原本有 \(O(n)\) 个端点,所以最多会影响到 \(O(n + m)\) 个端点,也就是影响 \(O(n + m)\) 次 \(pre_i\)。
但是,\(\mathrm{ODT}\) 之所以不用合并相同的节点,其实在于是随机数据,还有也就是本题的 \(O(n + m)\) 的性质吧。
然后 \(Luogu ~ \mathrm {RK4~?}\)
[Ynoi2016] 掉进兔子洞 - 洛谷
好厉害的想法!
每一个区间出现了那些数是好记的,但是合起来就不知道出现的多少次了。
离散化怎么离散化呢?可以记第 \(k\) 个出现的 \(x\) 为 \(x + k - 1\)。于是就可以了?
所以没有 unique
的离散化和 bitset
套莫队!
inline void add(int x) {
cur[x + ++cnt[x] - 1] = true;
}
inline void del(int x) {
cur[x + --cnt[x]] = false;
}
但是为了规避出现 \(l > r\) 的情况,在莫队转移的时候需要先向外扩展,再向内缩。
while (r < q.r) add(a[++r]);
while (l > q.l) add(a[--l]);
while (r > q.r) del(a[r--]);
while (l < q.l) del(a[l++]);
这是必要的(否则在 add
和 del
中需要特判 \(> 0\),但是这会很慢)。
所以说 bitset
套莫队这个套路还是十分套路的(废话)
[Ynoi2007] rcn / [Ynoi2003] 博丽灵梦 - 洛谷
这道题没了……在 \(Luogu\) 上看不了,\(LibreOJ\) 上也没有。
题意是有 \(n\) 个点,坐标为 \((i, p_i)\),其类型为 \(c_i \in [1, n]\),每一个类型有一个权值 \(w_i\)。
其中 \(p\) 是一个排列,多次询问求矩形中所有存在类型的权值之和。
这,上二维数颜色了啊……可是排列!发现如果莫队移动每一次就只会修改一个点,也就是说只会影响 \(O(1)\) 个 \(pre\),所以可以分块维护 \(pre\),但是需要 \(O(1)\) 修改,\(O(\sqrt n)\) 查询。
发现加入不好维护,所以利用不增莫队,只是删除。
问题在于分块如何 \(O(1)\) 修改,\(O(\sqrt n)\) 查询。这本质上是一个二维数点问题,所以可以二维分块,可以参考 [Ynoi2007] rdiq - 洛谷,属于是二维分块板板了(可是二离常数更小!)
还是太弱了,只会 \(O(\sqrt n)\) 修改,以及 \(O(\sqrt n \log n)\) 查询,如果是这样,套莫队就变成了 \(O(n \sqrt n \times \sqrt n + m \sqrt n \log n)\),这复杂度看着都抽象 QwQ
其实本题好像就是 [Ynoi2003] 博丽灵梦 - 洛谷,问题不大,慢慢做吧这。
YNOI 做题记的更多相关文章
- 「Ynoi2015」我回来了
「Ynoi2015」我回来了 这东西已经不是 Ynoi 了,因为太水被嫌弃了. 如何提升自己的数据结构能力?从Ynoi做起 题目链接 其实这个题很小清新的辣,而且不卡常. 由于边权为 \(1\),所以 ...
- Ynoi 数据结构题选做
Ynoi 数据结构题选做 前言 我将成为数据结构之神!坚持 lxl 党的领导,紧随 nzhtl1477(女装灰太狼1477)的脚步.无论过去.现在还是未来,分块始终是实现 data structure ...
- 我为什么喜欢用C#来做并发编程
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:就语言和运行时层面,C#做并发编程一点都不弱,缺的是生态和社区. 硅谷才女朱赟(我的家 ...
- 利用session做国际化引起的old区内存爆满及修复方法
题记:昨天加班打车回家,看见前面有辆路虎在高速上开的巨慢,挡住了我坐的出租车的路,于是就跟司机吐槽了一句:“前面这车怎么这么面啊?”,司机沉默了大概3秒,说了一句富含哲理性的话:“没有面车,只有面人” ...
- CentOS 7 安装Nginx做反向代理
题记 须要使用nginx的反向代理功能,測试环境为centos+NGINX 1.8.0. 跳过一些繁琐的问题,直接记录核心 步骤 (1)centos 安装在VM中.因此须要注意网络连接问题 (2)安装 ...
- Ynoi专练
为了练习分块 莫队 bitset黑科技 我会写几道Ynoi 放到这里. bitset 每一位占1bit int 每一位占 4 bitye bool占1 bitye long long 8bitye L ...
- 用php做注册审核
做注册审核就像前面讲的注册登录一样,也是要连接数据库 首先在数据库内要做这样一张表: 表名为users表 里面的列名分别为用户名,密码,姓名,性别,生日,账户的状态,照片 然后就可以写代码了,要注册的 ...
- 我们是怎么做Code Review的
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...
- 传播正能量——做一个快乐的程序员
引子 今天在博客园看到施瓦小辛格的文章我们搞开发的为什么会感觉到累,顿时有感而发.自己本来不擅长写文章,更不擅长写这种非技术性的文章,但是在思绪喷薄之际,还是止不住有很多话要说.针对从客观上说&quo ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
随机推荐
- javascript现代编程之四——数值的进制和表示方法
在JavaScript中,数值可以以不同的进制表示: 十进制:这是我们最常用的进制系统.例如:let decimal = 123; 二进制:数值前面加上 0b 或者 0B.例如:let binary ...
- vue3 快速入门系列 —— 其他API
其他API 前面我们已经学习了 vue3 的一些基础知识,本篇将继续讲解一些常用的其他api,以及较完整的分析vue2 和 vue3 的改变. 浅层响应式数据 shallowRef shallow 中 ...
- EasyNLP带你玩转CLIP图文检索
简介: 本文简要介绍CLIP的技术解读,以及如何在EasyNLP框架中玩转CLIP模型. 作者:熊兮.章捷.岑鸣.临在 导读 随着自媒体的不断发展,多种模态数据例如图像.文本.语音.视频等不断增长,创 ...
- RocketMQ 5.0: 存储计算分离新思路
简介: 在阿里云上,RocketMQ 的商业化产品也以弹性云服务的形式为全球数万个用户提供企业级的消息解决方案,被广泛应用于互联网.大数据.移动互联网.物联网等领域的业务场景,成为了业务开发的首选消息 ...
- 深信服智能边缘计算平台与 OpenYurt 落地方案探索与实践
简介:本文将介绍边缘计算落地的机遇与挑战,以及边缘容器开源项目 OpenYurt 在企业生产环境下的实践方案. 作者:赵震,深信服云计算开发工程师,OpenYurt 社区 Member 编者案:在 ...
- NopCommerce支持多种类型的数据库
本文章的内容是根据本人阅读NopCommerce源码的理解,如有不对的地方请指正,谢谢. 阅读目录 1.类结构关系图 2.分析 3.NopCommerce应用 类结构关系图 分析 NopObjectC ...
- 云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权
01 方案概述 MSE 网关可以为后端服务提供转发路由能力,在此基础上,一些敏感的后端服务需要特定认证授权的用户才能够访问.MSE 云原生网关致力于提供给云上用户体系化的安全解决方案,其中 JWT 认 ...
- JUC并发编程学习笔记(十八)深入理解CAS
深入理解CAS 什么是CAS 为什么要学CAS:大厂你必须深入研究底层!有所突破! java层面的cas------->compareAndSet compareAndSet(int expec ...
- Ubuntu 安装谷歌中文输入法
Ubuntu 安装谷歌中文输入法 下载谷歌拼音:sudo apt-get install fcitx-googlepinyin 点击设置: 第一次打开需要点击安装: 设置完成后重启系统 点击右上角键盘 ...
- Django高级表单处理与验证实战
title: Django高级表单处理与验证实战 date: 2024/5/6 20:47:15 updated: 2024/5/6 20:47:15 categories: 后端开发 tags: D ...