[关闭]
@Yeasion-Nein 2018-10-06T16:05:18.000000Z 字数 1592 阅读 633

10.5 Morning

Test


个城市围成一圈。第一次到达第个城市时,得到块钱(可能为负数),从城市到达下一个城市时(只能从或者从),需要花费元。一开始元钱,并且从任意一个城市出发沿环走一圈并回到这个城市,要求旅途过程中保证钱非负。问从多少个点出发是可行的。

首先我们知道这个并没有什么卵用,由于非负,所以它完全是可以和合并的。那么首先我们可以设。然后复制一下N把圈变成一行,
第一种方法:直接暴力模拟,从每一个i开始跑一圈。复杂可以过%

第二种方法:我们考虑对于一个,以为起点造出来一个前缀和,那么我们需要考虑的就是所有的前缀和中最小的那个,看它加上是不是小于零。但是比较郁闷的就是这个前缀和的起点并不是固定的。因为这里你设的起点是i。那么我们要做的就是做一个把之后的前缀和做一个区间修改。那么考虑用线段树。时间复杂度为可以掉。

还是第二种方法前缀和,但是我们考虑到一个傻逼的事实。这个用线段树实现的区间修改给我的答案决定于哪个有任何作用么?...没有。所以果断把刚才最小的前缀和修改掉下一个进行判断就完了。

:

有一个的棋盘。它恰好有颗黑棋和颗白棋,将其全部放到棋盘上,有这几个要求:
每个位置最多放一个棋
每行每列都恰好有颗黑棋
每行每列都恰好有颗白棋
求方案数 % 的大小。
对于%的数据
对于%的数据
对于%的数据
对于%的数据
对于%的数据
对于%的数据

首先,你需要一个(滑稽)。全分的做法太难了,这里只给出一个公式:



看,是不是很简单(逃
我们一点一点来,先争取拿到一点部分分再说。我们知道第的答案位数小于,可以高精度把项的答案算出来再对P取模。
我们在知道棋子得一行一行放的情况下,先进行最暴力的Dp。先不计代价地设一个然后后面跟着一堆状态。我们进行行的枚举的时候,是强制一行有一个白棋,两个黑棋的,所以我们只要考虑列的情况。然后我们知道所有的情况是这样的:
0白
0白
0白
1白
1白
1白
一共有六种情况,所以我们只要考虑六种情况各出现了多少次就可以了,所以我们得出来了一个维的。时间复杂度为然后我们考虑消维。
我们知道对于白和白,是分别独立的。我们可以知道:
那么我们知道则可以消掉f的状态。变到
我们知道一行放了个白棋,我们枚举到第行的时候自然有个白棋。所以 所以我们又消掉了一维,然后
我们还知道对于黑棋现在一共有
所以 然后我们变成了的复杂度。这样是可以过掉的数据,大概是可以得%的分。
而至于满分做法。
...
...
去他妈的吧。

:

你现在有个数,要求找出两端互不相交的区间,使得不存在任何一个数在这两段区间中总共出现的次数超过1次。求最大化这个区间长度。

并查集树 +
...
...
,去他妈的吧。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注