csp-s模拟98

T1:
  大模拟……
  考试时就想到了,打了两个多小时没调出来……
  具体策略很平时玩这个东西的策略是一样的
  先将右下\((n-2,n-2)\)的格子填好,然后将最左的两列和最上的两行填好,最后旋转剩下的\(2*2\)的格子来判断无解
  (模就完了)
 
T2:
  有点像某道奶牛题
  思路都是一样的,发现如果正着添加限制/贡献很难搞,那就倒着加就好了:
  对那道题来说就是将奶牛塞到下面,对这道题来说就是新打开的灯看作是更早时间打开的
  然后简单dp就行了
 
T3:
  神仙题
  第一次见这么难的最短路题……
  考虑若不存在确定没有学会毒瘤算法的同学,那么每两个同学一定越早吃越好
  而如果有怎么办?

  考虑处理一个\(lim_i\)表示i同学最早学会算法的时间
  那么边界就是对于确定不会算法的同学x满足\(lim_x=\infty\)
  考虑这个限制是可以传递的,即:若y到x有边i,且\(lim_y>r\)\(lim_x=max\{ l_i+1 \}\)
  跑个最长路就能把lim处理出来

  之后计算\(ans_i\)表示i同学学会算法的时间,还是贪心的让学会的时间最早,但不能早过\(lim_i\)
  转移为:若y到x有边i,则\(ans_x=min\{ max(ans_y,l_i,lim_x) \}\)

  最后若确定不能学会算法的同学和1同学吃过饭,或确定学会算法的同学的ans没有被更新,则无解
  若有解,那么讨论一下每条边两端点的情况:
  若有一端没有学会算法,那就在l时刻吃饭
  否则当\(max(ans_x,ans_y)>r\)时随便输出,当\(max(ans_x,ans_y) \leq r\)时,输出\(max(ans_x,ans_y,l)\)

posted @ 2019-11-12 11:19  G_keng  阅读(124)  评论(0编辑  收藏  举报