2021/9/10模拟赛总结

时间安排

6 : 00 − 6 : 20 6:00-6:20 6:00−6:20 把四道题的题面全读了一遍,初步确定写题顺序为1,4,3,2。
6 : 20 − 6 : 40 6:20-6:40 6:20−6:40 我手画了几个菱形的例子,由于我画的菱形太小,导致我以为菱形就是一个正方形加上周围的四个中点,所以我的思路是先用 O ( n 2   l o g   n ) O(n^2\,log\,n) O(n2logn) 求出 a n s [ i ] [ j ] ans[i][j] ans[i][j] 表示 ( i , j ) (i,j) (i,j) 所能拓展到的最大的长度,考虑对于两个菱形相交的情况,中间的“鞍部”一定比周围的要小,所以再用 O ( n 2 ) O(n^2) O(n2) 所有拓展的最中心的横纵坐标,存入vec,接着考虑对于所有的中心,其答案的时间必然是最小的长度(记为 L 0 L_0 L0​ ),因为对于长度(记为 L 1 L_1 L1​ )大于的最小值的情况,一定可以在初始的时候摆出 L 1 − L 0 L_1-L_0 L1​−L0​ 的菱形,这样所有的菱形就可以在相同的时间下完成图形。
6 : 40 − 7 : 20 6:40-7:20 6:40−7:20 写T1的代码,最难写的部分在于如何拓展,刚开始我用了一个二维前缀和,复杂度为 O ( n 2 ∗ 玄 学 ) O(n^2*玄学) O(n2∗玄学),后来又加了一个二分长度,复杂度 O ( n 2   l o g   n ) O(n^2\,log\,n) O(n2logn),样例过了,就去看T4了。
7 : 20 − 7 : 30 7:20-7:30 7:20−7:30 把 m = 0 m=0 m=0 的情况写了。
7 : 30 − 8 : 00 7:30-8:00 7:30−8:00 我以为题目的左上右上指的是左上右上一格,所以对于 m = 1 m=1 m=1 的情况,我的想法是四周全放,对于中间的正方形隔一行放一行,特别的,若中间的正方形边长为奇数,那么最后一行也能放。对于 m = 4 m=4 m=4 的情况就贪心地放,用 v i s [ i ] [ j ] vis[i][j] vis[i][j] 表示 ( i , j ) (i,j) (i,j) 能否放置。
8 : 00 − 8 : 20 8:00-8:20 8:00−8:20 我用6进制状态压缩写了20分。
8 : 20 − 9 : 00 8:20-9:00 8:20−9:00 一直在考虑其他的部分分,但是也什么思路。
9 : 00 − 9 : 30 9:00-9:30 9:00−9:30 又看了看T2,推了推性质,我以为是一个树形dp,但是不会合并子树信息。
9 : 30 − 9 : 45 9:30-9:45 9:30−9:45 推T3。

上一篇:python:主动乘法删选法,45秒求定 1亿内素数


下一篇:Flutter-防京东商城项目-订单列表、订单详情页面布局-45