一开始你在原点,有n棵许愿树,你每次可以向左,右,左上,右上,上到达最近的一棵许愿树许愿。问最多能到达多少许愿树,输出方案。在所有可能的路径中,保留所有非左右的边,问最小路径覆盖所有的边。n <= 50000, y坐标相同的点不超过1000
首先按y坐标排序,使用map进行转移,同层的点一起转移。
建出第三问的图后,考虑一个点的入度和出度,如果路径不可相交,答案就是Σmax(in[x] - out[x], 0),考虑增建平行边,就可以网络流了。
/**************************************************************
Problem: 4200
User: hzt1
Language: C++
Result: Accepted
Time:2696 ms
Memory:222476 kb
****************************************************************/
#include
#include
#include
#include
#include
#include