CF 题解乱写
2021.9.23
昨晚由于不明原因所以觉得今天请假军训去实验室划水
https://codeforces.com/gym/103202/problem/I
考虑把时针和分针每分钟转过的角度同时乘以 $ \frac{HM}{2\Pi } $
所以现在要统计0<=t<HM
t*(H-1) mod HM <=A 以及 t*(H-1) mod HM >=HM-A
发现t连续且取遍模数
设G=gcd(H-1,HM)
式子左右两边同时除以G
t*(H-1)/G mod HM/G<=A/G
每个循环有HM/G个,其中每个循环贡献A/G+1次(下取整)
共有G个循环
ans=G(A/G*2+1)
https://codeforces.com/gym/103202/problem/D
设r为1,b为0
记录一个前缀和sum
[l,r]对答案有贡献则说明sum[r]与sum[l-1]奇偶性不同
显然最大的答案即0,1尽量数量相同
100个方案且保证字典序考虑爆搜剪枝
https://codeforces.com/contest/1573/problem/E
每种颜色最多有20个位置,是个很好的性质
考虑一个长度为len序列最差可以通过len-1次操作变为同一颜色
基于上述
设dp[l][r]代表使[l,r]变为同一颜色可以节省的最多次数
两种转移
dp[l][r]=dp[l+1][r]
dp[l][r]=max(1+dp[l+1][k]+dp[k+1][r]) (a[l]=a[k])
即l,k颜色相同,只用一次操作把中间的变为a[l]
https://codeforces.com/contest/1573/problem/F
对于两个可以配对的点
他们一定有且只有一位不同
所以他们的1的数量的奇偶性不同
原图便成为了一个二分图
显然边的数量过多,只需要2nk条最长的边即可
卡常了?(确信
2021.9.24
通过不明手段套了考勤人员的近乎所以就逃训了
https://codeforces.com/gym/103104/problem/I
A,B为x,L,R为y转化为矩阵
即n*n矩阵ban掉一些点
求合法矩阵方案数
考虑用单调栈维护up[i][j]代表(i,j)向上最远可以延申几个
维护a单调递减的栈即可用新的a[i][j]和栈顶的位置更新答案
https://codeforces.com/gym/103104/problem/D
枚举值域区间[L,R]
在原序列上必须是小于等于两段的区间
可以O(1)更新答案
https://codeforces.com/gym/345274/problem/C
长度为n的序列
要求取出一或两段区间
要求区间并之后没有颜色重复
最大化并之后的长度
很显然的一个思路是枚举第一个区间
用set维护出现过的颜色对应的所有位置和两个位置之间的最大长度
问题在于这段长度对应的区间[L,R]可能自身存在重复的颜色
设dp[L][R]代表[L,R]最长的合法区间的长度
可以$O(n^2)$预处理出来
这样维护dp值而不是区间长度即可
https://codeforces.com/gym/345274/problem/G
按边权排序
每次合并两个连通块
建一个虚点
让两个根作为儿子
每次查询相当于查一个子树的众数
可以启发式合并解决
https://codeforces.com/gym/103202/problem/M
给n个长度为m的01字符串
问有多少个位置的集合S
满足至少有k对字符串在S中的位置不安全相同
m<=20
n<=1e5
设$f[S]$代表字符串中为$S$的个数
$g[S]=\sum_{x,y,x Xor y=S} f[x]*f[y]$
可以FWT做
$h[S]=\sum_{x,x And S!=0} g[x]$
$h[S]=n^2-\sum_{x,x And S==0}g[x]$
高维前缀和即可
一个无向图
n<=300
对于每个点求出包含这个点的最小环的长度
直接跑最短路,然后枚举两个点且连边会有一个问题就是无法解决经过重边
考虑对于每个点建出一棵最短路树
一个合法的环一定是树上两个lca是根的点到根的距离和加上两点之间的边