Codeforces Round #502
Codeforces Round #502
C. The Phone Number
题目描述:求一个\(n\)排列,满足\(LIS+LDS\)最小
solution
枚举\(LIS\),可证明\(LDS\)的最小值为\(\left \lceil \frac{n}{LIS} \right \rceil\)。
证明:
假设\(LDS<\left \lceil \frac{n}{LIS} \right \rceil\),令\((a_i, b_i)\)为\(i\)为结尾的\(LIS\)和\(LDS\),可知\((a_i, b_i)\)二元组两两不同(假设\(a_i=a_j, b_i=b_j, i<j, \because a_i=a_j,\therefore p_i>p_j\), 则\(b_j=b_i+1\)矛盾)
则有\(1\leq a_i \leq LIS\),
\(1\leq b_i \leq LDS \leq \left \lceil \frac{n}{LIS} \right \rceil -1 < \frac{n}{LIS}+1-1=\frac{n}{LIS}\)
所以二元组的个数小于\(LIS \cdot \frac{n}{LIS}=n\),根据鸽巢原理,必定有两个二元组相同,矛盾。
因此\(LDS\)的最小值为\(\left \lceil \frac{n}{LIS} \right \rceil\)。
根据这个可构造答案,从大到小排,然后每\(LIS\)个一组,剩余的一组,然后每组从小到大排。
时间复杂度:\(O(n)\)
E. The Supersonic Rocket
题目描述:题目看得很过瘾,竟然可以把判断两个凸包是否相同描述得如此得复杂。。。
solution
以边长和角度(可以用相邻边的点乘代替)的顺序作为凸包的特征值,把第一个凸包的特征值看成一个字符串,第二个凸包的特征值复制两遍,跑一次\(KMP\)即可。
时间复杂度:\(O(nlogn)\)
F. The Neutral Zone
题目描述:定义\(exlog_f(p_1^{a_1}p_2^{a_2} \cdots p_k^{a_k})=a_1f(p_1)+a_2f(p_2)+\cdots+a_kf(p_k), p_1^{a_1}p_2^{a_2} \cdots p_k^{a_k}\)是一个数的质因数分解,\(f(x)=Ax^3+Bx^2+Cx+D\), 求\(\sum_{i=1}^{n} exlog_f(i)\)
solution
其实就是求
\[\sum_{i=1}^{n \text{以内质数个数}} f(p_i)\sum_{j=1}^{\infty} \left \lfloor \frac{n}{p_i} \right \rfloor\]
但是空间只有\(16M\)
方法一:
质数中除了\(2, 3\)其它质数模\(6\)为\(\pm 1\),以此可以将线性筛的数组控制在十几\(M\)。
方法二:
将\(\sqrt{n}\)的质数求出来,然后将\(n\)分块,每一块分\(3\times 10^6\),然后每一块用\(\sqrt{n}\)的质数筛,筛剩的就是质数。
时间复杂度:\(O(nln\sqrt{n})\)
G. The Tree
题目描述:有一棵以\(1\)为根的树,一开始所有点都是白色,现要支持三种操作:
- 选择一个节点,如果这个节点是白色,则将它变成黑色,否则对它的所有儿子进行同样操作。
- 选择一个节点,将这个节点的子树全部变成白色。
- 询问一个节点的颜色。
solution
题解给的方法是对操作分块\((\sqrt{n})\),然后每一块的操作只涉及\(\sqrt{n}\)个点,然后不知道怎么搞。。。
下面一个小哥给了一个树剖的做法,感觉好理解一些。
首先将所有点标记为\(-1\),
对于操作\(1\),将那个点\(+1\),
对于操作\(3\),就是询问该点到根的后缀和最大值是否非负,如果非负,则这个点为白色,否则就是黑色。
对于操作\(2\),先询问父亲到根的最大后缀和\((x)\),然后将子树全部变成\(-1\),最后如果\(x>0\), 则询问的那个点要加上\(-x\),以消除前面操作对该子树的影响。
时间复杂度:\(O(nlogn)\)
Codeforces Round #502的更多相关文章
- E. The Supersonic Rocket Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2)
http://codeforces.com/contest/1017/problem/E 凸包模板+kmp #include <cstdio> #include <cstdlib&g ...
- Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2)
第一次参加cf的比赛 有点小幸运也有点小遗憾 给自己定个小目标 1500[对啊我就是很菜qvq A. The Rank 难度:普及- n位学生 每个学生有四个分数 然鹅我们只需要知道他的分数和 按分数 ...
- Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2) G. The Tree
G. The Tree time limit per test 3 seconds memory limit per test 256 megabytes input standard input o ...
- Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2) E. The Supersonic Rocket
这道题比赛之后被重新加了几个case,很多人现在都过不了了 算法就是先求凸包,然后判断两个凸包相等 我们可以吧凸包序列化为两点距离和角度 角度如果直接拿向量的叉积是不对的,,因为钝角和锐角的叉积有可能 ...
- 【Codeforces Round #502 (Div. 1 + Div. 2) 】
A:https://www.cnblogs.com/myx12345/p/9843032.html B:https://www.cnblogs.com/myx12345/p/9843050.html ...
- 【Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2) D】The Wu
[链接] 我是链接,点我呀:) [题意] 给你n个字符串放在multiset中. 这些字符串都是长度为m的01串. 然后给你q个询问 s,k 问你set中存在多少个字符串t 使得∑(t[i]==s[i ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
随机推荐
- 3.7 TCP拥塞控制
3.7 TCP拥塞控制 在3.5.5流量控制中有,接收方通过维护一个rwnd来控制流量,本节中考虑三个问题: 第一, 一个TCP发送方如何限制它向其他连接发送流量的速率. 第二, 一个TCP发送方 ...
- 行列式(二):余子式&代数余子式
目录 按行列展开 \(\Delta\)以下内容主要为<线性代数>的学习笔记 按行列展开 一般来说,低阶行列式的计算比高阶行列式的计算要简单得多,因此考虑用低阶行列式来表示高阶行列式.为此, ...
- 【BZOJ4912】天才黑客(最短路,虚树)
[BZOJ4912]天才黑客(最短路,虚树) 题面 BZOJ 洛谷 题解 \(Anson\)爷讲过的题目,然而我还是不会做 只有照着\(zsy\)的程序打我才会做....果然太弱了. 这道题目显然是把 ...
- hdu1693 Eat the Trees 【插头dp】
题目链接 hdu1693 题解 插头\(dp\) 特点:范围小,网格图,连通性 轮廓线:已决策点和未决策点的分界线 插头:存在于网格之间,表示着网格建的信息,此题中表示两个网格间是否连边 状态表示:当 ...
- scala(二)
一.映射 1.Scala映射就是键值对的集合Map.默认情况下,Scala中使用不可变的映射. 如果想使用可变集合Map,必须导入scala.collection.mutable.Map (导包 ...
- libuv移植到ios
libuv官网只提供了os x的编译方法,没有IOS的.既然os x和ios的系统内核差不多,并且编译工具都是xcode,那我们只要重新指定cpu架构,就可以编译出ios版的了. 1.安装python ...
- 字符串hash的学习部分 可以算是模板?
资料来自于http://www.bilibili.com/video/av7230433/ 定义这个字符串为s ①单hash hash[i] = (hash[i - 1] * p + idx(s[i] ...
- LightOJ 1089 - Points in Segments (II) 线段树区间修改+离散化
http://www.lightoj.com/volume_showproblem.php?problem=1089 题意:给出许多区间,查询某个点所在的区间个数 思路:线段树,由于给出的是区间,查询 ...
- JavaScript入门笔记(一)
JavaScipt 2.1 javascript的组成部分 ECMAScript: 它是整个 javascript 的核心,包含(基本语法.变量.关键字.保留字.数据类型.语句.函数等等)DOM:文档 ...
- Python学习笔记(四十一)— 内置模块(10)urllib
摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432688314 ...