bzoj2584】的更多相关文章

xy方向分开考虑 用扫描线处理出拓扑序,第二问直接回答拓扑序, 第一问: 将操作倒过来,变成加入线段,用线段树维护区间拓扑序的最值 #include<cstdio> #include<algorithm> #include<set> #define N 100010 using namespace std; inline void read(int&a){char c;bool f=a=0;while(!((((c=getchar())>='0')&…
这是bzoj上AC的第700题,一定要是一道神题!!! 当初分组赛的时候讲过拖到现在才写…… 我们考虑把垂直方向移动和水平方向移动分开来考虑,不合法的轮数取二者最小 假设考虑的是垂直方向移动,障碍其实就是类似与x线段一定在y线段之前移动的意思 不难想到拓扑图,如果我们求出了一个向上移动的拓扑图, 不难发现只向一个方向移动一定有解,那么合法的方案就是拓扑排序 而求不合法的操作呢?我们考虑把从前往后删除线段变成从后往前添加线段, 如果添加了一个向上移动的线段i,这个线段x坐标范围内出现一条拓扑排序在…