青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

算法學社
記錄難忘的征途
posts - 141,comments - 220,trackbacks - 0
題目描述:
    在一個N*M(N<=200,M<=50000)像素的畫板上畫Q(Q<=50000)個圖形,有矩形,圓形,倒等腰三角形,菱形四種,每個圖形有九種顏色可選擇。對于一個像素,后畫的顏色會覆蓋前面的顏色,請求出最后每種顏色的像素有多少個?
吐槽:
    1. 線段樹會MLE...大概...
    2. ...并查集ms只能在這種問題上優化
算法分析:
    
    額,嚴格的說不是并查集啊... 只是在一個數組上亂搞出一個類似并查集的東西...
    現在我來簡要講述一下這個方法,這個方法非常好寫,也就10行左右... 而且比線段樹快很多~~
    我目前知道的這個優化必須要把所有的線段"一視同仁",插入線段[1,3]和[2,4]后,一同視為[1,4]....
    所以在任何時候,這個數組存的都是一段一段的不相交區間~~
    對于一個區間[l,r],l到r上的所有點的“代表”都是r+1.....
    如果要插入某線段[l',r'],那么從l'到r'掃一遍就可以了:
        如果某個點p代表是自己的話,那么就把p的代表改為Parent[r],然后檢查p+1。
        如果p的代表不是自己的話,那么就檢查parent[p]就可以了,因為parent[p]一定是未被覆蓋的點。
    在查找p的代表中,用并查集中的“路徑壓縮”優化就可以了
 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 #define re(i,n) for(int i=0;i<n;i++)
 5 #define re1(i,n) for(int i=1;i<=n;i++)
 6 #define re2(i,n) for(int i=0;i<=n;i++)
 7 #define re3(i,n) for(int i=1;i<n;i++)
 8 const int N = 205;
 9 const int M = 50005;
10 int ans[10];
11 int seg[N][M];
12 int n,m,q;
13 void init(){
14     re(i,n) re2(j,m) {
15         seg[i][j] = j;
16     }
17     re(i,10) ans[i] = 0;
18 }
19 int find(int pos, int x){ return seg[pos][x] == x ? x: seg[pos][x] = find(pos,seg[pos][x]);}
20 void ins(int pos,int l, int r,int c){
21 //    cout<<pos<<" "<<l<<" "<<r-1<<" "<<c<<endl;
22     r = find(pos, r);
23     while(l < r) {
24         if(find(pos,l) == l){
25             ans[c] ++;
26             seg[pos][l] = r;
27             l++;
28         }
29         else {
30             l = seg[pos][l];
31         }
32     }
33 }
34 struct query{
35     int x,y,r,c,w,l;
36     char Q;
37 }num[M];
38 int main(){
39     while(~scanf("%d%d%d",&n,&m,&q)){
40         char ch[10];
41         init();
42         re(i,q) {
43             scanf("%s%d%d",ch,&num[i].x,&num[i].y);
44             num[i].Q = ch[0];
45             if(ch[0] == 'R'){
46                 scanf("%d%d%d",&num[i].l,&num[i].w,&num[i].c);
47             }
48             else if(ch[0] == 'T'){
49                 scanf("%d%d",&num[i].w,&num[i].c);
50             }
51             else {
52                 scanf("%d%d",&num[i].r,&num[i].c);    
53             }
54         }
55         for(int i=q-1;i>=0;i--){
56             int x = num[i].x,y=num[i].y, r= num[i].r, w=num[i].w,l = num[i].l,c = num[i].c;
57             if(num[i].Q=='C'){
58                 int left = max(y - r ,0), right = min(y + r, m-1);
59                 ins(x,left,right+1,c);
60                 for(int j = 1; j <= r; j++){
61                     if(x + j >= n && x - j < 0) break;
62                     while((y-left)*(y-left) + j*j > r*r) left ++;;
63                     while((right-y)*(right-y) + j*j > r*r) right--;
64                     if(x + j < n) ins(x + j, left, right +1 ,c);
65                     if(x - j >=0) ins(x - j, left, right +1 ,c);
66                 }
67             }
68             else if(num[i].Q=='D'){
69                 int left = max(y - r ,0), right = min(y + r, m-1);
70                 ins(x,left,right+1,c);
71                 for(int j = 1; j <= r; j++){
72                     if(x + j >= n && x - j < 0) break;
73                     while((y-left)+j > r) left ++;;
74                     while((right-y)+j > r) right--;
75                     if(x + j < n) ins(x + j, left, right +1 ,c);
76                     if(x - j >=0) ins(x - j, left, right +1 ,c);
77                 }
78             }
79             else if(num[i].Q=='R'){
80                 for(int X = x;X < n && X < x + l ; X++){
81                     ins(X,y,min(y+w,m),c);
82                 }
83             }
84             else {
85                 for(int X = x,W = w/2; X<n && W>=0; X++,W--){
86                     int left = max(0,y-W);
87                     int right = min(m-1,y+W);
88                     ins(X,left,right+1,c);
89                 }
90             }
91         }
92         re1(i,9) {cout<<ans[i]; if(i != 9) cout<<" ";} cout<<endl;
93     }
94 }
95 
posted on 2012-04-30 17:38 西月弦 閱讀(500) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            麻豆精品传媒视频| 国产精品一级在线| 亚洲裸体在线观看| 亚洲欧美美女| 国产精品白丝黑袜喷水久久久| 亚洲国产日韩欧美在线99| 欧美在线中文字幕| 亚洲综合清纯丝袜自拍| 国产精品高潮呻吟久久av无限| 亚洲国内自拍| 欧美国产极速在线| 久久午夜精品| 亚洲国产天堂久久综合网| 久久精品在线播放| 欧美日韩亚洲一区三区| 亚洲免费观看高清在线观看| 亚洲国产成人在线视频| 裸体一区二区| 99视频超级精品| 日韩午夜在线播放| 欧美三级日韩三级国产三级| 亚洲女与黑人做爰| 亚洲欧美国产高清| 激情国产一区二区| 亚洲国产精品一区二区www在线| 欧美精品在线免费播放| 中文一区在线| 欧美在线91| 亚洲国产精品一区二区三区| 欧美va天堂| 欧美日韩理论| 久久久久久久久伊人| 免费短视频成人日韩| 在线亚洲欧美专区二区| 亚洲永久免费视频| 激情视频一区| 亚洲人成在线观看一区二区| 欧美午夜精品一区| 欧美在线视频全部完| 久久精品一区二区| 日韩一级大片在线| 香蕉乱码成人久久天堂爱免费| 极品中文字幕一区| 亚洲久久一区| 狠狠色狠狠色综合| 一本色道久久综合狠狠躁篇怎么玩 | 国产日本欧洲亚洲| 你懂的网址国产 欧美| 欧美日韩成人综合天天影院| 香蕉精品999视频一区二区| 久久深夜福利免费观看| 一区二区高清视频| 久久岛国电影| 一区二区三区av| 欧美一区三区三区高中清蜜桃| 亚洲国产福利在线| 亚洲午夜电影| 亚洲精品老司机| 午夜在线视频一区二区区别| 99riav国产精品| 欧美中文字幕精品| 亚洲在线1234| 亚洲国产精品免费| 国产午夜一区二区三区| 91久久精品www人人做人人爽 | 91久久在线播放| 国产精品99久久99久久久二8| 黄色精品一二区| 亚洲一区二区在线免费观看| 亚洲精品在线免费| 久久久久欧美精品| 欧美一级大片在线观看| 欧美日韩1区2区| 欧美激情精品久久久久久| 国产亚洲成av人在线观看导航| 亚洲美女诱惑| 亚洲精品在线视频| 麻豆精品视频在线| 欧美69视频| 娇妻被交换粗又大又硬视频欧美| 亚洲桃花岛网站| 亚洲一区二区三区四区五区午夜| 欧美激情精品久久久久久黑人| 欧美大片免费| 玉米视频成人免费看| 久久精品国产免费| 久久手机免费观看| 国产午夜精品在线观看| 亚洲一区二区三区四区中文| 亚洲婷婷在线| 欧美三区在线视频| 99亚洲一区二区| 亚洲一区二区在| 欧美午夜精品电影| 亚洲一区二区在线视频| 午夜精品福利一区二区三区av | 国外成人性视频| 亚洲欧美在线x视频| 欧美一级黄色网| 国产乱码精品| 香蕉国产精品偷在线观看不卡| 性做久久久久久久免费看| 国产精品视频观看| 欧美一二区视频| 蜜桃av综合| 日韩一区二区精品视频| 欧美日韩视频在线一区二区| 一区二区三区精品在线| 欧美一站二站| 亚洲第一区中文99精品| 欧美剧在线免费观看网站| 夜夜躁日日躁狠狠久久88av| 午夜在线一区| 在线欧美日韩国产| 欧美日韩精品一区二区三区四区| 一区二区欧美亚洲| 久久久久国内| 亚洲精品欧美一区二区三区| 欧美特黄一级大片| 欧美在线观看网站| 亚洲国产视频直播| 香蕉乱码成人久久天堂爱免费| 韩国成人福利片在线播放| 欧美激情1区2区| 亚洲一区在线免费| 欧美电影在线| 亚洲欧美国产精品va在线观看| 红桃视频亚洲| 国产精品99久久久久久白浆小说| 欧美在线三区| 亚洲人成在线观看| 国产精品久久久久久影院8一贰佰| 亚洲一区二区三区在线视频| 欧美freesex8一10精品| 亚洲欧美日韩在线高清直播| 亚洲电影免费观看高清完整版在线观看| 欧美精品国产一区| 久久成人国产精品| 日韩视频一区二区在线观看| 久久久久国产精品www | 亚洲一区二区在线播放| 麻豆精品视频| 亚洲手机成人高清视频| 狠狠色伊人亚洲综合成人| 欧美日韩免费观看一区| 久久天天狠狠| 亚洲欧美视频| 亚洲精品国产系列| 蜜臀av国产精品久久久久| 亚洲欧美日韩国产一区二区三区 | 亚洲毛片av在线| 国产一区二区三区黄视频| 欧美四级电影网站| 欧美aa在线视频| 欧美在线观看视频一区二区| 亚洲一区欧美激情| 亚洲伦理自拍| 亚洲精品小视频| 欧美成人一区在线| 久久久久久亚洲精品中文字幕 | 久久精品日产第一区二区| 中国女人久久久| 亚洲高清在线观看| 国内精品久久久久久久果冻传媒 | 欧美激情中文字幕一区二区| 米奇777在线欧美播放| 亚洲电影免费在线观看| 你懂的成人av| 正在播放亚洲一区| 久久久蜜臀国产一区二区| 国产精品一卡二| 欧美专区一区二区三区| 久久综合精品一区| 亚洲欧洲久久| 欧美乱妇高清无乱码| 亚洲乱码精品一二三四区日韩在线 | 国产精品嫩草久久久久| 久久免费视频这里只有精品| 久久精品亚洲一区二区| 国产欧美日韩精品在线| 欧美日韩在线播放三区四区| 欧美日韩成人在线| 欧美日本精品| 欧美日韩一区二区免费视频| 欧美精品日日鲁夜夜添| 欧美大色视频| 欧美日韩国语| 国产精品久久久免费| 国产精品久久久久久影视| 国产精品男人爽免费视频1| 国产精品亚洲片夜色在线| 欧美日韩国产在线播放| 欧美美女bb生活片| 中文精品视频| 亚洲欧美日韩综合国产aⅴ| 一区二区三区视频在线观看 | 国产精品免费区二区三区观看| 国产精品永久免费视频| 国产亚洲欧美日韩日本| 国产日韩在线视频|