枚举 A A A 里选的,那么需要找到最大的满足和 A i A_i Ai 的差不超过 D D D 的 B j B_j Bj,显然可以用二分实现。
3 × 1 0 5 3 \times 10^5 3×105 显然可以带 l o g log log,应该是 S T L STL STL。因为每次都要输出,所以考虑动态维护当前答案。最开始每个点都是孤立点, a n s = n ans = n ans=n。对于第一种操作,如果 u u u 或 v v v 本来没有连边,显然连了一条边后他们就不是孤立点了, a n s ans ans 要减掉他们中原来没有连边的点的数量。对于第二种操作,显然 v v v 必定会变成孤立点,但如果 v v v 原来就是孤立点, a n s ans ans 没有变化。对于和 v v v 相连的点,那么如果他们的邻接点的数量只有 1 1 1( v v v 这个点)显然删掉这条边后这个点也会变成孤立点, a n s − − ans -- ans−−。
所以用 s e t set set 记每个点的邻接点集,删除(第二个操作)和插入(第一个)都是 l o g log log 的。
逐个字符判断即可。
标记一下一对人是否不存在矛盾,然后枚举每一对人,计数他么之间存在矛盾的。
用 m a p map map 记录有资源的位置,按照题目模拟他的移动即可。开始因为没有再走过以后将当前位置的map变成0,W了一下。
设 d p i , 0 dp_{i, 0} dpi,0 表示打完前i个字符以后,caps灯熄灭。 d p i , 1 dp_{i, 1} dpi,1 表示打完前i个字符后,caps灯亮着。
对于 d p i , 0 dp_{i, 0} dpi,0 的转移,如果当前字符是大写,那么一种情况是上一步就有 c a p s caps caps,那么直接按 a a a 就行。或者上一步没有 c a p s caps caps,这一步打 s h i f t + a shift+a shift+a。如果是小写,一种情况是上一步没有 c a p s caps caps,直接打 a a a 就行。上一步有,那么先把它按掉,再打一个 a a a。 d p i , 1 dp_{i, 1} dpi,1 同理。
赛时没弄懂题意,没想到这么简单。一个点如果他连接了两个点以上( l e v e l 2 level2 level2 星图要特殊处理),那么他就是一个 l e v e l level level 为其连接的边数的星图。对于剩下的点,他们显然不构成更高的星图,三个点构成一个 l e v e l 2 level2 level2 的星图,所以剩下的点数除三就是 l e v e l 2 level2 level2 星图的数量。
按题意模拟即可。
要删的位数等于长度-3, s t r i n g string string 模拟一下就行了。
瞎了,没看范围。思路就是从点1一层层扫,只要能感染就感染,有点像 F l o o d F i l l Flood Fill FloodFill
N ≤ 2 × 1 0 5 N \leq 2 \times 10^5 N≤2×105,从 N N N 入手,二分每一个草莓在哪个蛋糕上,,用 m a p map map 记录一下每个蛋糕的数量,但是要考虑一下 0 , H , W 0, H, W 0,H,W,不知道为啥写寄了。
对于约束 x i , y i xi, yi xi,yi,显然只要连通了他们所属的连通块,就会使得这条约束不成立。所以对于询问 p i , q i pi, qi pi,qi,判断有没有触犯 K K K 个约束中的一条就行了,因为范围的缘故,用 m a p map map 记一下,对于 p i , q i pi, qi pi,qi 就查一下 m a p map map 就可以了。
取决于其两边 5 5 5 的倍数与其的差,模拟即可。
枚举他们间的位置,用数组记每一段的长度即可,注意判断 a > b a>b a>b 的情况,要 s w a p swap swap 一下。
首先要确定方块的位置,左上角是 ( m i n x , m i n y ) (minx,miny) (minx,miny),右下角是 ( m a x x , m a x y ) (maxx,maxy) (maxx,maxy) ,在方格内枚举一下那一个是.就行了
首先将睡觉的部分分为:整的睡觉时间和残缺的睡觉时间。首先可以用二分确定整的睡觉时间是第l个到第r个,这部分可以直接用前缀和解决。接着,对于残缺的,对于左右边界进行计算即可。开始因为前缀和写错了调了好久。
看到题目很容易想到多源 b f s bfs bfs(我就是这样写的)。但是会出现问题。例如:从一个管辖范围为 x x x 的守卫延伸出了一个点 u u u,后面一个管辖范围比他更大的守卫扫到了 u u u,但是前面已经被标记过了,就不会走,但是显然他很有可能穿过 u u u 继续延伸。因此,不希望出现有管辖范围小的在管辖范围大的前面延伸。所以每次都选管辖范围最大的就行了,可以用优先队列维护。
对于每周进行一次统计即可,模拟。
枚举i,j然后进行判断即可,注意 i , j i,j i,j 倒过来的情况,在这里W了一发。
赛时没读懂题意,待补。
对于每一组匹配的括号都可以用栈解决,就是个板子。接着对于每一对括号,显然他们之间的都不能是答案,所以标记一下,最后没有标记的就是答案中的字符。但是如果这样直接保利标记的话会t,所以可以想到差分,这样是 O ( 1 ) O(1) O(1) 的。
d p dp dp 题。设 d p i , 0 dp_{i, 0} dpi,0 表示 i i i 这个人的数字与 1 1 1 不同的方案数, d p i , 1 dp_{i, 1} dpi,1 反之。接下来考虑转移。
与i相邻的i-1要与i不同,那么显然有两种情况:
1. i − 1 i-1 i−1 和 1 1 1 相同
2. i − 1 i-1 i−1 和 1 1 1 不同且和i不同。
那么第一种显然i的选择还剩下 m − 1 m-1 m−1 种(0~ m − 1 m-1 m−1中除了 1 1 1 选的数字外的数)
第二种就是还剩下 m − 2 m-2 m−2 中选择( i i i 的)。
综上所述 d p i , 0 dp_{i, 0} dpi,0 = d p i − 1 , 1 × ( m − 1 ) + d p i − 1 , 0 × ( m − 2 ) dp_{i-1, 1} \times (m-1) + dp_{i-1, 0} \times (m-2) dpi−1,1×(m−1)+dpi−1,0×(m−2)
与 i i i 相邻的 i − 1 i-1 i−1 要与 i i i 不同,并且知道 i i i 与 1 1 1 相同,所以 i − 1 i-1 i−1 为了与 i i i 不同只能与 1 1 1 不同即 d p i − 1 , 0 dp_{i-1, 0} dpi−1,0
得 d p i , 1 = d p i − 1 , 0 dp_{i, 1} = dp_{i-1, 0} dpi,1=dpi−1,0
因为 n n n 与 1 1 1 相邻,所以 n n n 不能等于 1 1 1,即答案为 d p n , 0 dp_{n, 0} dpn,0
简单分析可得这条路径一定是一条同色,然后其余的都是不同色。所以可以先把所有不同色的边链接的点都合并,然后对于同色的边判断是否再一个集合里,如果在显然就形成一条路径。
扫一遍就行了,分别统计一下出现的次数即可。
把全空的天找出来然后模拟即可。
找出环中的一个点,然后不停跑后继点即可。
b f s bfs bfs。把能跑的全跑了就行,但是注意死循环的情况,两种:在一个点重复跑一个方向, x = > y x=>y x=>y: y y y 跑了 x x x 跑的方向的反方向,用 v i s i , j , 0 / 1 / 2 / 3 vis_{i, j, 0/1/2/3} visi,j,0/1/2/3 记录一下即可,这题不需要预处理上下左右跑出来的位置。
赛时想到思路了,但没时间写了。对于 ( i , j ) (i,j) (i,j) ,统计以 ( i , j (i,j (i,j )为右下角的正方形的数量(即最大的正方形的长度)。此时可以观察到单调性:开始的一段没有1的,然后剩下的就是有 1 1 1 的。二分一下就行了,把所有的这样二分出来的 l − 1 l-1 l−1 统计一下即可。