【BZOJ 4052】[Cerc2013]Magical GCD 暴力+gcd

有一个套路就是每一次加入一个数字区间的gcd肯定是不上升的,而每一次下降也会是至少下降为1/2,所以本质不同的gcd的个数并不会有太多,既然这样就可以枚举右端点然后暴力维护左端点有相同的gcd就删除l大的那一个然后就好。

#include
#include
#include
#include
#define maxn 100021
#define LL long long
using namespace std;
LL n,a[maxn],ans,cnt,T;
LL gcd(LL a,LL b){return !b ? a : gcd(b,a%b);}
struct G{
	LL l,x;
	bool operator<(const G& b)const {
		return x==b.x ? l


你可能感兴趣的:(ac之路,bzoj,数学,暴力,智商)