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

pku 2274 the race 數據結構好題,各種NC錯誤。。

題意這樣的
有N架飛船,給出他們的起始位置和速度(速度為正數),求
(1)在比賽過程中它們會相遇多少次
(2)輸出排名前10000次的相遇事件

首先先畫畫s-v圖來看,如果按照s遞增的順序來添加直線,那么第i條直線與第j條直線(j<i)能相交的充要條件是vj>vi,這樣子就很簡單了,用任何一種樹結構維護前i條直線的v值,添加第i條直線時產生的相交個數就是vj>vi的直線條數。我是通過離散化+樹狀數組來做的,本想用set,沒想到iterator 不能相減求個數。。囧
第二問做的時候各種NC錯誤,各種NC想法,耗費了大概6個小時。。無語。。
其實就是多條線段求交點的掃描線法的變通。
維護一個堆和Hash表(判重),我偷懶,直接用set
里面存儲的是相鄰兩條直線相交的時刻,每次取出一次事件后更新下排名表和位置表,然后再將新產生的兩個相鄰的直線添加入set。
NC錯誤一:為了消除浮點比較誤差,將分數通分移項,沒考慮乘法時已溢出int。。。
NC錯誤二:更新排名表和位置表的時候,竟然十分詭異地用swap交換兩個排名表中的項。。。。應該是先交換位置表中的項,再更新排名表。解釋下,位置表就是你排第幾,排名表是排第幾的是誰
細心啊細心。。。無語
貼代碼
 1 # include <cstdio>
 2 # include <algorithm>
 3 # include <cstring>
 4 # include <set>
 5 # define N 250005
 6 using namespace std;
 7 # define lowbit(t) ((t)&-(t))
 8 struct node
 9 {
10     int x,v,id;
11 }data[N];
12 int n;
13 bool cmpv(const node &a,const node &b)
14 {
15     return a.v<b.v;
16 }
17 bool cmpx(const node &a,const node &b)
18 {
19     return a.x<b.x;
20 }
21 int arr[N],table[N],ranklist[N];
22 void add(int pos)
23 {
24     while(pos<=n)
25     {
26         arr[pos]++;
27         pos+=lowbit(pos);
28     }
29 }
30 int sum(int pos)
31 {
32     int res=0;
33     while(pos>0)
34     {
35         res+=arr[pos];
36         pos-=lowbit(pos);
37     }
38     return res;
39 }
40 
41 struct cmp
42 {
43     bool operator()(const pair<int,int> &a,const pair<int,int> &b) const
44     {
45         if(((long long)data[a.second].x-data[a.first].x)*(data[b.first].v-data[b.second].v)!=((long long)data[b.second].x-data[b.first].x)*(data[a.first].v-data[a.second].v))
46             return ((long long)data[a.second].x-data[a.first].x)*(data[b.first].v-data[b.second].v)<((long long)data[b.second].x-data[b.first].x)*(data[a.first].v-data[a.second].v);
47         else
48             return ((long long)data[a.first].x*(data[a.first].v-data[a.second].v)+data[a.first].v*(data[a.second].x-data[a.first].x))*(data[b.first].v-data[b.second].v)<
49                    ((long long)data[b.first].x*(data[b.first].v-data[b.second].v)+data[b.first].v*(data[b.second].x-data[b.first].x))*(data[a.first].v-data[a.second].v);
50     }
51 };
52 set<pair<int,int>,cmp> q;
53 int main()
54 {
55     scanf("%d",&n);
56     for(int i=0;i<n;i++)
57         scanf("%d%d",&data[i].x,&data[i].v);
58     sort(data,data+n,cmpv);
59     data[0].id=1;
60     for(int i=1;i<n;i++)
61         data[i].id=(data[i].v==data[i-1].v?data[i-1].id:data[i-1].id+1);
62     sort(data,data+n,cmpx);
63     memset(arr,0,sizeof(arr));
64     int ans=0;
65     for(int i=0;i<n;i++)
66     {
67         ans=(ans+i-sum(data[i].id))%1000000;
68         add(data[i].id);
69         ranklist[i]=table[i]=i;
70     }
71     printf("%d\n",ans);
72     for(int i=1;i<n;i++)
73         if(data[i].v<data[i-1].v)
74             q.insert(make_pair<int,int>(i-1,i));
75     for(int i=1;i<=10000&&!q.empty();i++)
76     {
77         pair<int,int> top=*q.begin();
78         q.erase(q.begin());
79         printf("%d %d\n",min(top.first,top.second)+1,max(top.first,top.second)+1);
80         swap(table[top.first],table[top.second]);
81         ranklist[table[top.first]]=top.first;
82         ranklist[table[top.second]]=top.second;
83         if(table[top.first]!=n-1&&data[top.first].x<data[ranklist[table[top.first]+1]].x&&data[top.first].v>data[ranklist[table[top.first]+1]].v&&cmp()(top,make_pair<int,int>(top.first,ranklist[table[top.first]+1])))
84             q.insert(make_pair<int,int>(top.first,ranklist[table[top.first]+1]));
85         if(table[top.second]!=0&&data[ranklist[table[top.second]-1]].x<data[top.second].x&&data[ranklist[table[top.second]-1]].v>data[top.second].v&&cmp()(top,make_pair<int,int>(ranklist[table[top.second]-1],top.second)))
86             q.insert(make_pair<int,int>(ranklist[table[top.second]-1],top.second));
87     }
88     return 0;    
89 }
90 


posted on 2010-11-04 12:38 yzhw 閱讀(243) 評論(0)  編輯 收藏 引用 所屬分類: data struct

<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

公告

統計系統

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品美女久久久浪潮软件 | 日韩午夜电影| 久久国产视频网| 欧美在线视频免费| 午夜在线播放视频欧美| 欧美在线中文字幕| 久久精品亚洲精品| 美女精品视频一区| 亚洲国产成人一区| 亚洲激情视频在线播放| 亚洲电影在线播放| 一区二区精品在线| 欧美一区二区福利在线| 蜜桃av一区二区三区| 欧美人与性动交cc0o| 国产精品黄色| 一区二区三区在线看| 一本色道久久99精品综合| 久久综合导航| 国产欧美丝祙| 国产精品超碰97尤物18| 国产热re99久久6国产精品| 国产视频在线观看一区二区三区| 久久久久国产精品人| 欧美成人国产一区二区| 亚洲国产精品成人| 日韩视频中文字幕| 欧美一级艳片视频免费观看| 久久躁狠狠躁夜夜爽| 欧美日韩一区综合| 精品99一区二区| 一区二区三区四区在线| 欧美在线观看视频| 欧美护士18xxxxhd| 亚洲欧美精品伊人久久| 欧美激情精品久久久久久黑人| 国产精品久久久一本精品| 亚洲国产视频a| 欧美一区二区三区播放老司机| 亚洲国产黄色片| 久久丁香综合五月国产三级网站| 欧美日韩在线播放一区| 亚洲国产精品高清久久久| 欧美在线免费视屏| 中国成人黄色视屏| 欧美精品免费看| …久久精品99久久香蕉国产 | 亚洲视频一二三| 欧美黄色免费| 性欧美暴力猛交另类hd| 欧美亚洲成人精品| 日韩亚洲在线观看| 麻豆久久精品| 欧美一区91| 国产女优一区| 香蕉成人久久| 一区二区三区四区蜜桃| 欧美激情亚洲另类| 黑人巨大精品欧美黑白配亚洲| 先锋影音国产一区| 亚洲婷婷国产精品电影人久久| 欧美欧美午夜aⅴ在线观看| 极品少妇一区二区| 免费精品视频| 久久综合一区二区| 亚洲国产成人在线| 欧美高清在线播放| 久久综合亚州| 亚洲精品久久久久久久久| 欧美国产另类| 久久米奇亚洲| 最新精品在线| 亚洲日韩视频| 亚洲精品视频在线观看免费| 日韩视频在线播放| 欧美成人黑人xx视频免费观看| 久久久av水蜜桃| 国语自产精品视频在线看8查询8| 久久久亚洲国产天美传媒修理工 | 亚洲精品资源美女情侣酒店| 欧美成人免费一级人片100| 亚洲人成网站999久久久综合 | 亚洲午夜激情网站| 国产农村妇女毛片精品久久麻豆| 久久黄色级2电影| 亚洲欧美在线网| 韩国av一区| 欧美激情一级片一区二区| 欧美日韩三级视频| 性久久久久久久久久久久| 午夜视频久久久| 亚洲国产一区视频| 日韩视频免费观看| 国产精品入口麻豆原神| 久色成人在线| 欧美日韩精品伦理作品在线免费观看| a4yy欧美一区二区三区| 亚洲一区二区在线免费观看视频| 国产综合色产| 亚洲欧洲一二三| 国产精品一区二区黑丝| 免费观看成人鲁鲁鲁鲁鲁视频| 免费日本视频一区| 亚洲制服av| 久久人人97超碰精品888| 日韩性生活视频| 午夜亚洲激情| 在线一区二区三区做爰视频网站| 欧美亚洲视频在线看网址| 亚洲国产欧美不卡在线观看| 亚洲视频在线一区| 亚洲国产精品综合| 亚洲性视频网址| 亚洲二区视频在线| 午夜精品久久久久久| 亚洲麻豆一区| 久久精品最新地址| 欧美一级精品大片| 欧美va亚洲va香蕉在线| 久久黄色小说| 欧美日韩综合在线免费观看| 欧美77777| 国内综合精品午夜久久资源| 亚洲免费小视频| 狠狠色狠狠色综合日日小说| 国产精品99久久久久久久女警 | 欧美国产日本高清在线| 一本一本久久| 亚洲欧美日韩国产成人精品影院| 国产精品免费一区二区三区观看| 久久se精品一区精品二区| 亚洲黄色视屏| 久久精品视频在线看| 亚洲永久免费观看| 午夜在线视频观看日韩17c| 亚洲免费在线| 亚洲欧美日韩一区二区三区在线| 亚洲一区免费视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲视频播放| 久久精品综合一区| 亚洲电影第1页| 一区二区日韩精品| 久久免费的精品国产v∧| 欧美精品在线观看播放| 国产精品白丝jk黑袜喷水| 国产无遮挡一区二区三区毛片日本| 国产一区二区三区丝袜| 国产欧美日韩亚洲精品| 亚洲精品一区二区三区婷婷月| 中文国产一区| 欧美成人精品高清在线播放| 99国产精品久久| 欧美在线观看视频一区二区三区| 久久激情视频久久| 国产精品s色| 亚洲精品在线免费| 快播亚洲色图| 亚洲综合三区| 欧美日韩在线不卡一区| 一区二区三区我不卡| 亚洲一区自拍| 亚洲韩国日本中文字幕| 欧美一区二区高清在线观看| 欧美日韩精品二区第二页| 亚洲精品自在在线观看| 欧美aa国产视频| 亚洲女性裸体视频| 91久久精品国产91久久性色tv| 久久都是精品| 国产亚洲精品一区二区| 午夜精品亚洲一区二区三区嫩草| 欧美**字幕| 欧美大片免费看| 中国成人在线视频| 亚洲看片免费| 国产精品扒开腿爽爽爽视频| 欧美伊久线香蕉线新在线| 91久久久国产精品| 国产精品一区二区三区乱码| 亚洲一二三级电影| 亚洲一区欧美激情| 伊人久久大香线蕉综合热线| 蜜桃久久av一区| 欧美日韩成人在线播放| 亚洲国产成人精品久久久国产成人一区| 午夜亚洲性色福利视频| 欧美在线视频二区| 亚洲国产一区在线| 亚洲一区二区在| 亚洲高清在线观看一区| 亚洲在线视频| 99视频精品全部免费在线| 午夜精品999| 亚洲电影免费观看高清| 午夜精品区一区二区三| 亚洲精品美女久久久久| 亚洲欧美一区二区在线观看| 亚洲视频1区| 欧美日韩精品免费观看视频完整|