Result:0+60+60+100=220
复盘:
上来先把所有题都看一遍,发现最后一道题是道签到题做过,30min直接切掉。
T4期望得分100。
然后开始写第二题,正解是meet in middle的算法,最开始想到的是从1开始dfs,统计答案。
仔细看一下数据范围+转换一下思路可以发现出题人认为d对于算法复杂度的影响很重要,因此可以
用2^d生成所有情况,然后dfs验证答案是否具有正确性。其实我还想尝试打一个剪枝,结果答案错了,emmm于是就把剪枝删了。
可以得出一个重要的思想:dfs不一定要用来统计答案,可以用更快的方法生成所有情况然后进行验证。
还有转化一下思路(改变一下枚举的量)就可以让暴力快很多(类似二分答案或者在答案区间较小时开桶去重)。
由于dfs验证答案的复杂度很假,而且很容易发现完全图且01交替出现时,dfs耗费的计算次数最多,且无法剪枝。
于是我就写了一个程序生成完全图验证。
顺便打上一个特判,能再过12分。
T2期望得分72。
最后两个小时全部用在了T3上,T3是一个很显然的最小生成树,把点权不重不漏地转化到边权上就可以跑最小生成树得答案了。
可以发现几个显然的贪心结论:(1)城市之间的处理顺序不影响答案(2)应当优先处理f值较大的城市。
然后乱搞直接跑出一个最小生成树,然后按照上面的贪心策略处理即可。
T3期望得分100。
写完以为是正解,考完发现贪心策略是错的,但是最后还是骗到了60分。
所以:
关于骗分:
即使贪心策略是假的也基本上都能骗到一部分分,因此如果没有思路时可以用暴力保住基础分+贪心骗剩下的分的策略
不能保证贪心的正确性时最好写个暴力验证,或者写个暴力保住基本分
其实完全枚举的暴力(暴力生成最小生成树,暴力枚举城市的处理顺序)会TLE,由于贪心策略保证了城市处理
顺序只有一种最优求法,因此可以暴力求最小生成树,贪心得出城市处理的代价,就能过前30分了。
因此找出几个正确的贪心策略可以优化暴力
关于正解:
可以发现,这道题的最大的难度在于转化思维,把一个看似复杂的问题转化成常见的基本模板然后
得到部分分或者全部分数
最后一点时间写一个T1的固输-1。
期望得分:0+72+100+100=272
T2挂了12,T3挂40,RNK3是我有史以来的最优战绩了(泪目了)。
关于开题顺序:
目前我的开题顺序是先读完所有的题,然后尽力把4个暴力都写上,最后一点时间用来试着写一些正解。
关于心态:
尽量混分就行了,心态不崩一定比心态爆炸的结果更好。
近期要做什么:
准备打完联赛AFO
复习模板(把板子都打一遍)。
整理知识点。
整理一些重要的错误&常见思想&常见题型。
尽量让自己心态不炸
还是希望能去国赛
到此为止