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

Omni Inspirations

problems & programs ~

統(tǒng)計(jì)

留言簿

Friends

閱讀排行榜

評(píng)論排行榜

CQTSC 2010 內(nèi)部白點(diǎn)

題意:
給你N<=100000個(gè)點(diǎn)  同樣x坐標(biāo)的形成豎線段 同樣y坐標(biāo)的形成橫線段
讓你求出豎線段和橫線段的交點(diǎn)數(shù),包括端點(diǎn)。

做法:
我的做法是先求出非端點(diǎn)的交點(diǎn) 最后答案便是 tot+N

先將數(shù)組復(fù)制一遍 一個(gè)數(shù)組按照1關(guān)鍵字x 2關(guān)鍵字y排序 另一個(gè)關(guān)鍵字順序反一反
將x或者y離散化 這里以y為例
因?yàn)橐呀?jīng)按y排過(guò)序 所以所有橫線段已經(jīng)都能得到了(相鄰一段相同y坐標(biāo)的點(diǎn)屬于同一條線段)
并標(biāo)記每條橫線段的兩個(gè)端點(diǎn)。

然后我們枚舉按x坐標(biāo)由左邊向右邊的每條豎線段
我們只要求出有多少橫線段與它有交 便是這條豎線段形成的交點(diǎn)數(shù)
這等價(jià)于求出在當(dāng)前x坐標(biāo)的情況下 橫線段的右端點(diǎn)x坐標(biāo)大于當(dāng)前豎線段x坐標(biāo)的線數(shù)
這樣就可以用線段樹或者樹狀數(shù)組維護(hù)y坐標(biāo)的點(diǎn)(即維護(hù)當(dāng)前還存在的線段)就可以了

如何維護(hù)呢?
對(duì)于一條豎線段 我們枚舉形成當(dāng)前豎線的所有點(diǎn) 如果某個(gè)點(diǎn)已經(jīng)是橫線段的結(jié)尾 那就從樹中刪除這個(gè)y坐標(biāo)
反之如果是橫線段的開(kāi)始 那就加入這個(gè)y坐標(biāo)
在枚舉之前當(dāng)然要求當(dāng)前線的交點(diǎn)個(gè)數(shù):
對(duì)于枚舉到的相鄰兩個(gè)相同x坐標(biāo)的點(diǎn) 假設(shè)y1<y2  我們求出 [y1,y2)的存在的線段個(gè)數(shù) 那便是交點(diǎn)個(gè)數(shù)

這樣就在NLogN時(shí)間內(nèi)解決了此題

ps:發(fā)覺(jué)我的基礎(chǔ)太差了。。二分查找[y1,y2)的兩個(gè)端點(diǎn)時(shí)候竟然忘記了 (y2-1)這個(gè)坐標(biāo)事實(shí)上可能不存在
所以二分查找找端點(diǎn)的時(shí)候掛了。。BS我把

本題加強(qiáng)版是 dhx學(xué)長(zhǎng) 出的 Religious
 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 #define n 100005
 5 struct Tpoint
 6 {
 7     #define x0(i) p0[i].x
 8     #define y0(i) p0[i].y
 9     #define nod0(i) p0[i].nod
10     #define x1(i) p1[i].x
11     #define y1(i) p1[i].y
12     #define nod1(i) p1[i].nod
13     int x,y,nod;
14 }    p0[n],p1[n];
15 int N,ny[n],New,T[n],ret=0;
16 bool sta[n],end[n];
17 inline bool cmp0(const Tpoint &a,const Tpoint &b)
18 {
19     return a.y<b.y||a.y==b.y&&a.x<b.x;
20 }
21 inline bool cmp1(const Tpoint &a,const Tpoint &b)
22 {
23     return a.x<b.x||a.x==b.x&&a.y<b.y;
24 }
25 inline int find(int x)
26 {
27     int l=0,r=New;
28     for (int mid=(l+r)>>1;l+1<r;mid=(l+r)>>1)
29     if (ny[mid]<=x)    l=mid;
30     else    r=mid;
31     if (x<ny[r])    return l;
32     return r;
33 }
34 inline int Sum(int x)
35 {
36     int ret=0;
37     for (;x;x-=x&-x)
38         ret+=T[x];
39     return ret;
40 }
41 inline void Add(int x,int delt)
42 {
43     for (;x<=N;x+=x&-x)
44         T[x]+=delt;
45 }
46 int main()
47 {
48     scanf("%d",&N);
49     for (int i=0;i<N;++i)
50     {
51         scanf("%d%d",&x0(i),&y0(i));
52         nod0(i)=i;nod1(i)=i;
53         x1(i)=x0(i),y1(i)=y0(i);
54     }
55     sort(p0,p0+N,cmp0);
56     sta[nod0(0)]=end[nod0(N-1)]=1;
57     for (int i=1;i<N;++i)
58         sta[nod0(i)]=(y0(i)!=y0(i-1));
59     for (int i=0;i<N-1;++i)
60         end[nod0(i)]=(y0(i)!=y0(i+1));
61     ny[++New]=y0(0);
62     for (int i=1;i<N;++i)
63     if (y0(i)!=y0(i-1))    ny[++New]=y0(i);
64     sort(p1,p1+N,cmp1);
65     for (int i=0,k;i<N;i=k)
66     {
67         for (k=i+1;k<N&&x1(i)==x1(k);++k)
68         if (y1(k-1)<y1(k)-1)
69             ret+=Sum(find(y1(k)-1))-Sum(find(y1(k-1)));
70         for (int j=i;j<k;++j)
71         {
72             if (sta[nod1(j)]&&!end[nod1(j)])
73                 Add(find(y1(j)),1);
74             if (!sta[nod1(j)]&&end[nod1(j)])
75                 Add(find(y1(j)),-1);
76         }
77     }
78     printf("%d\n",N+ret);
79     return 0;
80 }
81 

posted on 2010-04-17 20:56 jsn1993 閱讀(311) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Data Structures

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产精品一区| 亚洲少妇在线| 亚洲日本中文| 亚洲人成7777| 亚洲激情成人在线| 亚洲国产综合视频在线观看| 国产亚洲成av人在线观看导航| 欧美视频在线免费看| 欧美超级免费视 在线| 久久久免费精品| 久久免费少妇高潮久久精品99| 欧美一区精品| 久久精品99无色码中文字幕| 久久久久在线| 免费高清在线视频一区·| 免费亚洲电影在线| 欧美日本高清| 国产精品区二区三区日本| 国产日本精品| 精品成人乱色一区二区| 亚洲免费电影在线观看| 一区二区精品在线观看| 欧美一区二区三区婷婷月色| 久久伊人精品天天| 亚洲区中文字幕| 一区二区高清在线| 欧美在线免费观看视频| 久久综合一区| 国产精品扒开腿爽爽爽视频 | 欧美日韩国产区| 欧美涩涩视频| 国产精品久久久久三级| 在线观看日韩国产| 亚洲性图久久| 免费成人你懂的| 亚洲视频在线观看网站| 亚洲视频狠狠| 亚洲三级性片| 黄色亚洲免费| 亚洲欧洲精品一区二区三区| 亚洲无吗在线| 免费一级欧美片在线观看| 亚洲裸体视频| 久久久久久国产精品mv| 欧美色图五月天| 精品不卡一区二区三区| 亚洲综合色丁香婷婷六月图片| 久久人人爽爽爽人久久久| 亚洲精品一区二区三区婷婷月| 性欧美video另类hd性玩具| 欧美高清在线一区| 国模大胆一区二区三区| 亚洲色诱最新| 欧美激情亚洲一区| 久久本道综合色狠狠五月| 欧美日韩精品是欧美日韩精品| 韩国成人福利片在线播放| 欧美亚洲一级| 99v久久综合狠狠综合久久| 老司机aⅴ在线精品导航| 国产一区91精品张津瑜| 性欧美xxxx视频在线观看| 中文日韩欧美| 国产精品国产三级国产a| 一本色道久久综合亚洲精品不卡| 欧美插天视频在线播放| 久久精品成人| 国精品一区二区三区| 久久久精品一区| 亚洲欧美日韩一区二区三区在线观看 | 亚洲在线观看| 欧美日韩亚洲国产精品| 99精品视频一区| 亚洲国产欧美一区二区三区久久| 久久久久久久国产| 久久久免费精品| 激情五月婷婷综合| 玖玖玖国产精品| 久久躁狠狠躁夜夜爽| 亚洲国产精品久久久久婷婷884 | 在线综合视频| 国产精品国产一区二区| 性欧美videos另类喷潮| 亚洲女人天堂成人av在线| 一区二区三区波多野结衣在线观看| 欧美成人综合网站| 亚洲免费激情| 一区二区不卡在线视频 午夜欧美不卡'| 欧美精品v国产精品v日韩精品| 亚洲美洲欧洲综合国产一区| 亚洲精品国产欧美| 欧美剧在线免费观看网站| 亚洲视频精选在线| 性久久久久久| 亚洲国产一二三| 一本色道久久综合亚洲精品小说| 国产精品国产亚洲精品看不卡15| 欧美一级二级三级蜜桃| 久久久亚洲高清| 99热精品在线观看| 亚洲综合色在线| 亚洲激情午夜| 亚洲一级影院| 91久久精品日日躁夜夜躁国产| 亚洲黄色在线视频| 国产精品三上| 91久久精品国产91久久性色tv| 亚洲美女黄网| 国产亚洲高清视频| 亚洲激情视频| 合欧美一区二区三区| 99re66热这里只有精品4| 国内久久精品视频| 一本综合精品| 亚洲人成网站影音先锋播放| 亚洲欧美日韩在线播放| 一区二区三区 在线观看视| 久久成人精品一区二区三区| 一区二区三区四区在线| 免费不卡亚洲欧美| 久久免费少妇高潮久久精品99| 欧美视频在线观看免费| 亚洲电影免费观看高清| 国色天香一区二区| 亚洲视频精品在线| 日韩午夜精品| 久久久久久穴| 午夜精品一区二区三区四区 | 一区二区三区精品视频在线观看| 久久精品盗摄| 亚洲欧美中日韩| 欧美激情麻豆| 老色鬼精品视频在线观看播放| 国产精品免费观看在线| 亚洲人精品午夜| 亚洲国产影院| 久久夜色精品国产欧美乱| 久久免费国产精品1| 国产欧美日韩在线| 亚洲色在线视频| 亚洲伊人伊色伊影伊综合网| 欧美华人在线视频| 91久久精品网| 亚洲精品中文字幕在线| 欧美 日韩 国产 一区| 久久综合久久美利坚合众国| 黄色一区二区三区| 亚洲国产精品成人久久综合一区| 国产日韩欧美夫妻视频在线观看| 中日韩高清电影网| 亚洲一区www| 欧美日韩在线一区二区| 99精品国产热久久91蜜凸| 亚洲午夜一区二区三区| 国产精品高清免费在线观看| 一区二区三区毛片| 欧美在线播放一区二区| 国产亚洲福利社区一区| 久久精品久久99精品久久| 久久久蜜桃一区二区人| 亚洲高清视频在线| 欧美国产第一页| 亚洲精品一二三区| 欧美亚洲综合另类| 一区在线观看| 你懂的国产精品永久在线| 亚洲精品乱码久久久久| 在线一区视频| 国产区精品视频| 久久午夜激情| 99riav国产精品| 久久av免费一区| 亚洲日韩视频| 国产精品实拍| 欧美 亚欧 日韩视频在线| av不卡在线观看| 久久久精品五月天| 99国产精品| 国产综合在线视频| 欧美另类高清视频在线| 香蕉成人啪国产精品视频综合网| 欧美成人资源| 午夜精品久久久久影视| 亚洲人成7777| 国产一区二区三区久久久| 欧美精品一区在线| 午夜在线不卡| 亚洲麻豆视频| 欧美aaaaaaaa牛牛影院| 午夜精品久久久久久久久久久久久| 尤物精品在线| 国产精品伦一区| 欧美激情女人20p| 久久成人在线| 亚洲一区二区三区高清不卡| 亚洲第一免费播放区| 久久精品国产精品亚洲精品| 中文网丁香综合网| 亚洲欧洲在线一区| 伊人成人在线|