csp-s模拟58

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

posted @ 2019-11-05 08:27  G_keng  阅读(114)  评论(0编辑  收藏  举报