BZOJ4447 Scoi2015 小凸解密碼

2022-08-12 22:24:30 字數 954 閱讀 5363

這題怎麼這麼難讀懂……而且還讀錯了一次……mhy的遊記裡寫的他寫的二分+線段樹,然後還說可以用set,表示非常懵逼……我只會線段樹暴搞,維護到左右端點的最遠和次遠的0區間,查詢分別查左右兩半的答案,再設法合併……跑得巨慢……

upd:確實用set維護一下所有0區間就好了……我怎麼想出來這個線段樹的……腦抽系列……

#include#include#define i (j+1)

#define j (i+j>>1)

#define p (k<<1)

#define s (p^1)

using namespace std;

const int n=1e5+5;

int n,m,s,t,a[n];

char c[n];

struct node

}f[n*8];

node operator+(node a,node b);

int j=a.y||b.x?-1:0;

if(b.s1==j)c.s1=a.s1,c.s2=a.s2;

else

c.s1=b.s1+a.z,c.s2=b.s2!=j?b.s2+a.z:a.s1;

if(a.t1==j)c.t1=b.t1,c.t2=b.t2;

else

c.t1=a.t1+b.z,c.t2=a.t2!=j?a.t2+b.z:b.t1;

return c;

}int cal(int i)

void pre(int i,int j,int k)

void vary(int s,int t,int i,int j,int k)

}node ask(int s,int t,int i,int j,int k)

void vary(int s,int t)

node ask(int s,int t)

int main()else

}}

BZOJ 1079 SCOI2008 著色方案

題目 分析 一看就覺得是dp或者直接排列組合公式或者容斥?我就只想到dp的,我們用dp i j 表示前i種顏色,排列出有j對相鄰一樣顏色的方案數。當出現乙個新的顏色時,我們把這個顏色插板法插進去,我們要列舉插入的方式,可能插到相鄰顏色一樣的中間,或者不是,然後進行狀態轉移.具體看 include i...

BZOJ1066 SCOI2007蜥蜴 最大流

挺顯然的最大流,源向所有有蜥蜴的點連inf邊,所有點拆成入點和出點,入店向出點連流量為高度的邊,限制流量,所有可以一步跳出去的點向匯連inf邊,跑最大流就行了。include include include define inf 99999999 define maxn 1005 using nam...

BZOJ1079 SCOI2008著色方案 DP

只能想到 5 15 的方法。我們要利用起 ci比較小這個性質,f a b c d e last 表示有a 種顏色用了1個,b種顏色用了2個 上一次染色用的是剩餘 last 個的顏色,轉移就是f a,b,c,d,e,last a last 2 f a 1,b,c,d,e b last 3 f a 1,...