2019牛客暑期多校训练营(第三场)A Graph Games —— 分块思想

This way

题意:

给你一张图,每次有2种操作
1 l r 表示从第l条边到第r条边,如果有这条边就删掉,否则就加上
2 x y 表示问与点x直接相连的点集是否与y直接相连的点集相同

题解:

将输入的边编号然后分块,如果要反转的两个区间不在一个块内,那么暴力l块和暴力r块,块间使用flag标记是否翻转。很优秀的想法。

#include
using namespace std;
#define ll unsigned long long
const int N=2e5+5,M=505;
ll has[N],val[N],s[M][N];
int flag[M],lef[M],rig[M],blog[N],a[N],b[N];
int main()
{
    int t;
    scanf("%d",&t);
    srand(unsigned(time(NULL)));
    for(int i=1;i

你可能感兴趣的:(想法,分块)