ABC225
ABC225
A
签到
B
签到
C
有一个\(10^{100}*7\)的矩阵,第\(i,j\)项是\((i-1)*7+j\)
给定一个\(n*m\)的矩阵\(B\),判断矩阵\(B\)是否是\(A\)的某个部分
解:
每个数字比左边大一,比上边大七
模\(7\)等于零的数字一定在一行末尾
D
链表模拟一下
E
平面上给定一些\(7\),占据\((x_i-1,y_i),(x_i,y_i),(x_i,y_i-1)\),求最少删除几个\(7\)让从原点看去每个\(7\)都互不遮挡
解:
把每个七的斜率范围求出来,做经典的最多线段不相交
\(sort\)中\(cmp\)或$opertaor $中的判断条件绝对不能加等于号
F
给一堆字符串,选\(k\)个拼起来,求字典序最小的结果
解:
先经典地按\(a+b<b+a\)排序
为什么直接排序取前\(k\)个不对?
比如:\(zaa\)和\(z\),排序后\(zaa\)应该在前,但如果\(k\)是\(1\),只取\(z\)就对了
然后对字典序这种前面优先级高于后面的操作,我们应该倒着\(dp\),以保证最后更新的位置是最优的
设\(dp[i][j]\)表示到\(i\)为止,取了\(k\)个字符的最优结果
如果是顺序更新,上面的例子仍然会得到\(zaa\)的结果
G
给定\(n*m\)的网格,对于一个格点\((i,j)\),画一个叉可以得到\(A_{i,j}\),每画一笔付出\(C\),求最大收益
解:
这居然是网络流……
\(dp\)写了一下非常不可做
因为题目对贡献有加有减,所以尝试把贡献全部归约为减
先把所有的位置的贡献加起来
对于一个位置,要么不要它的贡献,要么付出划\(X\)的代价
建一个最小割模型
先从源点向所有位置连边\((st,id_{i,j},a_{i,j})\)
如果一个位置左上角和右上角还有位置,向左上和右上连边\((a_{i,j},左/右上角,c)\)
否则向汇点连边\((a_{i,j},ed,c)\)
图中的最小割就是应该减掉的贡献