NOIP模擬(20171031)T3 紙帶

2021-08-10 12:20:39 字數 2085 閱讀 9935

有乙個紙帶·,每次區間染色,同乙個地方後染的顏色覆蓋先染的,求最後紙帶上顏色種類數。

咦,這不是線段樹嗎?

咦,倒過來做好像很方便啊?

咦,離散化有坑?

區間塗色,若該顏色所在區間均被染色,則該顏色按原順序操作後會被後面的顏色覆蓋

注意離散化

本來三個顏色3-8,2-5,7-9,最後6號點上顏色是1

離散化後為2-5,1-3,4-6,顏色1就被「吃」掉了

怎麼解決?自(kan)行(dai)思(ma)考(ba)

#include

#define len 1000005

using

namespace

std;

inline

int getint()

while(isdigit(c))

return x*p;

}inline

void putint(int x)

static

int buf[30];

int tot=0;

dowhile(x);

while(tot)putchar(buf[--tot]+'0');

}int a[len],b[len],x[len<<3];

bool seg[(len<<4)+1],tag[(len<<4)+1];

inline

void updata(int k)

inline

void change(int k)

inline

void pushdown(int k)

}void modify(int k,int l,int r,int s,int t)

int mid=l+r>>1;

if(s<=mid)modify(k<<1,l,mid,s,t);

if(mid1|1,mid+1,r,s,t);

updata(k);

}bool query(int k,int l,int r,int s,int t)

int mid=l+r>>1;

bool ans=1;

if(s<=mid)ans=ans&&query(k<<1,l,mid,s,t);

if(mid1|1,mid+1,r,s,t);

updata(k);

return ans;

}int main()

int tot=n*2;

for(int i=1;i<=n;++i)

sort(x+1,x+tot+1);

tot=unique(x+1,x+tot+1)-x;

for(int i=1;i<=n;++i)

int ans=0;

for(int i=n;i>=1;--i)

}cout

0;}

咦,正解竟然是並查集!

我們將區間覆蓋用並查集優化,維護當前顏色最右端,合併時將一段顏色的最右端與相鄰格仔合併即可

#include

#define len 2000006

using

namespace

std;

inline

int getint()

while(isdigit(c))

return x*p;

}int ans=0;

int a[len],b[len],x[len];

int fa[len];

inline

int getfa(int x)

inline

int merge(int u,int v)

inline

void modify(int l,int r)

int main()

int tot=n*2;

sort(x+1,x+tot+1);

tot=unique(x+1,x+tot+1)-x;

for(int i=1;i<=n;++i)

for(int i=1;i<=tot;++i)

for(int i=n;i>=1;--i)

cout

0;}

NOIP模擬(20171024)T2 乘積

求從1 n中選k個數,使得這k個數的乘積不含完全平方因子 70 n 30 100 n 500 狀壓dp,f i j k 表示前i個數,選了j個,當前所選數之積分解質因數後的狀態為k k表示成二進位制後,第一位表示有沒有2,第二位表示有沒有3 以此類推 令i 1分解質因數後狀態為po s i 1 f ...

NOIP模擬(20171024)T3 數學

求滿足方程ax xa mod2n 的解的個數 n 30,a 109詢問組數t 1000 引理一 若a,b 均為奇數,且a2 k 1 b2k 1 mod2n 則a b mod2n 證明 a 2k 1 b2k 1 mod2n a 2k 1 b2k 1 0 mod2n a b a2k a2k 1b a2k...

NOIP模擬(10 30)T1 比賽

比賽 題目背景 10.30 noip 模擬t1 分析 暴力 將資料從小到大排序,從大到小找到第乙個滿足 a i k a i 1 的位置,那麼答案就是 n i 了,如果找不到那麼就是 n了 注意邊界 source created by scarlyw include include include i...