要期末考了,只能间歇性的刷刷题了。。
Codeforces Round #219 (Div. 1)
A题:比赛的时候逗逼了,半个小时才整出来,还错了一发。。我是这样贪心的,首先排好序,最好的情况就是后一半把前一半都包起来了,那么,我们就分成两半,然后就从两半的大的那头开始,选择的策略是用大的包大的,总之就是要让大的那半的最大的都用上,如果大的都用不上,那么何谈小的呢。。
代码:https://code.csdn.net/snippets/111836
B题:题意是求一个矩阵里有多少个"good rectangle" ,":good rectangle"定义是这个矩阵里每个元素都是‘0’。首先暴力计数的做法是这样的,c[i][j][k][l]表示以(i,j)为左下角的元素,高度为k,右端最多延伸到l的“good rectangle”的个数有几个,所有的符合query的c[i][j][k][l]之和便答案,但是每次query的去暴力算得话,会TLE。那么就先进行预处理好了,其实就是不断的求前缀和就好了。
代码:https://code.csdn.net/snippets/111845
C题:先写个暴力的dp方程,然后你会发现转移其实是求定长区间的最值为题。那么好了,裸的单调队列嘛。。(不加滚动数组会MLE,是我写挫了吗?)
代码:https://code.csdn.net/snippets/111848
唉。。