ABC 335 VP 总结
前言
ABCDE + 口胡 F + 不会一点 G。
正文
A
?
B
?
C
?
D
构造一个环形递增矩阵即可。
E
考虑何时才有一个非降序列。
令 \(val_x\) 为点 \(x\) 的权值。
对于一个相邻的点对 \((u, v)\),可以分成三种情况:
- \(val_u > val_v\)
此时只有 \(v \to u\) 的可能,\(v\) 向 \(u\) 连边。
- \(val_u < val_v\)
类似上一种情况,\(u\) 向 \(v\) 连边。
- \(val_u = val_v\)
此时无论是经过 \(u\) 还是经过 \(v\) 或是 \(u, v\) 两点都经过,它们的贡献都一样,将 \(u, v\) 缩成一个点即可。
不会吧不会吧不会有人这种缩点用 tarjan 吧???
对不起,我紫菜。
你怎么知道我 tarjan 缩点然后调 30 min 弘文了?
并查集维护缩点操作。缩点后跑 DAG 上最长路即可。toposort 可以胜任。
注意是在缩点之后重新编号连边。
时间复杂度 \(O(n\alpha (n) + m)\)。
F
首先设 \(dp_i\) 为到第 \(i\) 格的填色方案。
你会想到一个 naive 的向后转移:
\]
时间复杂度 \(O(n \frac{n}{V})\)。
有另一个 naive 的转移,是去考虑 \(dp_i\) 从前面的何处转移而来的。
显然 \(dp_j \to dp_i\) 的条件是 \(j + k \times a_j = i\),转换得:\(i \equiv j (\mod a_j)\)。
维护 \(DP_{i, j}\) 表示模 \(i\) 位置为 \(j\) 的方案总和,那么有:
\]
对 \(DP\) 有懒转移:
\]
时间复杂度 \(O(nV)\)。
此时两个转移的复杂度跟 \(V\) 相关并且两种状态完全一致,不妨考虑对转移过程根号分治。
钦定阈值 \(B = \sqrt {\max_{i \in [1,n]} \left \{ a_i \right \}}\),若 \(a_i > B\) 则用第一种方式转移,反之用第二种方式转移。
时间复杂度 \(O(n \sqrt V)\)。
G
想到了一个正确概率很大的东西但是会被构造数据卡掉的方法,丢人,不说了。
总结
打得算好的,因为 ABCD 没什么分讨不容易写挂算是有点运气成分,E 想 + 调了接近 60 min,F 口胡出来了但是某些细节还是没注意,G 是数学确实不会做,确实是纯菜了。
后面还是得注重训练码力和刻意记住某些经典的 trick,因为某些题目的关键点就可能是某个 trick 的延申。
ABC 335 VP 总结的更多相关文章
- VP记录
预计在最后的日子里适量VP 简单记录一下 CF 1037 Link 上来秒了ABCD,很快啊 A是二进制拆分,B是一眼贪心,C是一个非常简单且好写的dp D把边遍历顺序按照所需的bfs顺序排序,最后比 ...
- 【IOS】将一组包含中文的数据按照#ABC...Z✿分组
上一篇文章[IOS]模仿windowsphone列表索引控件YFMetroListBox里面 我们一步步的实现了WindowsPhone风格的索引. 但是有没有发现,如果你要实现按照字母排序,你还得自 ...
- 在JS中关于堆与栈的认识function abc(a){ a=100; } function abc2(arr){ arr[0]=0; }
平常我们的印象中堆与栈就是两种数据结构,栈就是先进后出:堆就是先进先出.下面我就常见的例子做分析: main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main( ...
- 学习Python的ABC模块(转)
http://yansu.org/2013/06/09/learn-Python-abc-module.html 1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助a ...
- Android MVP + 泛型,实现了友好VP交互及Activity潜在的内存泄露的优化
Android MVP粗来已经有段时间了,在项目中我也多多少少用了一些,不得不说代码使用这种模式后,条例确实清晰了好多,整个流程看起来有点各司其职的感觉(另一种的java面向对象的方式). 不过这里是 ...
- 将abc的全排列输出
#include "iostream" using namespace std; void swap(char a[],int i,int j){ char temp; temp= ...
- 关于String str =new String("abc")和 String str = "abc"的比较
String是一个非常常用的类,应该深入的去了解String 如: String str =new String("abc") String str1 = "abc&qu ...
- IE9 使用document.getElementsByName("abc") 不能获取到名称相同SPAN元素
<div name="abc"></div> <input name="abc" type="text" /& ...
- 经典String str = new String("abc")内存分配问题
出自:http://blog.csdn.net/ycwload/article/details/2650059 今天要找和存储管理相关的一些知识,网上搜了半天也没有找到完善的(30%的程度都不到),没 ...
- 再谈ABC
最近一直在看蒋老师那13篇<我的WCF之旅>,终于看完了,看得很慢,记得最初出来工作的时候那时的技术总监建议我去看的,可几个月前我才开始看,看了几个月才把13篇看完.第一篇WCF的博文是我 ...
随机推荐
- 推荐一个Elasticsearch ES可视化客户端工具:ES-King
ES-King:开源免费,一个现代.实用的ES GUI客户端,支持多平台. 下载地址:https://github.com/Bronya0/ES-King 功能清单 详尽的集群信息:节点信息.堆内存占 ...
- 【踩坑】VMware Workstation 17.x 中的虚拟机按键反映迟钝
[踩坑]VMware Workstation 17.x 中的虚拟机按键反映迟钝 目录 [踩坑]VMware Workstation 17.x 中的虚拟机按键反映迟钝 问题描述 笔者环境 解决方法 测试 ...
- 【公众号搬运】React-Native开发鸿蒙NEXT(4)
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 打工人神助攻!2025年最火OKR工具榜单,看板式目标管理必备
OKR(目标与关键成果)已成为企业目标管理的标准框架,为确保OKR目标可落地,可视化.协作性强的工具需求激增.2025年,哪些OKR工具真正助力团队落地战略?本文盘点当下最火的5款OKR工具,帮助HR ...
- python 获取mac地址
python 获取mac地址 方法一:使用socket库 使用了socket库中的ioctl函数和fcntl模块来获取MAC地址 import socket import fcntl import s ...
- 替换GitLab的方案之Gitea
概述 官网:https://docs.gitea.com/zh-cn/ GitHub地址:https://github.com/go-gitea/gitea Gitea 是一个轻量级的 DevOps ...
- Centos7在原有磁盘上磁盘扩容
如下示例使用VMWare虚拟化软件给虚拟centos7系统进行相关磁盘扩容 1.查看目前磁盘容量 2.VMWare给虚拟系统扩展空间 注意在虚拟系统关机情况下进行 3.查看扩容后磁盘情况 4.创建磁盘 ...
- HTML5 e CSS3 入门教程与练习项目
HTML5 e CSS3 课程材料 这是一个公开的HTML5和CSS3教学资源库,包含完整的课程PDF.实践练习代码和在线演示. 项目特点 结构化学习路径:从基础到高级的模块化课程设计 :laptop ...
- java--Hibernate查询、连接池、二级缓存
hibernate查询 1) Get/load主键查询 2) 对象导航查询 3) HQL查询, Hibernate Query language hibernate 提供的面向对象的查询语言. 4) ...
- java--Hibernate框架基础
SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate, 基于持久层的框架(数据访问层使用)! Spring, 创建对象处理对象的依赖关系以及框架整合! Hiberna ...