前言

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 的向后转移:

\[dp_i \to dp_{i + k \times a_i}
\]

时间复杂度 \(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_i = \sum_{j = 1}^{V} DP_{j, i \mod j}
\]

对 \(DP\) 有懒转移:

\[dp_i \to DP_{a_i, i \mod a_i}
\]

时间复杂度 \(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 总结的更多相关文章

  1. VP记录

    预计在最后的日子里适量VP 简单记录一下 CF 1037 Link 上来秒了ABCD,很快啊 A是二进制拆分,B是一眼贪心,C是一个非常简单且好写的dp D把边遍历顺序按照所需的bfs顺序排序,最后比 ...

  2. 【IOS】将一组包含中文的数据按照#ABC...Z✿分组

    上一篇文章[IOS]模仿windowsphone列表索引控件YFMetroListBox里面 我们一步步的实现了WindowsPhone风格的索引. 但是有没有发现,如果你要实现按照字母排序,你还得自 ...

  3. 在JS中关于堆与栈的认识function abc(a){ a=100; } function abc2(arr){ arr[0]=0; }

    平常我们的印象中堆与栈就是两种数据结构,栈就是先进后出:堆就是先进先出.下面我就常见的例子做分析: main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main( ...

  4. 学习Python的ABC模块(转)

    http://yansu.org/2013/06/09/learn-Python-abc-module.html 1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助a ...

  5. Android MVP + 泛型,实现了友好VP交互及Activity潜在的内存泄露的优化

    Android MVP粗来已经有段时间了,在项目中我也多多少少用了一些,不得不说代码使用这种模式后,条例确实清晰了好多,整个流程看起来有点各司其职的感觉(另一种的java面向对象的方式). 不过这里是 ...

  6. 将abc的全排列输出

    #include "iostream" using namespace std; void swap(char a[],int i,int j){ char temp; temp= ...

  7. 关于String str =new String("abc")和 String str = "abc"的比较

    String是一个非常常用的类,应该深入的去了解String 如: String str =new String("abc") String str1 = "abc&qu ...

  8. IE9 使用document.getElementsByName("abc") 不能获取到名称相同SPAN元素

    <div name="abc"></div> <input name="abc" type="text" /& ...

  9. 经典String str = new String("abc")内存分配问题

    出自:http://blog.csdn.net/ycwload/article/details/2650059 今天要找和存储管理相关的一些知识,网上搜了半天也没有找到完善的(30%的程度都不到),没 ...

  10. 再谈ABC

    最近一直在看蒋老师那13篇<我的WCF之旅>,终于看完了,看得很慢,记得最初出来工作的时候那时的技术总监建议我去看的,可几个月前我才开始看,看了几个月才把13篇看完.第一篇WCF的博文是我 ...

随机推荐

  1. 使用qt+网上的api做股票查看器

    股票球,采用的是qt和新浪的api来设计,目前只有查看功能,2021年1月17日开始开发,后续可能会持续更新(可能跟心情有关) k线图在 Windows下获取数据有问题,还没来得及做,目前在Linux ...

  2. 洛谷 P3201 [HNOI2009] 梦幻布丁

    洛谷 P3201 [HNOI2009] 梦幻布丁 祭我AC的第十道紫题. 听了一下午的 才调出来. 题意分析 洛谷传送门 给一个序列a,有两种操作-- 1 x y将序列中所有x全部变成y 2查询当前序 ...

  3. 博创Luby使用指南

    Luby使用指南 1.开机 通电,当显示在boot界面的时候,长按正方形(深灰色)那个键,即可进入选择程序界面,此时再按一次正方形那个键,即可进入USB连接模式,此时用线将Luby和电脑连接起来. 当 ...

  4. 「Log」做题记录 2024.1.29-

    \(2024.1.29-2024.2.4\) \(\color{royalblue}{P5903}\) 树上 \(k\) 级祖先模板,长链剖分. \(\color{blueviolet}{CF1009 ...

  5. 我做了个 AI 高考分数预测器,这次终于能上清华了!

    马上高考了,可惜我今年有事情参加不了了,就帮帮广大考生朋友们,送大家一个我自己做的高考神器吧! 铛铛铛铛,就是这个 高考分数预测器! 体验地址:https://gaokao.codefather.cn ...

  6. GPU开启持久化模式

    GPU开启持久化模式 GPU驱动内存常驻模式,也称为GPU驱动持久模式.linux 系统下,在 persistence 模式是 enabled 状态时, GPU 驱动一直处于加载状态, 减少运行程序时 ...

  7. 千呼万唤始出来 —— OB 全文索引能力史诗级增强

    首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 "老纪的技术唠嗑局",会持续更新和 OceanBase 相关的各种技术内容.欢迎感兴趣的朋友们关注! 背景(What ...

  8. Arduino从零开始的高手之路——初识Arduino

    初识Arduino 时隔若干年,重启Arduino入门教程~ Arduino自2005年推出以来,广受好评,如今已成为最热门的开源硬件之一.在全球最大的开源社区Github上,Arduino已经成为了 ...

  9. vue导出Excel表格各种样式

    https://www.cnblogs.com/Awchao/p/14143385.html

  10. sql注入绕过某waf

    简单布尔判断 直接输入and 1=1拦截 使用mysql黑魔法 and{a 1=1} and{a 1=2}不拦截 本地mysql测试语句正常执行 简单延时判断 and sleep(1) 简单测试后在( ...