可能是因为T2很简单,T1、T3难到所有人都只打了暴力,所以区分度很小。总而言之,这次感觉还不错,起码该拿的分都拿到了。但是,也感到被题目虐哭的深深无力感……
终于有个好看一点的rank3了orz……
T1勾股数。考试时我的做法就是暴力。先做个预处理,将平方数标记一下。然后枚举一个a,嵌套枚举一个b, 检查是否存在a^2+b^2这个平方数。由于数比较大,直接标记会爆,我还用上了哈希,所幸没打错……
考试时想过降维,但是死活不知去掉一重for,如何选择?想过预处理,先将无用的c给去掉,毕竟自己的平方等于两数平方和的数是很少的。然并卵,还是两重for循环。
于是,到了最后,只拿到了暴力的40分。我尽力了。
T2赛马。觉得T1、T3实在是生无可恋,于是试试这题。自己出几组小数据,手动分析了一下,发现其实并不难。第一次交,0分?我又想了一遍,确定没错,感到怀疑人生。于是将代码从头到尾看了一遍。等等,sizeof? 其实是没加cstring库的问题,导致CE。再交,看到了10分。
(其实,这种错误也不是第一次犯了。没加库,没用printf这些低级错误,犯了不值。以后写代码模板时,就要养成这样的习惯,不应该在错了之后再改。真正的OI比赛,没有改的机会!)
当时写了之后不放心,还反复验证了几遍,改了点细节。事实证明细心为上是正确的,我被粗心坑过太多次了。虽说题目很水,但还是有好几个70的,我能够AC倍感欣慰。
T3数谜。如果没有m的限制,用组合数学很轻易就能求得总方案数。但问题是,m的限制这个问题非常的棘手。我当时想,假如想要判断是否合法,就要知道具体的数值,这样的时间复杂度就是n!(n为位数),显然只有40分。
能不能边走边判断,剪枝?似乎不行。能不能用转化思想,总方案数减去非m的倍数的方案数?这个也需要知道具体数值,好像也不行。能不能DP?可惜我不知道状态该怎么记。
于是T3卒。考试之后,老师说正解是DP,让我们想想状态怎么记。果然,又是DP太菜的问题。我在DP深海中会砥砺前行,相信总有一天能够看到胜利的曙光~