7 6 NOI模擬賽 燈 根號分治

2022-02-04 17:45:00 字數 2470 閱讀 9316

比較容易想的題目~

容易發現 點亮一種顏色的貢獻=新增燈的數量-已經存在的邊的條數。

用線段樹維護並不容易。暴力的話複雜度是\(q\cdot n\)的。

考慮根號分治 只單純考慮度數考慮大於b的點的話 需要思考一下貢獻如何快速求出。

這類點顯然只有\(\frac\)個 統計大於對大於的點的話複雜度o(b).

考慮大於和小於的貢獻發現不能暴力了 考慮這個小於其實是之前的小於的點對當前的貢獻。

那麼當前的小於可以提前對這些點的貢獻進行統計就可以o(1)了。

那麼此時\(b\cdot q+\frac\cdot q\)當b取\(\sqrt\)時最優。

code

//#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long

#define db double

#define inf 10000000000000010ll

#define ldb long double

#define pb push_back

#define put_(x) printf("%d ",x);

#define get(x) x=read()

#define gt(x) scanf("%d",&x)

#define gi(x) scanf("%lf",&x)

#define put(x) printf("%d\n",x)

#define putl(x) printf("%lld\n",x)

#define gc(a) scanf("%s",a+1)

#define rep(p,n,i) for(re int i=p;i<=n;++i)

#define go(x) for(int i=lin[x],tn=ver[i];i;tn=ver[i=nex[i]])

#define fep(n,p,i) for(re int i=n;i>=p;--i)

#define vep(p,n,i) for(re int i=p;i#define mk make_pair

#define re register

#define p 1000000007

#define gf(x) scanf("%lf",&x)

#define pf(x) ((x)*(x))

#define uint unsigned long long

#define ui unsigned

#define eps 1e-8

#define sq sqrt

#define s second

#define f first

#define mod 1000000007

using namespace std;

char buf[1<<15],*fs,*ft;

inline char getc()

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}const int maxn=100010,maxn=410;

int b,n,q,m,ans,id,len;

int out[maxn],c[maxn],a[maxn],pos[maxn],vis[maxn];

int lin[maxn],ver[maxn<<1],nex[maxn<<1],e[maxn<<1];

int res[maxn],s[maxn],b[maxn][maxn];

maph[maxn];

map::iterator it;

inline void add(int x,int y,int z)

int main()

} rep(1,m,i)for(it=h[i].begin();it!=h[i].end();++it)add(i,(*it).f,(*it).s);

rep(1,m,i)if(out[i]>b)pos[i]=++id,s[id]=i;

rep(1,m,j)go(j)if(pos[tn])b[j][pos[tn]]=e[i];

//res[x]表示此時有用的所有輕點對於重點的貢獻.

rep(1,q,t)

else//暴力.sqrt(m)

}} else

else

}} vis[x]^=1;put(ans);

} return 0;

}

NOI2016 7 13模擬賽總結

今天的模擬賽我又沒有墊底。dp口氣 wwt是一位非常良心的出題人。t1 看完就秒了,送分題,一眼cdq。看完題後看時限發現開了2s就不太虛了。而且比較清楚這種東西複雜度肯定是兩個log的,所以方法應該是對的。打完 拍所耗時間不多,在程式正確性保證後測一發極限發現要跑2.3s,把max都改手打就要2....

NOI2016 7 15模擬賽總結

我今天又沒有墊底 dp口氣 第一題感覺部分分之間差異好大,發現自己好像一檔都不太會,只對70分那一檔有想法。dp狀態很容易看出,關鍵在轉移,推了一下之後就會了。但由於只會70分這一檔導致不太懂如何驗證我程式正確,就隨手出幾個小資料 讀程式過了。順便說一句出題人好良心,送了我這種蒟蒻70分,增強了弱智...

2017 3 25NOI模擬賽總結

今天策略比較失敗,雖然成績和排名不是很難看,但暴露了很多問題。一開始正著看題,第一題是字串,第二題什麼鬼,第三題沒看懂。瞎想了一下第一題可以倒過來用sa 莫隊 資料結構求lcp。一開始很 覺得用個並查集可以把log消掉,就沒看了。第二題想了會想到個很靠譜的貪心,但這是n 2 log n的。發現隨手推...