码迷,mamicode.com
首页 > 其他好文 > 详细

Global Round 2 题解

时间:2021-01-05 11:23:08      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ram   现在   复杂   表示   最小   线段树   wal   inline   贪心   

\(Global Round 2\)题解

\(zhanglichen\ 2021.1.1\)

\(A.Ilya\ and\ a\ Colorful\ Walk\)

给出一个数组,询问\(2\)个不相同的数字的最远距离。

\(Solution\)

做法有很多,刚开始来不及细想直接打了发线段树过的,\(A\)题上线段树,很有精神。

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

\(B.Alyona\ and\ a Narrow\ Fridge\)

给出一个高为\(h\),宽为\(2\)个冰箱,可以在冰箱里面放置宽为\(2\)的隔板。

给出\(n\)个酒瓶的高度,酒瓶可以放置在冰箱里,每个酒瓶的宽为\(1\)。但是一个酒瓶不能放在另一个酒瓶的上面,如果它们之间没有隔板。

现在询问一个最大的\(k\),使得编号\(1\)\(k\)的酒瓶都能放在冰箱里。

\(Solution\)

简单推导后可以发现,对于一个\(k\),可以把编号\(1\)\(k\)的酒瓶从大到小排序,\(2\)\(2\)个放,一定可以最优利用空间。考虑到答案具有单调性,可以二分\(k\)

时间复杂度\(O(n^2logn)\)

\(C.Ramesses\ and\ Corner\ Inversion\)

给出\(2\)\(n*m\)的矩阵\(a\)\(b\),单次修改可以选择\(a\)的一个小矩阵,把它的四个角取反。

但是不允许单点修改。

询问能否将\(a\)变成\(b\)

\(Solution\)

从上到下、从左到右依次修改即可。

时间复杂度\(O(n^2)\)

\(D.Frets\ On\ Fire\)

给出一个数组\(a\),每次询问\(l\)\(r\),每个\(a_i\)的范围是\(a_i+l\)\(a_i+r\)。询问整个数组覆盖的总范围长度。

\(Solution\)

首先对数组\(a\)排序并去重,可以确定范围的起点是\(a_1+l\),范围的终点是\(a_n+r\)

现在考虑整个范围哪些地方是空出来的。

当且仅当\(a_i+r<a_{i+1}+l\)的时候,\(a_i\)表示的范围和\(a_i+1\)表示的范围是不相交的。中间空出来的这段长度\(x=a_{i+1}-a_i-(r-l)\)

因此我们可以先计算出差分数组,然后对它进行排序。对每一个询问,先二分出差分数组上最小的大于\(r-l\)的位置\(p\),答案就是\(sum-c[p~n]+(r-l)*(n-p)\)

\(sum\)表示起点到终点的距离,\(c[p~n]\)表示差分数组位置\(p\)到位置\(n\)的元素和,这一步可以用前缀和\(O(1)\)得到。

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

\(E.Pavel\ and\ Triangles\)

给出一个数组\(a\)\(a_i\)表示长度为\(2_i\)的火柴数量。询问这些火柴最多能拼成几个三角形。

\(Solution\)

首先根据幂次的性质,三角形只可能是等边或等腰的。

一组样例:\(5,10\),可以得出优先组等腰三角形比等边更优的结论。

所以就贪心的先组等腰,再组等边即可。

时间复杂度\(O(n)\)

Global Round 2 题解

标签:ram   现在   复杂   表示   最小   线段树   wal   inline   贪心   

原文地址:https://www.cnblogs.com/zhanglichen/p/14221279.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!