T1.合并序列(minval)

    给出长为 n的AB两个序列求两两相加中最小的n个。

据说有证明(在蓝书上,优先队列部分)先把A[1~n]+b[1]入队,然后每取一个a[x]+b[y]就把a[x]+b[y+1]入队,取n个即可。

 

 

T2.抓犯人(catch)

给出T组数据,每组n个点m条边判断是否为二分图。

用dfs染色判断,但是直接染色可能会被卡掉,所以要剪枝。如果采用bfs判断会好一些。。。。其实呢,用can[i][j]表示第i个城市能否在j(0或1,表示奇数偶数)。然后只要判断每个城市的can[][0]或can[][1] 是否都为1即可(即奇数天或偶数天能否到达所有城市)。

 

T3.收费站(cost)

N个点m条边每个点有点权f[i],每条边有边权c[i],要求一条u到v的路径使得边权和不超过s,点权最大值最小。

显然先二分答案,然后对两端点都不超过mid的边进行spfa。(注意:先对最大点权bfs,若无法到达v则先输出-1,免得后面重复判断)然而直接spfa只有90分,所以需要用SLF优化(LLL太难写)。优先队列双向队列问题都不大。

posted on 2016-11-17 15:15  啊?  阅读(97)  评论(0编辑  收藏  举报