2016-C11-team1
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
||User||Problem||Result||Memory||Time||Language||Length||Submit Time||
||Siunaus||G||WA|| || ||C++ 5.3.0||1019||2016-08-11 14:15:41||
||Siunaus||G||WA|| || ||C++11 5.3.0||923||2016-08-11 14:09:54||
||Siunaus||J||WA|| || ||C++11 5.3.0||2385||2016-08-11 14:08:22||
||Siunaus||G||WA|| || ||C++ 5.3.0||910||2016-08-11 14:07:35||
||Siunaus||J||WA|| || ||C++11 5.3.0||2381||2016-08-11 14:07:02||
||Siunaus||G||WA|| || ||C++ 5.3.0||910||2016-08-11 14:03:35||
||Siunaus||C||CE|| || ||C++11 5.3.0||527||2016-08-11 14:01:22||
||Siunaus||J||WA|| || ||C++11 5.3.0||1301||2016-08-11 13:26:36||
||Siunaus||J||WA|| || ||C++11 5.3.0||1277||2016-08-11 13:21:11||
||Siunaus||J||WA|| || ||C++11 5.3.0||1270||2016-08-11 13:17:21||
||Siunaus||J||WA|| || ||C++11 5.3.0||1262||2016-08-11 13:14:15||
||Siunaus||H||AC||0||405||C++ 5.3.0||2274||2016-08-11 12:37:32||
||Siunaus||I||AC||0||69||C++11 5.3.0||3593||2016-08-11 12:06:57||
||Siunaus||F||AC||0||4755||C++11 5.3.0||1654||2016-08-11 11:51:56||
||Siunaus||C||AC||0||1602||C++ 5.3.0||2825||2016-08-11 11:47:27||
||Siunaus||I||WA|| || ||C++11 5.3.0||2904||2016-08-11 11:44:58||
||Siunaus||I||WA|| || ||C++11 5.3.0||2880||2016-08-11 11:36:57||
||Siunaus||C||WA|| || ||C++ 5.3.0||2815||2016-08-11 11:19:59||
||Siunaus||D||AC||0||29||C++11 5.3.0||437||2016-08-11 10:21:02||
||Siunaus||A||AC||0 KB||599 ms||C++11 5.3.0||555||2016-08-11 10:01:07||
||Siunaus||E||AC||0||4712||C++11 5.3.0||1294||2016-08-11 09:55:36||
||Siunaus||D||WA|| || ||C++11 5.3.0||1203||2016-08-11 09:47:43||
||Siunaus||D||WA|| || ||C++11 5.3.0||1044||2016-08-11 09:41:54||
||Siunaus||B||AC||0||3||C++11 5.3.0||629||2016-08-11 09:16:10||
start at 09:10
[http://acm.hust.edu.cn/vjudge/contest/127594 比赛链接] (password: 20160811)
== 流水账 ==
== 总结 ==
== 题解 ==
=== A. Automatic Cheater Detection [JTJL] ===
di很小
=== B. Counting Weekend Days [JTJL] ===
周五,而不是周日
=== C. Toll Management IV [sfiction] ===
给定一个无向图(n<=1e3,m<=1e4)和它的一个生成树,满足生成树上路径为图上路径中最大值最小的路径。求每条边权值的变动(单独变动)范围使得该生成树性质保持。
树上边无下界,非树边无上界。非树边可以视作树上路径,其下界即为路径上最大值。非树边对路径上所有边形成约束,树上边上界为约束中最小值。前者可以在倍增LCA中顺带完成,后者可以从LCA拆开后由端点向LCA传递,每个节点维护所有约束组成的优先队列,通过检查队首的退出时间戳来保证合法性。使用可并堆可以做到O(nlogm),也可以用启发式合并+非可并堆做到O(nlognlogm)。总体复杂度为O(mlogn+nlogm)。
后半部分也可以用缩点的做法。将约束条件从大到小排序,每一对求LCA并从端点向上合并。ci<=1000,约束条件不需要排序,LCA离线O(1),因此复杂度为O(m)。
=== D. Owllen [sfiction] ===
给定一个串S,求与S同长的与S的LCS最小的串。
似乎只需要输出字符集中出现次数最少的字符即可,待证明。
=== E. Sum of MSLCM [sfiction] ===
给定n(<=2e7),求1-n所有数约数之和。
\sum_{i=1}^{n}{[n/i]*i}。O(n^0.5)。
=== F. Unique Party [sfiction] ===
给定一个矩阵(n,m<=250),有Q(<=10)个询问,每个询问包含一个正整数h,求中位数(第n/2+1个)>=h的最大子矩阵大小。
首先将矩阵处理为1和-1,一维上区间枚举,这样就转化成了最长非负和子序列。从前缀和s[i]角度考虑即为求每个位置i后大于等于其的最远位置。注意到可以忽略i<j且s[i]<=s[j]的j项。而对于剩余的项,其对应位置满足单调性。因此可以在O(n)时间内求解。
=== G. Honey King [sfiction] ===
给六边形网格上一个点集,求能覆盖所有点的最小格点正六边形的半径。
二分边长。以一个点为中心的正六边形与六个半平面的交等价,六个半平面又分别属于三个方向(x,y,x+y),因此只需在三个方向上做区间交即可。注意即使三个方向各自满足条件也可能无解,需要判定[xl+yl, xh+yh]和[xyl,xyh]是否有交。
=== H. Design New Capital [sfiction] ===
给定平面上n(<=1e5)个点,且均不位于坐标轴上,设optimal point为到给定点集曼哈顿距离之和最小的点(可能不唯一)。对所有的k,求有多少k元子集的optimal point可以为(0,0)。
k为奇数时答案为0。设四个象限所选点数为abcd,则条件等价于 a+b=c+d && a+d=b+c,则有 a=c && b=d。设四个象限总点数为 ABCD,则ans[k]= \sum_{i=0}!^(k){C(A,i)*C(C,i) * C(B,k-i)*C(D,k-i)}。做一遍NTT即可。O(nlogn)。
=== I. Numbered Cards [JTJL] ===
数位DP预处理,状压DP求答案。
发现前缀0可以合在一起处理而不用枚举长度……
=== J. The Hypnotic Spirals [JTJL] ===
给定一条等速螺线和n(<=10)条射线,形成对极坐标平面的一个划分,给定m(<=1e3)个点,求这些点所在区域的面积之和,注意一个区域可能有多个点。
对区域由内向外标号,计算每个点所属区间并去重,积分求和。
一些坑:
n为0的时候,m=0时答案为0,否则为-1
前两圈的极坐标轴所在区间需要特殊处理
== 补题 ==
~~G~~ ~~J~~
=== JTJL ===
* Unaccepted: J
=== sfiction ===
* Unaccepted: G
| User | Problem | Result | Memory | Time | Language | Length | Submit Time |
| Siunaus | G | WA | C++ 5.3.0 | 1019 | 2016-08-11 14:15:41 | ||
| Siunaus | G | WA | C++11 5.3.0 | 923 | 2016-08-11 14:09:54 | ||
| Siunaus | J | WA | C++11 5.3.0 | 2385 | 2016-08-11 14:08:22 | ||
| Siunaus | G | WA | C++ 5.3.0 | 910 | 2016-08-11 14:07:35 | ||
| Siunaus | J | WA | C++11 5.3.0 | 2381 | 2016-08-11 14:07:02 | ||
| Siunaus | G | WA | C++ 5.3.0 | 910 | 2016-08-11 14:03:35 | ||
| Siunaus | C | CE | C++11 5.3.0 | 527 | 2016-08-11 14:01:22 | ||
| Siunaus | J | WA | C++11 5.3.0 | 1301 | 2016-08-11 13:26:36 | ||
| Siunaus | J | WA | C++11 5.3.0 | 1277 | 2016-08-11 13:21:11 | ||
| Siunaus | J | WA | C++11 5.3.0 | 1270 | 2016-08-11 13:17:21 | ||
| Siunaus | J | WA | C++11 5.3.0 | 1262 | 2016-08-11 13:14:15 | ||
| Siunaus | H | AC | 0 | 405 | C++ 5.3.0 | 2274 | 2016-08-11 12:37:32 |
| Siunaus | I | AC | 0 | 69 | C++11 5.3.0 | 3593 | 2016-08-11 12:06:57 |
| Siunaus | F | AC | 0 | 4755 | C++11 5.3.0 | 1654 | 2016-08-11 11:51:56 |
| Siunaus | C | AC | 0 | 1602 | C++ 5.3.0 | 2825 | 2016-08-11 11:47:27 |
| Siunaus | I | WA | C++11 5.3.0 | 2904 | 2016-08-11 11:44:58 | ||
| Siunaus | I | WA | C++11 5.3.0 | 2880 | 2016-08-11 11:36:57 | ||
| Siunaus | C | WA | C++ 5.3.0 | 2815 | 2016-08-11 11:19:59 | ||
| Siunaus | D | AC | 0 | 29 | C++11 5.3.0 | 437 | 2016-08-11 10:21:02 |
| Siunaus | A | AC | 0 KB | 599 ms | C++11 5.3.0 | 555 | 2016-08-11 10:01:07 |
| Siunaus | E | AC | 0 | 4712 | C++11 5.3.0 | 1294 | 2016-08-11 09:55:36 |
| Siunaus | D | WA | C++11 5.3.0 | 1203 | 2016-08-11 09:47:43 | ||
| Siunaus | D | WA | C++11 5.3.0 | 1044 | 2016-08-11 09:41:54 | ||
| Siunaus | B | AC | 0 | 3 | C++11 5.3.0 | 629 | 2016-08-11 09:16:10 |
start at 09:10
比赛链接 (password: 20160811)
流水账
总结
题解
A. Automatic Cheater Detection [JTJL]
di很小
B. Counting Weekend Days [JTJL]
周五,而不是周日
C. Toll Management IV [sfiction]
给定一个无向图(n<=1e3,m<=1e4)和它的一个生成树,满足生成树上路径为图上路径中最大值最小的路径。求每条边权值的变动(单独变动)范围使得该生成树性质保持。
树上边无下界,非树边无上界。非树边可以视作树上路径,其下界即为路径上最大值。非树边对路径上所有边形成约束,树上边上界为约束中最小值。前者可以在倍增LCA中顺带完成,后者可以从LCA拆开后由端点向LCA传递,每个节点维护所有约束组成的优先队列,通过检查队首的退出时间戳来保证合法性。使用可并堆可以做到O(nlogm),也可以用启发式合并+非可并堆做到O(nlognlogm)。总体复杂度为O(mlogn+nlogm)。
后半部分也可以用缩点的做法。将约束条件从大到小排序,每一对求LCA并从端点向上合并。ci<=1000,约束条件不需要排序,LCA离线O(1),因此复杂度为O(m)。
D. Owllen [sfiction]
给定一个串S,求与S同长的与S的LCS最小的串。
似乎只需要输出字符集中出现次数最少的字符即可,待证明。
E. Sum of MSLCM [sfiction]
给定n(<=2e7),求1-n所有数约数之和。
\sum_{i=1}{n}{[n/i]*i}。O(n0.5)。
F. Unique Party [sfiction]
给定一个矩阵(n,m<=250),有Q(<=10)个询问,每个询问包含一个正整数h,求中位数(第n/2+1个)>=h的最大子矩阵大小。
首先将矩阵处理为1和-1,一维上区间枚举,这样就转化成了最长非负和子序列。从前缀和s[i]角度考虑即为求每个位置i后大于等于其的最远位置。注意到可以忽略i 给六边形网格上一个点集,求能覆盖所有点的最小格点正六边形的半径。 二分边长。以一个点为中心的正六边形与六个半平面的交等价,六个半平面又分别属于三个方向(x,y,x+y),因此只需在三个方向上做区间交即可。注意即使三个方向各自满足条件也可能无解,需要判定[xl+yl, xh+yh]和[xyl,xyh]是否有交。 给定平面上n(<=1e5)个点,且均不位于坐标轴上,设optimal point为到给定点集曼哈顿距离之和最小的点(可能不唯一)。对所有的k,求有多少k元子集的optimal point可以为(0,0)。 k为奇数时答案为0。设四个象限所选点数为abcd,则条件等价于 a+b=c+d && a+d=b+c,则有 a=c && b=d。设四个象限总点数为 ABCD,则ans[k]= \sum_{i=0}!^(k){C(A,i)*C(C,i) * C(B,k-i)*C(D,k-i)}。做一遍NTT即可。O(nlogn)。 数位DP预处理,状压DP求答案。 发现前缀0可以合在一起处理而不用枚举长度…… 给定一条等速螺线和n(<=10)条射线,形成对极坐标平面的一个划分,给定m(<=1e3)个点,求这些点所在区域的面积之和,注意一个区域可能有多个点。 对区域由内向外标号,计算每个点所属区间并去重,积分求和。 一些坑: n为0的时候,m=0时答案为0,否则为-1 前两圈的极坐标轴所在区间需要特殊处理G. Honey King [sfiction]
H. Design New Capital [sfiction]
I. Numbered Cards [JTJL]
J. The Hypnotic Spirals [JTJL]
补题
G JJTJL
sfiction
附加文件
- 201608110910_Summer2016Team1_Siunaus-contest11.tar.gz by sfiction
- J.cc by jtjl
- G.cc by sfiction