DAY1
T1:一看题目好长,数据范围写了一整版,感觉很厉害的样子。细心模拟即可。
T2:此题大坑。
想了40分钟,有一点想法,把路径在起始点的LCA处切断,即转化为两条路径,然后记录用于更新答案的信息,不过每棵子树的信息都要重算一遍,以前做过一道题,将重儿子的信息保存下来,在算当前结点的答案时就不要再遍历重儿子了,时间复杂度nlogn。然而感觉过程过于复杂,细节也很多,估计想错了,一看数据发现骗分可达80,还是老老实实写骗分吧(然而骗分都写挂了)。。。
T3: 10:20时写完了 T2 60分的骗分,一看第三题暴力分巨多,良心出题人。。。刚准备打暴力,感觉DP可做,令dp[i][j][0/1]表示前i节课,提交j次申请,0/1表示第i节课是否提交申请,方程略长但并不是很难推,11点过了看似强度还行的大样例,回头继续骗T2的分。。。
DAY2
T1:用杨辉三角,一遍递推一边对k取模,预处理即可。然而并没有想到,写了个冗长的质因数分解,幸好还没有写挂,以后看到题还是要多想想额。。。
T2:看了题,以为是优先队列裸题,一看数据范围,瞬间变成mengbier,果断STL骗了60分。
T3:看了数据范围,感觉就是DFS,然而显然会T,发现状压比较好做,用0/1存猪是否被打死,枚举两只猪就可以构造出一条抛物线,就可以得到很多状态,表示这条抛物线能打死的猪,然后dp要从某一个状态推其他状态,复杂度O(T*n^2*2^n),然而考完后想起抛物线的一个判断写错了,只能随缘了。。。
总结:
1)感觉还是老写挂,各种题还是自己实现一下,增强代码能力
2)做题时多想想,尽量降低编程难度,用尽量简单的算法解决问题,降低调试难度
3)打代码不要只图快,写之前想清楚,把思路理清楚写出来正确率才高,反而会节省更多的用于调试的时间