20230527做题笔记

T1

简单最短路

T2

$i$在$i+1$左边:$d_{i+1}<=d_i+D$

$i$在$i+1$右边:$d_{i}<=d_{i+1}+D$

每个点还要满足$d_{pos_i}<=d_{pos_{i+1}}-1$

差分约束即可

T3

差分约束

或者缩点+拓扑

T4

观察条件

发现有边相连的点 必然一正一负

再观察发现,连通块大小大于二的联通快个数大于二时

必然无解

所以考虑单一联通快的状况

分成正负点 二分图

假定左边点是正数

那左边点要满足,$a_i<=T-1$

右边点要满足,$a_j>=-T+1$

有边相连的点要满足,$a_i-a_j>=T$

对于单个点的独立块,把他们设为0,即可满足

再观察发现

答案对于$T$是单调的,那就直接假定$T=10^9$就行了

T5

前缀和

对于第一种限制

$s_{R_i}-s_{l_{i-1}}>=k$

第二种限制

$s_n-s_{R_j}+s_{L_{j-1}}>=k$

发现答案是单调的

于是二分$s_n$

第二种限制就变成

$s_{L_{j-1}}-s_{R_{j}}>=k-s_n$

差分约束

T6

对于相连的点

只需满足

$d_u>=d_v+1$

$d_u<=d_v+2$

差分约束

T7

贪心看能不能不要最高位

一位一位的check,设check到第k位

对相邻点,若(1<<k)&($A_u$^$A_v$)为1时

这条边就是不可选的

那每一位check的时候,把不能选的边删掉后,看连通块大小是否有k即可

T8

转换题意

枚举i,看对于每个物品,是否买第i件

加上题目限制

所以每个选择买的物品都是连续段

那题目就变成对于每个i,选择一个区间

分组背包,此时复杂度$O(n*n*k)$

再观察发现,每次选择区间的右端点总是可以做到让它单调递增

那对于每个i选择了一个右端点j,那其后必然会选$c*(c-1)/2$次$,c=j-i+1$

若选的个数已经比k大了,就break

发现此时复杂度变为 $O(n\sqrt n*k)$

T9

参考

T10

不会。。。

参照

posted @ 2023-05-27 09:26  hubingshan  阅读(20)  评论(0)    收藏  举报  来源