CH Round #54 - Streaming #5 (NOIP模拟赛Day1)(被虐瞎)

http://ch.ezoj.tk/contest/CH%20Round%20%2354%20-%20Streaming%20%235%20%28NOIP%E6%A8%A1%E6%8B%9F%E8%B5%9BDay1%29

果然太蒟蒻。t2和t3都是骗分滚粗。。

t2各种逗啊,自己硬是只mod一个不mod两个,,,sad。

t3骗分过程中也是各种逗啊,虽然改骗的良心都骗了orz。。

rp会不会暴跌啊。

另无限orzZYF神犇,千古神犇zyf,只是手抖丢了t1十分,orz。。千古神犇zyf,rank2orzzzzz,290分orzzzzzz

 

t1:

sb题,只不过注意些细节罢了(表示后边检查的时候发现好多漏洞啊,,,数组开小、‘2’没特判,还好改了过来)

 

t2:免农

免(mian)农,233

显然只需要找兔子数是否在某个时刻刚好为modk=1后,后边的情况直接快速幂做掉。

显然偶数直接快速幂做掉。

然后我sb的没有搞好modk=1这里,我没有开两个modk和modMD来搞啊QAQ

注意对p取模一个数和对k取模一个数

 

t3:高维网络

神题不会做啊。。。看到有部分分且十分良心orz

一维的直接特判有没有p即可。。。

二维的直接普通递推即可(当a>1000后且p==0可以用二项式定理求组合数然后多骗了5分QAQ)

三维的也是直接递推即可(没时间思考组合骗分了。。。。)

65分骗分:

 

噗,没想到p=0的时候可以直接排列写啊。。orz zyf

首先到达一个任意点a{a1, a2,...,ad},所需的步数一定是sum{ai},而且在走的过程中,x1+1的步数一定是a1次,所以我们将一个坐标看做一类,然后每一维坐标排列起来就是从0点走向点a的路径,例如

x1x1x2x3的序列就代表到达了点a{2, 1, 1},x1x2x1x3也是同样的到达这个点。

so。。。那么可以知道这是多重排列,总数我就不说了,公式难打。。

这样可以求出p=0的时候的路径数

 

正解:

由上面的排列可得任意两个点之间的路径数量。

然后可以根据乘法原理和加法原理加加减减了。

ans[i]表示0到i不经过路障的路径数量,那么ans[i]=path[0][i]-sum(path[k][i]*ans[k]),path是两个点之间的无视路障的路径数量

然后用队列搞一下就行了。

这里要注意队列的出入顺序,只有当这个点为终点的边全都走过了才能加入这个点。

 

posted @   iwtwiioi  阅读(378)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示