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))