欢迎光临散文网 会员登陆 & 注册

CF竞赛题目讲解_CF1783D(散列式DP + 滚动数组)

2023-01-16 10:06 作者:Clayton_Zhou  | 我要投稿


AC代码

 https://codeforces.com/contest/1783/submission/189273868

题意:

给您一个由n个整数组成的数组a。

您必须在此数组上依次执行n−2个操作:

1.在第一次操作中,将a2加到a1上,然后从a3减去a2,

或者将a2加到a3上并从a1中减去a2;

2.在第二次操作中,将a3加到a2上,然后从a4减去a3

或者将a3与a4相加并从a2减去a3;

...

在最后一次操作中,您可以将a_{n−1}添加到a_{n−2}

并从a_{n}中减去a_{n−1},或将a_{n−1}添加到a_{n}中并从从a_{n−2}减去a_{n−1}.

因此,在第i次操作中,将a_{i+1}的值添加到它的一个邻居,然后从另一个邻居中减去它。


例如,如果您有数组[1,2,3,4,5],可能的操作序列之一是:

从a3中减去2并将其加到a1上,因此数组变为  [3,2,1,4,5];

从a2中减去1并将其添加到a4中,因此数组变为[3,1,1,5,5];

从a3减去5并将其加到a5,这样数组就变成[3,1,−4,5,10].

因此,得到的数组是[3,1,−4,5,10]。 

如果可以通过对a执行上述操作序列获得数组,则该数组是可达。

您必须计算可达数组的数量,并取模998244353的余数

 

题解:

散列式DP + 滚动数组


CF竞赛题目讲解_CF1783D(散列式DP + 滚动数组)的评论 (共 条)

分享到微博请遵守国家法律