NOIP2016普及组正式赛

来源:互联网 发布:stc-isp软件下载 编辑:程序博客网 时间:2024/06/08 18:59

T1:直接计算


T2:枚举法


T3:因为一共得人数不超过100000,所以我们可以用一个队列存储来访人得国籍,然后记录下每一船的尾指针。在求一个ans时,把所有的与当前时间相差86400秒以上的船去掉,当前船加上就行了。


T4:这题要先化简公式后可得出:

设CD之间的距离为i,则AB之间的距离为2i,BC之间的距离为6i+k(k>0)。

85分做法:

首先存储每一个魔法值有多少个魔法道具,设为w[i]。

然后枚举ABC三个数的位置,算出D,判断是否符合条件,符合则保存下来,保存方法如下:

ans[A][1]+=(w[B]*w[C]*w[D]);

ans[B][2]+=(w[A]*w[C]*w[D]);

以此类推。

100做法:

我们只需枚举i,A,就可以求出ans[A],ans[B]。我们只要知道i和A,就可以求出B,那么C,D有多少种可能呢?只是我们后缀和解决。设s[l]表示但长度为i时l到n之间CD的对数,则s[l]=s[l+1]+w[l]*w[l+i]。那我们设A的值为j,则ans[A][1]+=(w[B]*s[j+i*8+1])。因为C的最小值是A+i*8+1。ans[B]+=(w[A]*s[j+i*8+1])。

求CD的做法跟AB一样,只不过要用前缀和。

0 0
原创粉丝点击