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\)为根的树,一开始所有点都是白色,现要支持三种操作:

  1. 选择一个节点,如果这个节点是白色,则将它变成黑色,否则对它的所有儿子进行同样操作。
  2. 选择一个节点,将这个节点的子树全部变成白色。
  3. 询问一个节点的颜色。

solution
题解给的方法是对操作分块\((\sqrt{n})\),然后每一块的操作只涉及\(\sqrt{n}\)个点,然后不知道怎么搞。。。
下面一个小哥给了一个树剖的做法,感觉好理解一些。

首先将所有点标记为\(-1\),
对于操作\(1\),将那个点\(+1\),
对于操作\(3\),就是询问该点到根的后缀和最大值是否非负,如果非负,则这个点为白色,否则就是黑色。
对于操作\(2\),先询问父亲到根的最大后缀和\((x)\),然后将子树全部变成\(-1\),最后如果\(x>0\), 则询问的那个点要加上\(-x\),以消除前面操作对该子树的影响。

时间复杂度:\(O(nlogn)\)

Codeforces Round #502的更多相关文章

  1. 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 ...

  2. Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2)

    第一次参加cf的比赛 有点小幸运也有点小遗憾 给自己定个小目标 1500[对啊我就是很菜qvq A. The Rank 难度:普及- n位学生 每个学生有四个分数 然鹅我们只需要知道他的分数和 按分数 ...

  3. 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 ...

  4. Codeforces Round #502 (in memory of Leopoldo Taravilse, Div. 1 + Div. 2) E. The Supersonic Rocket

    这道题比赛之后被重新加了几个case,很多人现在都过不了了 算法就是先求凸包,然后判断两个凸包相等 我们可以吧凸包序列化为两点距离和角度 角度如果直接拿向量的叉积是不对的,,因为钝角和锐角的叉积有可能 ...

  5. 【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 ...

  6. 【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 ...

  7. 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 ...

  8. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  9. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

随机推荐

  1. uva1391-Astronauts

    宇航员执行任务,有三个任务ABC.把宇航员按照平均年龄分成新老两组,老宇航员可以去AC,新宇航员可以取BC.宇航员之间有不能共存关系,问是否有合法的分配方案. 分析 虽然有三个任务,但每个宇航员还是只 ...

  2. 深入理解JVM一java堆分析

    上一节介绍了针对JVM的监控工具,包括JPS可以查看当前所有的java进程,jstack查看线程栈可以帮助你分析是否有死锁等情况,jmap可以导出java堆文件在MAT工具上进行分析等等.这些工具都非 ...

  3. [CTSC2012]熟悉的文章 后缀自动机

    题面:洛谷 题解: 观察到L是可二分的,因此我们二分L,然后就只需要想办法判断这个L是否可行即可. 因为要尽量使L可行,因此我们需要求出对于给定L,这个串最多能匹配上多少字符. 如果我们可以对每个位置 ...

  4. 【SPOJ】QTREE7(Link-Cut Tree)

    [SPOJ]QTREE7(Link-Cut Tree) 题面 洛谷 Vjudge 题解 和QTREE6的本质是一样的:维护同色联通块 那么,QTREE6同理,对于两种颜色分别维护一棵\(LCT\) 每 ...

  5. 洛谷 P1171 售货员的难题 【状压dp】

    题目描述 某乡有n个村庄(1<n<20),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村到B村与B村到A村的路大多不同.为了提高效率 ...

  6. Redis的键值命令、服务器命令

    Redis提供了丰富的命令对数据库和各种数据类型进行操作,这些命令可以在Linux 终端使用.在编程时,比如各类语言包,这些命令都有对应的方法. 键值命令 服务器命令 获取数据库中所有键名 >k ...

  7. Communications link failure;;The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

    Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure::The ...

  8. 【期望】【P5081】Tweetuzki 爱取球

    Description Tweetuzki 有一个袋子,袋子中有 \(N\) 个无差别的球.Tweetuzki 每次随机取出一个球后放回.求取遍所有球的期望次数. 取遍是指,袋子中所有球都被取出来过至 ...

  9. MFC之ListCtrl动态添加按钮

    先上效果图: 图中用了一个CListCtrl插件,隐藏了网格线(LVS_EX_GRIDLINES). 添加了“删除”按钮(按钮上贴了图片),选中哪一行则显示在哪一行. 有两种方式创建按钮,一种是直接根 ...

  10. UESTC--1267

    原题链接:http://www.acm.uestc.edu.cn/problem.php?pid=1267 分析:此题麻烦之处在于要输出最小最长上升子序列,关键在于如何解决最小这个问题. 我的做法是从 ...