9.21考试总结(填坑)
分组
少分析了一种情况,一直以为填坑数和挖坑数一起算。实际上只需要将填坑和挖坑取最大值。原理就是直接把多出来的部分填入缺少的部分。然后比较到底是多出的部分多还是比要求范围少的部分多。但是有一种情况。所有数字加起来的总和比要求最低值还少或者比要求范围最高值还高就不能满足题目要求。
核心代码,证明一下自己码过,233
for (int i=1; i<=n; ++i)
{
if (a[i] < l)
ans_l += (l - a[i]);
if (a[i] > r)
ans_r += (a[i] - r);
}
阶乘
其实是数学题目的样子。更改过的范围实在是鬼畜\(10^2009\)必须要上各种神奇的算法。浴谷上小范围的数据比起来简直就是随便过了。
因为实在没有什么想法。再加上本人的数学成绩一直不是很友好。所以就在网上找了一下思路:
对于n!,只要把n换为5k+t的形式,2^k和t!都容易算。那k!怎么算?也简单。把k同样换为5k'+t'的形式,不断把待求值缩小,直到小于5,然后直接算就行了。而且“去零五余数”与“最后一个非零数字”是对应的(前提:最后一个非零数字是偶数,这只要n>1即可)
以上来着新浪
虽然还是有些看不懂数学不好还真是不好意思了,但是至少获得了缩小数据范围的方法。大概根据这个就可以得到正解了吧
这个题目还在做,几天后昨晚了再放代码吧
锁
还没改完,这个下次再说
赛马
这道题可以暴力,直接将最开始的马一一对比就可以了,直接暴力比对。在不断更新最大值。唯一要处理的就是类似环一样的东西。因为每一匹马都要参赛,所以后面多出来的马都要跟前面没有比赛的马对齐。
其实每一套考试的题目都有易做的题目,但是还是有很多没有拿到分数,一直需要反省。考试的时候到底哪里没有想出来,是什么地方想复杂了都值得研究一下。正解的分数不是所有人都能直接敲出来,至少我这种蒟蒻还不行。所以没有必要一下就追求正解。先从最暴力的开始,看能不能通过暴力找到什么规律,再去逼近正确思路。考试反思隔了几天不是很好写。以后还是考完改完就立马写题解吧。这点还是要强烈要求一下自己,不然写出来自己都是一脸懵逼【挠头】
原文地址:https://www.cnblogs.com/rendex/p/9691381.html
时间: 2024-11-06 03:31:45