2016-E48-team1

从 Trac 迁移的文章

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

原文章内容如下:

{{{
#!html
<pre class="wiki" style="font: normal 13px Consolas">
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                     2017/04/12 16:55-21:55 · Siunaus · Akalm/JTJL/sfiction                                      │
├────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│L [0:42]│                1                                           2 oOo    oooOoooooooo.  .OOoo#3                             │
├────────┼════════════════════════────────────────────────════════════════════════────────────────────────════════════════════════┤
│J [0:44]│         1                          2  ooo.        oOOooo. ooo! .Oooo!  3        oOO#                                   │
├────────┼════════════════════════────────────────────────════════════════════════────────────────────────════════════════════════┤
│C [0:09]│     1             oOO# 2                 3                                                                             │
│E [0:26]│                  1                       2OOOoOooo. .!  oo#               3                                            │
├────────┼════════════════════════────────────────────────════════════════════════────────────────────────════════════════════════┤
│* [2:41]│                   oOOo.     .         ooooOOOoOooooOOoooOoooooOoOooooooOoooooooooOOoOOoo.        .  ooOOOooooooOooOoo.o│
├────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│A [0:00]│                                                       1                                                   2            │
│B0[0:00]│                                                                                                                        │
│D3[0:00]│                                                                                1                                       │
│F6[0:00]│                               1                                                                                        │
│G0[0:00]│                                                                                                                        │
│H5[0:00]│                                                                            1                                           │
│I [0:40]│                                                           1                                         ooOOOooooooOooO2o.o│
│K1[0:00]│                                                                1                                                       │
│M3[0:00]│                                                                                    1                                   │
└────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
</pre>
}}}

||Submission time||ID||Problem||Compiler||Verdict||Time||Memory||Test||
||12 Apr 2017, 15:38:16||4403139||L||GNU c++ 11 4.9||OK||246ms||3.64Mb||-||
||12 Apr 2017, 15:27:47||4403085||J||GNU c++ 11 4.9||OK||0.522s||8.00Mb||-||
||12 Apr 2017, 14:48:38||4402930||J||GNU c++ 11 4.9||WA||205ms||3.99Mb||18||
||12 Apr 2017, 14:32:02||4402826||J||GNU c++ 11 4.9||WA||138ms||3.99Mb||18||
||12 Apr 2017, 14:24:17||4402720||E||GNU c++ 11 4.9||OK||0.511s||492.00Kb||-||
||12 Apr 2017, 14:11:48||4402617||E||GNU c++ 11 4.9||TL||1.045s||900.00Kb||23||
||12 Apr 2017, 12:52:44||4402186||C||GNU c++ 11 4.9||OK||74ms||2.44Mb||-||

比赛链接: http://official.contest.yandex.com/mipt2017distant/contest/4379

start at 16:55

== 流水账 ==

== 总结 ==

== 题解 ==

{{{
#!html
<script type="text/x-mathjax-config">MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});</script>
<script type="text/javascript" async src="http://10.71.10.90/sfiction/tool/MathJax/MathJax-master/MathJax.js?config=TeX-MML-AM_CHTML"></script>
}}}

=== C. Count the Trees [JTJL, sfiction] ===

{{{
#!html
将连通块缩为点,连接到大小为k连通块的点有k种选择。考虑缩点后无根树的prufer编码。因为每个点的度数为prufer编码中出现次数+1,容易得出总方案数为$(\prod{sz[i]})n^{n_0-2}$。n0为缩点后点数。O(nlogn)。
}}}

=== D. Dancing IOI Team [sfiction] ===

考虑枚举final score中top-k和non-top-k之间的分割点,设为X。那么每个a_i的可选c_i都是连续(排序后)的一段。以ai为行,ci为列(均有序)。如果有一列没有任何元素,那么无解。否则必然存在一个数m,使得左上角(n-k)*m区域全可选,右下角k*(n-m)区域均可选。左下角和右上角分别是两个梯形区域,DP求出有i个点落在左下角,j个点落在右上角的方案数,然后用排列组合计算矩形区域中方案数。O(an^2^)。

=== E. Expectation of Damage [sfiction] ===

可以枚举ij,计算打出攻击i,之前有j次尝试的概率之和。如果考虑大小为j的无序集,则是多项式\prod{(1+(1-p[i])x)}的系数。因此将所有一次式相乘,枚举i时除掉i对应的一次式再统计。O(n^2^)。

=== F. Fire Engines [sfiction] ===

设f(x)是x对应的pump坐标,如果有f(x)<=x,那么对于[f(x),x)中的y,必然有f(y)<=y。对于(f(x),x]中的f(y),必然有f(y)<=y。可以推出所有解必定能够分解为多个极小化的连续段,连续段中pump和engine数量相等,并且都满足f(x)<=x或者f(x)>x。因此对于每个坐标x,有且仅有一个对应的合法极小化连续段。设dp(i)为只考虑前i个坐标,且其中engine全部匹配的最小代价,则只有O(n)个转移。O(nlogn+mlogm)。

=== H. Holes in Aquarium [sfiction] ===

根据底部每段的高度关系建笛卡尔树。每次打穿一个叶子,其到根路径上的水都会流尽。因此就是选k个叶子,使得路径并权值最大。每次贪心取。贪心过程不需要数据结构,可以自底向上求链,每次选最大的一个儿子继续,另一个加入可选集。对可选集做nth_element。O(n)。

=== L. Light Bulbs [sfiction, Akalm] ===

每相邻一个空位(包括外界),都将让一个位置的可选状态减少一半。于是可以在枚举起点终点的朝向后,逐个格子递推状态。

=== M. Medical Services [Akalm] ===

如果只有一个根,两个问题分别可以用排序和二分解决。

现在枚举两个根路径上切掉哪条边,两侧分别当成单根的情况算一算即可。

怀疑这题有毒……直接枚举会T,最小值落在两边可能三分不出来……
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐│                                     2017/04/12 16:55-21:55 · Siunaus · Akalm/JTJL/sfiction                                      │├────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤│L [0:42]│                1                                           2 oOo    oooOoooooooo.  .OOoo#3                             │├────────┼════════════════════════────────────────────────════════════════════════────────────────────────════════════════════════┤│J [0:44]│         1                          2  ooo.        oOOooo. ooo! .Oooo!  3        oOO#                                   │├────────┼════════════════════════────────────────────────════════════════════════────────────────────────════════════════════════┤│C [0:09]│     1             oOO# 2                 3                                                                             ││E [0:26]│                  1                       2OOOoOooo. .!  oo#               3                                            │├────────┼════════════════════════────────────────────────════════════════════════────────────────────────════════════════════════┤│* [2:41]│                   oOOo.     .         ooooOOOoOooooOOoooOoooooOoOooooooOoooooooooOOoOOoo.        .  ooOOOooooooOooOoo.o│├────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤│A [0:00]│                                                       1                                                   2            ││B0[0:00]│                                                                                                                        ││D3[0:00]│                                                                                1                                       ││F6[0:00]│                               1                                                                                        ││G0[0:00]│                                                                                                                        ││H5[0:00]│                                                                            1                                           ││I [0:40]│                                                           1                                         ooOOOooooooOooO2o.o││K1[0:00]│                                                                1                                                       ││M3[0:00]│                                                                                    1                                   │└────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Submission timeIDProblemCompilerVerdictTimeMemoryTest
12 Apr 2017, 15:38:164403139LGNU c++ 11 4.9OK246ms3.64Mb-
12 Apr 2017, 15:27:474403085JGNU c++ 11 4.9OK0.522s8.00Mb-
12 Apr 2017, 14:48:384402930JGNU c++ 11 4.9WA205ms3.99Mb18
12 Apr 2017, 14:32:024402826JGNU c++ 11 4.9WA138ms3.99Mb18
12 Apr 2017, 14:24:174402720EGNU c++ 11 4.9OK0.511s492.00Kb-
12 Apr 2017, 14:11:484402617EGNU c++ 11 4.9TL1.045s900.00Kb23
12 Apr 2017, 12:52:444402186CGNU c++ 11 4.9OK74ms2.44Mb-

比赛链接: http://official.contest.yandex.com/mipt2017distant/contest/4379

start at 16:55

流水账

总结

题解

C. Count the Trees [JTJL, sfiction]

将连通块缩为点,连接到大小为k连通块的点有k种选择。考虑缩点后无根树的prufer编码。因为每个点的度数为prufer编码中出现次数+1,容易得出总方案数为$(\prod{sz[i]})n^{n_0-2}$。n0为缩点后点数。O(nlogn)。

D. Dancing IOI Team [sfiction]

考虑枚举final score中top-k和non-top-k之间的分割点,设为X。那么每个a_i的可选c_i都是连续(排序后)的一段。以ai为行,ci为列(均有序)。如果有一列没有任何元素,那么无解。否则必然存在一个数m,使得左上角(n-k)*m区域全可选,右下角k*(n-m)区域均可选。左下角和右上角分别是两个梯形区域,DP求出有i个点落在左下角,j个点落在右上角的方案数,然后用排列组合计算矩形区域中方案数。O(an2)。

E. Expectation of Damage [sfiction]

可以枚举ij,计算打出攻击i,之前有j次尝试的概率之和。如果考虑大小为j的无序集,则是多项式\prod{(1+(1-p[i])x)}的系数。因此将所有一次式相乘,枚举i时除掉i对应的一次式再统计。O(n2)。

F. Fire Engines [sfiction]

设f(x)是x对应的pump坐标,如果有f(x)<=x,那么对于[f(x),x)中的y,必然有f(y)<=y。对于(f(x),x]中的f(y),必然有f(y)<=y。可以推出所有解必定能够分解为多个极小化的连续段,连续段中pump和engine数量相等,并且都满足f(x)<=x或者f(x)>x。因此对于每个坐标x,有且仅有一个对应的合法极小化连续段。设dp(i)为只考虑前i个坐标,且其中engine全部匹配的最小代价,则只有O(n)个转移。O(nlogn+mlogm)。

H. Holes in Aquarium [sfiction]

根据底部每段的高度关系建笛卡尔树。每次打穿一个叶子,其到根路径上的水都会流尽。因此就是选k个叶子,使得路径并权值最大。每次贪心取。贪心过程不需要数据结构,可以自底向上求链,每次选最大的一个儿子继续,另一个加入可选集。对可选集做nth_element。O(n)。

L. Light Bulbs [sfiction, Akalm]

每相邻一个空位(包括外界),都将让一个位置的可选状态减少一半。于是可以在枚举起点终点的朝向后,逐个格子递推状态。

M. Medical Services [Akalm]

如果只有一个根,两个问题分别可以用排序和二分解决。

现在枚举两个根路径上切掉哪条边,两侧分别当成单根的情况算一算即可。

怀疑这题有毒……直接枚举会T,最小值落在两边可能三分不出来……