csp-s模拟58
T1:
分解出每个数的因数统计一下就行了,可以用hash表
T2:
按时间排序后做背包
发现单价值域太大没办法背包,于是将状态反转,改为对价值背包
背包的定义就变为获得i的价值所需的最小代价
回答时在背包数组上二分一下就行了
T3:
好题啊!
考虑将车速看作时间,边的l,r看作这条边可以通行的时间
然后最小到大枚举时间,求出当前可行的边所构成的森林中最大的直径
然而实际上并不是枚举
发现每个边影响的范围是一个区间,所以可以线段树分治,用可回退的并查集来维护树的直径