.h
结尾的、删命名空间、用typedef
(这个应该不用说了;vector<int>g[N];
改为int g[N][N],gtot[N];
。for(int v:g[u])
或for(it v=g[u].bg(); ...)
改为for(int i=1;i<=gtot[u];++i) {v=g[u][i]; ...}
。g[u].pb(v)
改为g[u][++gtot[u]]=v
。build(int u=1,int l=1,int r=n)
就不行。void(w[u]=_w)
之类的不能用。另外,
const int N=10003;
ll c[N];
应改为
#defing N 10003
ll c[N];
"%I32d"
,Linux 是"%d"
,本地调试可以定义
#ifdef __linux__
#define fmt "%d"
#else
#define fmt "%I32d"
#endif
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
这时如果调用max(query(l,r,...),query(l,r,...))
将导致其中一个query
被调用两次。#pragma GCC optimize("Ofast")
开优化。