这个round真的太简单了。。
A,B就不说了
C 题目说了合法的点不会超过10^5个
那么直接离散化,完了跑bfs就行了
离散化用map就行
#include #include #include #include #include #include #include #include #include
D . 注意题目中 按钮按下会导致的是 直接相邻的点变化,不是间接的
那么有种想法就是。
对于一个状态,如果其中有的点的值是跟a数组相应的值相同。
那么就去按这些点, 按过之后这些点肯定不会再出现跟a中相应的值相同了
用一个队列去搞,每次把需要按的点放到队列里,然后假如按完出现了新的需要按的点,就加入队列尾部
最后如果按完所有的点还是会出现与a中相应值相同的情况
就要输出-1了
为啥这么搞能对, 想一下就知道
对于一个状态,按非法点会导致其变成合法,如果周围有被按过的,那么这些被按过的一定是合法的,再变化也是合法的,
如果周围有的变化成了非法的,那么这些非法的一定还能按,那要是这么想的话,-1的情况实际是不存在的(看数据里好像也没有-1)
按的时候直接邻接表模拟就行了,因为每个点只能被按一次,所以每条边最多访问两次
#include #include #include #include #include #include #include #include #include
E 非常老的题, USACO某个题的变种
按位建线段树就是此题了
#include #include #include #include #include #include #include #include #include