開始看到前面的題目那麼水,到這題時就開始胡思亂想了,待修改莫隊?樹套樹?30棵線段樹?
然後我打了30棵線段樹,常數十分的大啊!
超時30分tat。
然後旁邊的人把30個顏色的值放到同乙個節點上,然後就對了,?????
常數小而已嘛!
雖然兩個方法的時間複雜度理論上是一樣的。
其實就是每個節點儲存30個顏色是否出現過,然後兩個兒子向上合併就好了。
#include
#include
#include
#include
#include
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
int i,j,k,l,n,m;
int a,b,c,d,num;
struct nodet[100007
*3],ans,p;
char s[10];
void down(int
x,int l,int r)
}node merge(node x,node y)
void change(int
x,int l,int r,int
y,int z,int o)
int mid=(l+r)/2;
if(z<=mid)change(x
*2,l,mid,y,z,o);
else
if(y>mid)change(x
*2+1,mid+1,r,y,z,o);
else
int i;
fo(i,1,c)t[x].son[i]=t[x
*2].son[i]|t[x
*2+1].son[i];
}node find(int
x,int l,int r,int
y,int z)
int mid=(l+r)/2;
if(z<=mid)return find(x
*2,l,mid,y,z);
else
if(y>mid)return find(x
*2+1,mid+1,r,y,z);
else
}int main()
else}}
JZOJ4603 顏料大亂鬥
這裡就不罵辣雞出題人了 這題查詢和修改區間 l r 竟然 l 可以大於 r!而且白色是顏料1!注意上面那些細節,開30顆線段樹就可以ac了。include include include include define fo i,j,k for int i j i k i define fd i,j,...
JZOJ 4603 顏料大亂鬥
畫師傅又要開始畫畫了,這次他花了三天三夜將一堵牆塗成了白色。但是畫師傅有個頑劣的 小花,小花討厭畫師傅對ta始亂終棄,所以趁 畫師傅不在用不同的顏料將牆塗來塗去。然而畫師傅為了保護他的大作,設定了乙個監控機制a。a每隔一段時間會 查珣某一段牆上的顏料的種類數,並將其記錄下來。現在畫師傅回來了,看到五...
前端打包工具大亂鬥
過去很長一段時間,人們使用 webpack,或基於 webpack taro 的外掛程式系統,構建複雜應用 隨著專案複雜度的公升高,一層層 loader 和 plugin,將開發鏈路大大延長 過長的開發鏈路,除了打包時間變慢,更重要的是嚴重影響力除錯,測試,維護 除此之外,case by case ...