Rank | Solved | A | B | C | D | E | F | G | H | I | J | K |
---|---|---|---|---|---|---|---|---|---|---|---|---|
--/-- | 6/11 | . | O | Ø | O | Ø | Ø | O | O | O | . | O |
O
: 当场通过
Ø
: 赛后通过
.
: 尚未通过
A Ascending Photo
unsolved
B Boss Battle
solved by chelly
chelly's solution
C Connect the Dots
upsolved by chelly
贪心一个一个做即可,维护可缩小的拱形
D Dunglish
solved by ABerror
ABerror's solution
E English Restaurant
upsolved by chelly
首先额外加入t个大小为g的桌子
然后来的每组人都有对应的位置坐下,他们坐在哪个桌子取决于他们的人数和前面的占位情况
容易发现最后肯定坐成几个连续段,每个连续段是独立的
我们可以先dp求出(f[i][j])表示只有i~j桌子坐了人,其它地方没坐人的方案数和权值和,转移枚举最后一个坐的位置
然后从前往后dp,(dp[i][j])表示前i个桌子坐了j组人的方案数和权值和
答案就是dp[n+t][t]表示的期望
注意算权值和的时候,如果某个位置下标>n,那么权值是0
F Factor-Free Tree
upsolved by chelly
首先对于每个位置预处理出(l_i,r_i)表示和第i位的数字互质的区间有多大,这一部分可以预处理目前每个质数最后一次出现的位置来求出
然后显然我们现在要构出一段区间[1,n],要选出一个位置i作为根,显然要(l_i<=1,r_i>=n),然后再不断分治下去
实际上,可以证明如果对于某个区间[l,r],有多个可选根,那么选任何一个都是无所谓的
现在考虑时间效率,我们每次对于一个区间[l,r]找一个位置i可以覆盖这个区间,暴力找的话时间复杂度是不对的
我们可以从两边往中间找,容易发现这相当于是逆过来的启发式合并(也叫启发式分治),所以时间复杂度是(O(nlogn))的
G Glyph Recognition
solved by ABerror
ABerror's solution
H High Score
solved by chelly&&ABerror
chelly's solution
I Installing Apps
solved by chelly
chelly's solution
J Juggling Troupe
unsolved
K Knockout Tournament
solved by ABerror&chelly
chelly's solution