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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【HDU - 6183】Color it(CDQ分治 或 动态开点线段树)

發(fā)布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【HDU - 6183】Color it(CDQ分治 或 动态开点线段树) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題干:

Do you like painting? Little D doesn't like painting, especially messy color paintings. Now Little B is painting. To prevent him from drawing messy painting, Little D asks you to write a program to maintain following operations. The specific format of these operations is as follows.?

00?: clear all the points.?

11?xx?yy?cc?: add a point which color is?cc?at point?(x,y)(x,y).?

22?xx?y1y1?y2y2?: count how many different colors in the square?(1,y1)(1,y1)?and?(x,y2)(x,y2). That is to say, if there is a point?(a,b)(a,b)?colored?cc, that?1≤a≤x1≤a≤x?and?y1≤b≤y2y1≤b≤y2, then the color?cc?should be counted.?

33?: exit.?

Input

The input contains many lines.?

Each line contains a operation. It may be '0', '1 x y c' (?1≤x,y≤106,0≤c≤501≤x,y≤106,0≤c≤50?), '2 x y1 y2' (1≤x,y1,y2≤1061≤x,y1,y2≤106?) or '3'.?

x,y,c,y1,y2x,y,c,y1,y2?are all integers.?

Assume the last operation is 3 and it appears only once.?

There are at most?150000150000?continuous operations of operation 1 and operation 2.?

There are at most?1010?operation 0.?
?

Output

For each operation 2, output an integer means the answer .?

Sample Input

0 1 1000000 1000000 50 1 1000000 999999 0 1 1000000 999999 0 1 1000000 1000000 49 2 1000000 1000000 1000000 2 1000000 1 1000000 0 1 1 1 1 2 1 1 2 1 1 2 2 2 1 1 2 1 2 2 2 2 1 1 2 1 2 1 3 2 2 1 2 2 10 1 2 2 10 2 2 0 1 1 1 1 2 1 1 1 1 1 2 1 2 1 1 2 1 2 2 1 2 1 1 2 1 2 1 1 2 2 1 2 2 10 1 2 2 10 2 2 3

Sample Output

2 3 1 2 2 3 3 1 1 1 1 1 1 1

題目大意:

解題報告:

直接51顆線段樹,按照y軸建樹,然后維護x的最小值。但是直接建樹會mle,所以考慮動態(tài)開點。注意不要手滑寫錯emmm。

AC代碼:

#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<map> #include<vector> #include<set> #include<string> #include<cmath> #include<cstring> #define F first #define S second #define ll long long #define pb push_back #define pm make_pair using namespace std; typedef pair<int,int> PII; const int MAX = 1e6 + 5; const int INF = 0x3f3f3f3f; struct TREE {int l,r;int minn; } tree[MAX<<2]; int root[555],tot,flag;void pushup(int rt) {int L = tree[rt].l,R = tree[rt].r;tree[rt].minn = min(tree[L].minn,tree[R].minn); } void update(int &rt,int l,int r,int tar,int x) {if(rt == 0) {rt = ++tot;tree[rt].l = tree[rt].r = 0;tree[rt].minn = x;}if(l == r) {tree[rt].minn = min(tree[rt].minn,x);return;}int m = (l+r)>>1;if(tar <= m) update(tree[rt].l,l,m,tar,x);else update(tree[rt].r,m+1,r,tar,x);pushup(rt); } void query(int rt,int l,int r,int pl,int pr,int x) {if(flag || !rt) return ;if(pl <= l && pr >= r) {if(tree[rt].minn <= x) flag = 1;return ;}int m = (l+r)>>1;if(pl <= m) query(tree[rt].l,l,m,pl,pr,x);if(pr > m) query(tree[rt].r,m+1,r,pl,pr,x); } int main() {int op;tree[0].l = tree[0].r = 0;tree[0].minn = INF;while(scanf("%d",&op)) {if(op == 3) break;if(op == 0) {for(int i = 0; i<=50; i++) root[i] =0;tot=0;}if(op == 1) {int x,y,c;scanf("%d%d%d",&x,&y,&c);update(root[c],1,1000000,y,x);}if(op == 2) {int x,y1,y2,ans = 0;scanf("%d%d%d",&x,&y1,&y2);for(int i = 0; i<=50; i++) {flag = 0;query(root[i],1,1000000,y1,y2,x);ans += flag;}printf("%d\n",ans);} }return 0 ; }

總結(jié):

還有一個坑啊,

?? ?tree[0].l = tree[0].r = 0;
?? ?tree[0].minn = INF;

這兩步必須有,因為這里是單點更新,所以update里面的if和else只進去一個,另一邊沒有開點。假設(shè)進入了l并且開點了l,那么tree[rt].r=0,所以你pushup的時候直接從右孩子取值直接就變成tree[0].minn了,,所以直接就成0了,所以為了避免這一狀態(tài)發(fā)生,我們要把0這個節(jié)點設(shè)置成非法節(jié)點,也就是不影響結(jié)果就可以,所以我們把tree[0].minn=INF就可以了。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的【HDU - 6183】Color it(CDQ分治 或 动态开点线段树)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 俄罗斯色片 | 狠狠五月婷婷 | 欧美一a一片一级一片 | av私库| 成人精品视频在线观看 | 午夜一区二区三区四区 | 91av免费看 | 91网站在线观看视频 | 亚洲自拍偷拍综合 | 欧美色图影院 | 国产精品麻豆入口 | 成人精品一区二区三区电影黑人 | 午夜黄色录像 | 永久久久久久久 | 午夜亚洲AV永久无码精品蜜芽 | www好男人 | 美女毛片视频 | 女生隐私免费看 | 久久午夜电影网 | 黄色高清无遮挡 | 爱情岛论坛自拍亚洲品质极速最新章 | 中文字幕二区 | 中文字幕视频一区二区 | av体验区 | 国产精品一区二区三区久久 | 农村妇女毛片精品久久久 | 日韩在线视频免费看 | 97免费在线观看视频 | 成人不卡视频 | 51ⅴ精品国产91久久久久久 | 九九九网站 | 一级在线看| 国产一级二级三级在线观看 | 婷婷激情小说 | 性av网| 请用你的手指扰乱我吧 | 亚洲一区二区在线看 | 日韩精品中字 | 91视频中文字幕 | 欧美激情va永久在线播放 | 色成人亚洲 | 成人网在线免费观看 | 午夜性| 日本欧美不卡 | 国产99久久久久久免费看 | 色狠狠一区二区三区香蕉 | 精品国产一区二区三区性色 | 欧美国产视频 | 国产欧美久久久精品免费 | 亚洲欧美日韩色 | 美女福利在线 | 欧美亚洲激情 | 无码人妻丰满熟妇啪啪欧美 | 欧美无玛 | 按摩ⅹxxx性hd中国 | 丰满多毛的大隂户视频 | 怡红院成永久免费人全部视频 | 欧美一级片网址 | 伊人网综合网 | 国模一区二区三区 | 秋霞精品一区二区三区 | 男同精品| 性欧美大战久久久久久久 | 久久理伦| 传媒av在线 | 国产成人无码精品久在线观看 | av天天操| 亚洲天堂一区二区三区 | 女同性恋毛片 | 亚洲一区二区三区久久 | av青青草 | 国产偷人妻精品一区二区在线 | 一区二区三区四区影院 | 国产成人一区二区三区别 | 美女视频在线免费观看 | 16一17女人毛片 | 欧美日本在线看 | 性――交――性――乱a | 91抖音成人 | 欧美大片在线播放 | 亚洲视频在线免费 | 久久电影一区二区 | 精品一区二区在线观看 | 四虎黄网 | 蜜桃久久久aaaa成人网一区 | 国产精品亚洲视频 | 素人女裸体| 久一久久| 91插插插影库永久免费 | 依依成人在线视频 | 天堂在线91 | 91抖音在线观看 | 9l视频自拍九色9l视频成人 | 亚洲av熟女国产一区二区性色 | 91丨porny丨成人蝌蚪 | 亚洲xx在线 | 18岁禁黄网站 | 欧美人狂配大交3d | 久久一区二 |