2016-SE02-team1

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

比赛链接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=fabe45f24bca2f90&action=140

jtjl & akalm

== 流水账 ==

== 总结 ==

== 题解 ==

=== B. Tree Coloring [JTJL] ===

自底向上判断,自顶向下填充即可。时间复杂度O(n)。[[BR]]

=== D. Secret Community Card Game [JTJL] ===

二分图匹配[[BR]]

=== E. Partition [JTJL] ===

最坏期望是1/sqrt(pi)*sqrt(n)个格子能切断,所以3/2*sqrt(n)应该比较宽裕。[[BR]]
考虑随机十个斜率,找出正好切成相等两半的截距,然后判断在该直线上的格子数是否满足要求即可。[[BR]]

=== F. Matrix Consistency [JTJL] ===

XOR高斯消元。考虑x每一维变动对xA的影响,是与A的相应行的1有关。而对于固定的xA,除非为0向量,否则均有1/2的y使得xAy=1。[[BR]]
所以只需求出有多少个自由度即可。但是直接高斯消元是O(n^3^)的,加上bitset也过不了,而且很难找主元……[[BR]]
考虑到答案式子对于自由度k, ans = 1/2 - 2^(-k-1)^,可以发现k>=40之后和1/2的误差小于1e-9,所以直接暴力消元,自由度大于40的时候break就好啦。[[BR]]

=== G. MST of Random Points [JTJL] ===

(原问题的理论复杂度也是O(nlogn),但是比较难写)[[BR]]
考虑到数据的随机性,每个点只可能和附近的点连边。对于比较小的n直接暴力求最小生成树即可,对于比较大的n,我们在坐标范围分成sqrt(30000) * sqrt(30000)个网格,对于每个点,只和它所在的网格,以及以该点为左边界中心的大约8*8的网格中的点连边,这样选中的边大概有n * 64条,然后暴力做MST即可。[[BR]]
~~(大概有各种乱搞姿势吧……,调调参数拧一拧~~

=== I. Statistics [JTJL] ===

考虑到每个物体都是独立的,只需要单独计算。再考虑反面,即1号物品摸第k次的时候,另一个物品还没有被摸过的概率。是P = (p * (1 - p) / (1 - (1 - p)^2^))^k^ [[BR]]
Ans = (n-1) * P + 1[[BR]]
~~(比赛的时候直接看着样例凑凑凑,凑出来的)~~[[BR]]

== 补题 ==

A C ~~G~~ H

=== JTJL ===

 * Unaccepted: G

比赛链接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=fabe45f24bca2f90&action=140

jtjl & akalm

流水账

总结

题解

B. Tree Coloring [JTJL]

自底向上判断,自顶向下填充即可。时间复杂度O(n)。

D. Secret Community Card Game [JTJL]

二分图匹配

E. Partition [JTJL]

最坏期望是1/sqrt(pi)*sqrt(n)个格子能切断,所以3/2*sqrt(n)应该比较宽裕。

考虑随机十个斜率,找出正好切成相等两半的截距,然后判断在该直线上的格子数是否满足要求即可。

F. Matrix Consistency [JTJL]

XOR高斯消元。考虑x每一维变动对xA的影响,是与A的相应行的1有关。而对于固定的xA,除非为0向量,否则均有1/2的y使得xAy=1。

所以只需求出有多少个自由度即可。但是直接高斯消元是O(n3)的,加上bitset也过不了,而且很难找主元……

考虑到答案式子对于自由度k, ans = 1/2 - 2(-k-1),可以发现k>=40之后和1/2的误差小于1e-9,所以直接暴力消元,自由度大于40的时候break就好啦。

G. MST of Random Points [JTJL]

(原问题的理论复杂度也是O(nlogn),但是比较难写)

考虑到数据的随机性,每个点只可能和附近的点连边。对于比较小的n直接暴力求最小生成树即可,对于比较大的n,我们在坐标范围分成sqrt(30000) * sqrt(30000)个网格,对于每个点,只和它所在的网格,以及以该点为左边界中心的大约8*8的网格中的点连边,这样选中的边大概有n * 64条,然后暴力做MST即可。

(大概有各种乱搞姿势吧……,调调参数拧一拧

I. Statistics [JTJL]

考虑到每个物体都是独立的,只需要单独计算。再考虑反面,即1号物品摸第k次的时候,另一个物品还没有被摸过的概率。是P = (p * (1 - p) / (1 - (1 - p)2))k

Ans = (n-1) * P + 1

(比赛的时候直接看着样例凑凑凑,凑出来的)

补题

A C G H

JTJL

  • Unaccepted: G