日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

poj 2777 Count Color(线段树区区+染色问题)

發(fā)布時(shí)間:2025/3/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj 2777 Count Color(线段树区区+染色问题) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目鏈接: ?poj 2777 Count Color

題目大意: ?給出一塊長(zhǎng)度為n的板,區(qū)間范圍[1,n],和m種染料

? ? ? ? ? ? ? ? ? ? k次操作,C ?a ?b ?c 把區(qū)間[a,b]涂為c色,P ?a ?b 查詢區(qū)間[a,b]有多少種不同顏色

解題思路: ?很明顯的線段樹的區(qū)間插入和區(qū)間查詢,但是如何統(tǒng)計(jì)有多少不同的顏色呢?

? ? ? ? ? ? ? ? ? ? 如果每個(gè)結(jié)點(diǎn)數(shù)組來存儲(chǔ)顏色的種類,空間復(fù)雜度很高,而且查詢很慢

? ? ? ? ? ? ? ? ? ? 顏色最多只有30種,可以用位運(yùn)算中的“按位或|”

? ? ? ? ? ? ? ? ? ? 顏色也用二進(jìn)制來處理,和存儲(chǔ):

? ? ? ? ? ? ? ? ? ? 第一種顏色的二進(jìn)制表示1

? ? ? ? ? ? ? ? ? ? 第二種顏色的二進(jìn)制表示10

? ? ? ? ? ? ? ? ? ? 第三種顏色的二進(jìn)制表示100

? ? ? ? ? ? ? ? ? ? 第四種顏色的二進(jìn)制表示1000

? ? ? ? ? ? ? ? ? ? 如同一個(gè)區(qū)間出現(xiàn)第一種和第三種顏色,按位或運(yùn)算之后得到 101

? ? ? ? ? ? ? ? ? ? 統(tǒng)計(jì)結(jié)果有多少個(gè)1,就說明區(qū)間有多少不同的顏色

? ? ? ? ? ? ? ? ? ? 線段樹每個(gè)結(jié)點(diǎn)存儲(chǔ)區(qū)間顏色的種類,結(jié)點(diǎn)=左子樹|右子樹

? ? ? ? ? ? ? ? ? ? 更多關(guān)于線段樹的解題報(bào)告可以看我博客 myzee.cn

代碼:

?

#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 110000 #define MID(a,b) (a+b)>>1 #define L(a) a<<1 #define R(a) (a<<1|1) typedef struct{int left,right;int add,num; }Node; Node Tree[MAX<<2]; int Color[32]={0,1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824};//二進(jìn)制表示第幾種顏色,如8表示第四種顏色:1000 int Lowbit(int x) //剔除x二進(jìn)制中最后面一個(gè)1 {return x&(-x); }void Build(int t,int l,int r) //以1為根結(jié)點(diǎn),建立[l,r]的線段樹 {Tree[t].left=l,Tree[t].right=r,Tree[t].add=0; //***if(l==r){Tree[t].num=1;return ;}int mid=MID(Tree[t].left,Tree[t].right);Build(L(t),l,mid);Build(R(t),mid+1,r);Tree[t].num=(Tree[L(t)].num|Tree[R(t)].num); }void Insert(int t,int l,int r,int m) //向區(qū)間[l,r]涂顏色 {if(Tree[t].left==l&&Tree[t].right==r){Tree[t].add=m;Tree[t].num=m;return ;}if(Tree[t].add!=0) //lazy標(biāo)記{Tree[L(t)].num=Tree[t].add;Tree[R(t)].num=Tree[t].add;Tree[L(t)].add=Tree[t].add;Tree[R(t)].add=Tree[t].add;Tree[t].add=0;}int mid=MID(Tree[t].left,Tree[t].right);if(l>mid){Insert(R(t),l,r,m);}else if(r<=mid){Insert(L(t),l,r,m);}else{Insert(L(t),l,mid,m);Insert(R(t),mid+1,r,m);}Tree[t].num=(Tree[L(t)].num|Tree[R(t)].num); //*** }int Query(int t,int l,int r) {if(Tree[t].left==l&&Tree[t].right==r){return Tree[t].num;}if(Tree[t].add!=0) //區(qū)間插入的lazy思想{Tree[L(t)].num=Tree[t].add;Tree[R(t)].num=Tree[t].add;Tree[L(t)].add=Tree[t].add;Tree[R(t)].add=Tree[t].add;Tree[t].add=0;}int mid=MID(Tree[t].left,Tree[t].right);if(l>mid){return Query(R(t),l,r);}else if(r<=mid){return Query(L(t),l,r);}else{return Query(L(t),l,mid)|Query(R(t),mid+1,r); //***是|,不是+!!!}Tree[t].num=(Tree[L(t)].num|Tree[R(t)].num); }int main() {char ch;int n,col,q,i,k,a,b,c;int m;while(scanf("%d%d%d",&n,&col,&q)!=EOF){memset(Tree,0,sizeof(Tree)); //初始化Build(1,1,n); //建樹for(i=0;i<q;i++){getchar();scanf("%c",&ch);if(ch=='P'){scanf("%d%d",&a,&b);k=0;if(a>b)m=Query(1,b,a);elsem=Query(1,a,b);while(m>0) //計(jì)算查詢后的結(jié)果的二進(jìn)制表示右多少個(gè)1{k++;m-=Lowbit(m);}printf("%d\n",k);}else{scanf("%d%d%d",&a,&b,&c);if(a>b)Insert(1,b,a,Color[c]);elseInsert(1,a,b,Color[c]);}}}return 0; }


?

注:原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處

?

?

總結(jié)

以上是生活随笔為你收集整理的poj 2777 Count Color(线段树区区+染色问题)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本xxxx裸体xxxx出水 | 日韩精品人妻一区二区三区免费 | 日本免费网站 | 国产美女网站视频 | 久久99精品久久久 | 欧美性插插 | yjizz视频 | 日韩黄色精品视频 | 9l视频自拍九色9l视频成人 | 精品日日夜夜 | 免费涩涩网站 | 五月天激情开心网 | 亚洲av成人无码一二三在线观看 | 三级三级久久三级久久18 | 久久精品视频2 | 天天玩夜夜操 | 精品国产综合区久久久久久 | 精品综合网| 精品国产无码AV | 国产综合久久久久 | 蜜桃91精品入口 | 国产黄色一级大片 | 国产精品999. | 亚洲九九爱| 婷婷丁香一区二区三区 | 欧美色乱 | 黄色高清视频 | 成人黄色一区二区 | 日韩青青草 | 国产三级国产精品 | 性生活网址 | 中文国语毛片高清视频 | 134vcc影院免费观看 | 伊人青青| 人妻精油按摩bd高清中文字幕 | 中文字幕天堂在线 | 亚洲最大福利网站 | 国产午夜精品久久久久久久久久 | 中文写幕一区二区三区免费观成熟 | 国产香蕉精品 | 色呦呦一区二区三区 | 日韩片在线| 国产婷婷色一区二区三区 | 永久免费未满蜜桃 | 手机在线观看毛片 | 中国黄色小视频 | 素人av在线 | 百合sm惩罚室羞辱调教 | 香港三日本三级少妇66 | 亚洲精品色午夜无码专区日韩 | 日本高清www | 亚洲欧美精品久久 | 老熟女一区二区三区 | 亚洲宅男天堂 | 色七七桃花综合影院 | 熟妇一区二区三区 | 91黄色国产| 无码国产69精品久久久久网站 | 99久久影视 | 久久综合综合 | 欧美性色黄大片手机版 | 很黄的网站在线观看 | 性久久| 五月婷婷综合网 | 亚洲天天综合 | 欧美在线黄色 | 91久久精品夜夜躁日日躁欧美 | 最近中文字幕免费视频 | 黄色一级大片在线观看 | 久久av高潮av无码av喷吹 | 日韩大片av| 美国少妇性做爰 | 天天操天天摸天天干 | 激情九九| 国产婷婷色一区二区三区在线 | 精品小视频 | 国产成人精品一区二区色戒 | 无码人妻丰满熟妇区五十路 | av资源免费 | javxxx| 欧美三p| xxxwww国产| 中文国产字幕 | 丰满人妻一区二区三区免费 | www.黄在线观看 | 蜜桃91麻豆精品一二三区 | 欧美一区二区三区大屁股撅起来 | 亚洲精品成人久久 | 精品视频一区二区三区在线观看 | 美国伊人网 | 国产资源免费 | 天码人妻一区二区三区在线看 | 一区二区三区精 | 色综合天天综合网天天看片 | 无码精品国产一区二区三区 | 成人激情视频在线 | 国产一级av毛片 | 岛国免费视频 | 黄av资源|