宝贵经验:
写题的时候想出时间正确的方法后千万注意计算空间,能不用数组的地方就不要用,否则可能会像我一样:
\(35\to 15\to 0\)
赛前
小 L 说比上次简单。
赛时
T1 一开始没有思路,但是注意到了两个关键条件:
询问数 \(\le 300\)
\(n,m\le 10^9\)
然后想到正解绝对不是去直接修改。
注意到询问是单点,容易想到只考虑这个点的移动情况。想到这儿其实已经结束了,所以开始写代码。
写完以后发现挂了,然后意识到有很多细节错误。开始调代码,终于在 2h 左右过掉了大样例。
T2 最开始发现条件很奇怪,如果设 \(dp_{i,j}\) 表示从 \((1,1)\) 到 \((i,j)\) 的答案,稍微转化一下发现 \(dp_{i,j}\) 可以从 \(dp_{i-1,j},~dp_{i,j-1},~dp_{i-1,j-1}\) 转移过来,得到一个类似二位前缀和的 DP。
然后写完以后轻松过掉样例。发现 \(n,m\le 10^4\) 的点也可以跑,于是就写了个 long long dp[10000][1000]
上去。
改完以后有了 35pts(
T3 大部分人的分数都一样,枚举全排列以后暴力 \(mn\) 找答案,小 H 神奇做法得到 20pts%%%。
赛时我时间复杂度计算错误,一位全排列是 \(\mathcal{O}(2^n)\) 的,并且猜出了测试点算法(bushi。
猜完以后我先写了暴力,然后去想我猜的那个做法的实现(竟然还发现了很多类似无后效性的性质),想了半天想不出来,就弃了去搞 T2。
其实看到这个 \(n,m\le 80\) 的数据范围就应该意识到正解大概是一个 \(\mathcal{O}(n^4\sim n^5)\) 的 DP,讲题的时候发现果然是,但是状态很神奇,于是想起来 取代_ 之前说过小 L AK了 JOI 的 DP 场,所以就联系起来了%%%
T4 赛时感觉题面太长了就没看,赛后的讲解比较有思维难度,需要再去好好看看。
赛后
T2 赛后意识到空间会炸。问了 HDS 发现果然会炸。心存侥幸问了小 L 评测方式,希望是按照控件使用计算空间,但是回应是按照开的大小,然后没希望了。
改成 vector
以后有了 15pts,然后突然意识到我最后只需要求 \(dp_{n,m}\),所以根本不需要数组,直接用一个变量统计答案就可以了。