fdu-oh
RedLycoris · · 科技·工程
T1
题目大意:
给你一个长度为 fudan 组成的子序列的长度。
考虑使用线段树。每个节点存
T2
一个朴素的想法是先二分答案(毕竟要求下取整),然后对所有
令
转移大概是这样:
for i in [1,n]:
for j in [1,k]:
for f in [i-r,i-l]:
if sum[i]>=sum[f]: //sum是前缀和,即[f+1,i]这段的和>=0
dp[i][j]=min(dp[i][j],dp[f][j-1])
dp[i][j]=min(dp[i][j],dp[f][j-1])+1
这边加入一个线段树优化转移可以加速dp,但是复杂度仍然超标。
发现这种形式下每次转移
对于直接+1的情况,我们直接维护
考虑不+1的情况。现在的
T3
首先可以看出每次跳之后,行或者列的奇偶性不变。
于是大胆猜测对于一行(或一列)有多个弹弓的情况,只需要考虑率他们两两的差的gcd的2倍即可。
T4
观察到一三象限只会和二四象限碰撞。直接暴力连边跑最小割。
对于判断两辆车是否相撞,可以先把他们通过绕原点旋转90度转到第1、2象限,然后枚举那辆车先通过。