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

APIO2012比賽總結

Posted on 2012-05-12 21:41 Mato_No1 閱讀(2933) 評論(6)  編輯 收藏 引用 所屬分類: APIO
【dispatching】
(這題國內數據極弱,暴力能80,下面的解法1,平衡樹即使用Splay Tree實現都能AC)
枚舉管理者所在的結點,然后在這個結點及其所有后代中找到權值前K小的,使得它們的權值和不超過限制,要求求出K的最大值。
解法1:將每個結點及其所有后代的權值存在一個平衡樹里,然后,對于每個結點,若不是葉結點,就將其所有的子樹中,找到最大的那棵子樹,它所表示的平衡樹不動,將其它的子樹表示的平衡樹上的所有結點強行拆開,并插入到這個子樹表示的平衡樹中(這叫啟發式合并),別忘了將該結點本身也合并到這棵平衡樹里。合并好了以后,通過每個點記錄的sum(下面說明),用類似于求結點排名的方法,就可以求出K的最大值了。
容易證明,這樣合并的話,在整個過程中插入的次數是O(NlogN)的,加上平衡樹插入本身的O(logN),總的時間復雜度為O(Nlog2N)。
具體實現起來有一些技巧:
(1)可以發現,在合并過程中,各個點本身并沒有變,而只是它們之間的關系發生了變化(從不在同一棵樹上變成在同一棵樹上了),因此為了節省空間,可以預先將所有的結點建好,每個結點除了自身權值以外還記錄mul(初始為1)、sz(初始為1)、sz0(初始為1)、sum(初始等于權值)等信息,其中mul為重復次數,sz為考慮mul情況下的樹的大小,sz0為不考慮mul的情況下的樹的大小(也就是實際結點個數),sum表示樹上所有結點的總權值(這個當然要考慮mul了)。之所以維護sz0,是因為每次可以通過找到sz0最大的子樹不動來加速。插入的操作是void ins(int r, int No),表示將結點No(是結點不是值)插入到以r為根的子樹里,注意這個結點No的mul可能大于1,因此在插入后維護的時候需要注意;
(2)由于在過程中會同時有多棵平衡樹存在,因此每個點還需要記錄一個額外的域rf,rf=-1表示該結點不是任何一棵平衡樹的根結點,rf>=0表示該結點是原樹中編號為rf的結點表示的平衡樹的根結點,同時記錄root[i]表示結點i表示的平衡樹的根結點編號,這樣就可以很方便地實現樹內外的對接(注意這兩個值的維護,尤其是將結點i本身合并到平衡樹里的時候,別忘了把root[i]改掉)。
解法2(正解):合并的時候使用可并堆(用左偏樹或斜堆實現),時間復雜度O(NlogN)。

【guard】
(這題其實很容易想到網絡流的話說……不過仔細研究一下就可以發現,由于報告上來的只是某一個區間內有木有人,而不是有幾個人,因此無法用網絡流的流量平衡來表示)
首先,某些區間報告木有人,這些區間內的點肯定不符合要求了,可以將它們刪掉,然后對于剩下的(可能是若干段)區間,合并起來,對結點從左到右重新編號(這一步可以用線段樹,也可以排序后直接掃描,見這里,本沙茶比賽時為了省事直接上線段樹了),然后就只需要考慮那些報告有人的區間了囧……當然,這些區間的端點也是要對應地重新編號的,編號完了以后,將所有包含別的區間的區間刪去(因為它們的存在木有意義),方法:對于所有重編號后的區間,將其按照先左端點遞增,后右端點遞減排序,然后設置一個棧,保證棧中的區間左右端點均嚴格遞增,按照排序之后的順序掃描每個區間,每次一個新區間入棧時,棧頂所有右端點大于等于這個新區間右端點的區間出棧,再將新區間入棧,這樣最后棧中的區間就是保留下來的區間了囧……而且已經排序……
然后,如果問題是求至少要多少個人的話,就是一個經典的貪心模型了,掃描排序后的區間,如果一個區間內還木有任何人,就在它的右端點處放一個人。顯然,除了這些放了人的區間的右端點之外,其余的點肯定都不是必須放人的(因為現在已經有一個方案使它們不放人了)。現在的問題是,這些右端點處是否必須放人。
設F[i]為第i個區間及其之后的區間當中,若要每個區間內都有人,至少要幾個人。若第i個區間的右端點不小于最后一個區間的左端點,則F[i]=1(在第i個區間右端點放一個人即可),否則,找到最小的j,使得第i個區間的右端點小于第j個區間的左端點(這個顯然可以二分查找得到),則F[i]=F[j]+1。這樣從后到前推一遍即可。然后,再從前到后,按照上面的貪心算法的流程掃一遍,如果遇到第i個區間的右端點需要放人:若第i個區間的長度為1,顯然這里必須放人,否則嘗試在第i個區間的倒數第2個位置(即右端點之前的那個位置)放人,而右端點不放人(可以證明,不會后來又把這個右端點這里放上人的),類似用二分查找的方式找到這個j,然后看一下(_F + F[j] + 1)(_F為第i個區間前面放人個數)是否大于K,若大于K,則第i個區間的右端點必須放人,否則不必須放人。
此外還有兩種特殊情況,一是M=0的時候在去包含的時候要特判一下(其實這時可以直接特判,若N=K,則所有的地方都必須放人,否則就是-1);二是,如果去掉那些肯定木有人的點后,剩下的點的個數剛好等于K(不可能小于K的,因為肯定有解),則不用貪心了,剩下所有的地方肯定都必須放人。
總時間復雜度O(NlogN + MlogM);
這里千萬要注意的一點是,應該先將所有區間重編號再去包含,而不應該先去包含再重編號!!!因為可能有兩個區間本來是不包含的,但重編號以后,包含了。(本沙茶比賽的時候就是這里木有注意到,跪了3個點,杯具了)

【kunai】
40分的暴力做法:枚舉兩個動點,求出它們是否會相撞以及相撞的時間,然后將所有相撞事件按照時間排序,掃描排序后的每個事件,如果相撞的兩個動點都還在,就將它們消去,然后可以求出每個動點移動的距離,求一下并集(線段樹)即可;(本沙茶當時主要是實在木有時間寫這題了,因此連暴力都木有寫)
AC做法:很明顯,一個動點一旦被消去,就不會再次出現了,因此對于每一個點,只需要找到最先和這個點相撞的點即可。顯然能夠相撞的兩個點必然位于同一行/列/對角線上且方向滿足一定限制(其實一共只有6種情況:同一行一種,同一列一種,同一左上右下對角線兩種,同一右上左下對角線兩種)。因此,枚舉這6種情況,直接用掃描法得到最先與它相撞的動點,取相撞時間最小的那個即可,如果都找不到,這個點就是永存的。這樣相撞事件的總數就減少到了O(N)級別,總時間復雜度就是O(NlogN)。
注意:有可能在同一時間有多個動點在同一位置相撞,因此,對于同時發生的相撞事件,應該將它們一起處理,涉及到的點一起消去。

Feedback

# re: APIO2012比賽總結  回復  更多評論   

2012-05-13 07:49 by PerSeAwe
額...求題目大意...

# re: APIO2012比賽總結  回復  更多評論   

2012-05-13 09:46 by roosephu
求題目大意。。

# re: APIO2012比賽總結  回復  更多評論   

2012-05-15 17:10 by flydutchman
神犇T2咋生成數據的?

# re: APIO2012比賽總結  回復  更多評論   

2012-05-18 16:00 by 弱B
T2 為什么要“將所有包含別的區間的區間刪去” 為什么是木有意義呢

我的理解這句話是

在后來的編號區間中存在[1,10] [4,5]這2個區間

是要刪除[1,10]區間。

但是若有10個忍者呢....

>.<

# re: APIO2012比賽總結  回復  更多評論   

2012-05-18 16:33 by Mato_No1
@弱B
題目中說明了一定有解

# re: APIO2012比賽總結  回復  更多評論   

2012-05-21 11:01 by wzj_1232
@弱B
T2中區間[x1,y1]是指在[x1,y1]內一定有忍者,并不是說在[x1,y1]外就不能有忍者。所以在滿足[4,5]內有忍者的條件下一定滿足[1,10]有,可以無視[1,10],但區間[1,10]內是可以有10個忍者的。

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一区二区日韩精品| 亚洲天堂视频在线观看| 亚洲女ⅴideoshd黑人| 国产精品美女主播| 久久精品在线观看| 快播亚洲色图| 亚洲一区精品视频| 久久久午夜电影| 夜夜夜精品看看| 欧美一级播放| 一区二区三区免费网站| 欧美伊人久久久久久午夜久久久久 | 亚洲一区二区三| 在线国产精品播放| 亚洲一区二区三区免费视频| 国内外成人在线| 99国产精品私拍| 一区在线电影| 亚洲一二三区在线| 亚洲免费观看高清在线观看| 欧美亚洲在线观看| 一区二区三区精品视频| 久久成人一区| 亚洲男人影院| 欧美国产日韩在线| 蜜臀91精品一区二区三区| 国产精品久久久久久久一区探花| 免费在线观看精品| 国产精品永久免费视频| av成人免费在线| 久久久一本精品99久久精品66| 一本到12不卡视频在线dvd| 久久国产精品黑丝| 欧美亚洲在线| 国产精品jizz在线观看美国 | 欧美激情久久久久| 久久精品免费电影| 国产精品乱人伦一区二区| 亚洲国产精品毛片| 国语自产精品视频在线看| 一区二区三区你懂的| 亚洲国产合集| 久久免费精品视频| 久久综合给合| 今天的高清视频免费播放成人 | 一区二区激情小说| 欧美激情一区二区| 亚洲第一精品福利| 亚洲区欧美区| 欧美国产日韩精品免费观看| 欧美成人中文字幕| 亚洲国产人成综合网站| 蜜臀久久99精品久久久久久9 | 国产精自产拍久久久久久| 亚洲视频国产视频| 亚洲一区三区视频在线观看| 欧美日韩国产综合网| 亚洲区一区二区三区| 亚洲人体一区| 欧美日韩国产一区二区三区| 日韩一二三区视频| 国产精品99久久久久久白浆小说| 欧美精品久久久久久久久老牛影院| 亚洲毛片在线免费观看| 美女黄色成人网| 亚洲国产精品毛片| av成人免费在线观看| 国产精品扒开腿做爽爽爽视频| 一本久久综合亚洲鲁鲁五月天| 亚洲私拍自拍| 国产亚洲一区二区三区| 欧美一区午夜视频在线观看| 久久免费精品视频| 欧美成人精品不卡视频在线观看| 亚洲国产精品专区久久| 欧美日韩国产另类不卡| 亚洲一区在线播放| 久久久综合香蕉尹人综合网| 亚洲第一中文字幕| 欧美日韩免费视频| 正在播放亚洲| 一区二区三区在线高清| 欧美wwwwww| 99视频精品全国免费| 欧美一区二区三区四区视频| 国产综合欧美| 欧美国产综合一区二区| 亚洲视频自拍偷拍| 乱中年女人伦av一区二区| 99精品视频网| 国产色产综合产在线视频| 欧美h视频在线| 亚洲一区二区影院| 免费成人性网站| 亚洲影院免费观看| 精品成人久久| 国产精品另类一区| 老司机成人网| 亚洲免费视频观看| 亚洲国产精品一区在线观看不卡| 午夜视频精品| 亚洲精品国精品久久99热| 国产精品爽爽爽| 欧美国产日本在线| 欧美在线免费一级片| 亚洲精品视频免费观看| 久久一区二区三区国产精品 | 久久国产黑丝| 一本大道久久精品懂色aⅴ| 国内一区二区在线视频观看| 欧美人成网站| 久久影院亚洲| 欧美一级视频精品观看| 99国产精品99久久久久久粉嫩 | 国产欧美日韩在线视频| 欧美精品一区二区精品网 | 久久久久国产精品一区二区| 99视频精品在线| 尤物在线精品| 国产视频亚洲| 国产精品豆花视频| 欧美成人精精品一区二区频| 久久国产精品电影| 欧美一区1区三区3区公司| 99热免费精品| 亚洲狠狠婷婷| 亚洲大胆人体视频| 久久综合久色欧美综合狠狠| 亚洲欧美日韩精品久久久| 日韩亚洲一区在线播放| 亚洲黄色在线视频| 最新日韩在线视频| 亚洲国产精品一区二区www在线| 国内精品久久久久久久果冻传媒| 国产精品久久二区| 国产精品久久久久久久久借妻 | 久久裸体视频| 久久久久国产精品一区| 免费在线观看精品| 久久精品久久综合| 久久久国产成人精品| 久久精品国产77777蜜臀| 午夜精品久久99蜜桃的功能介绍| 亚洲天堂av在线免费观看| 99re热这里只有精品免费视频| 亚洲国产欧洲综合997久久| 欧美mv日韩mv国产网站app| 狂野欧美激情性xxxx欧美| 久久久久久久久久看片| 久久久噜噜噜久久| 免费观看欧美在线视频的网站| 麻豆精品网站| 欧美国产激情| 亚洲人成网站在线观看播放| 亚洲激情六月丁香| 99精品欧美一区| 亚洲一卡久久| 欧美一区二区在线播放| 久久久av水蜜桃| 欧美激情二区三区| 欧美日韩免费观看一区二区三区| 欧美体内she精视频| 国产精品一区二区你懂得| 国产日韩一区二区| 在线日韩中文| 亚洲小说春色综合另类电影| 午夜精品久久久久久久久 | 欧美日韩精品一本二本三本| 国产精品igao视频网网址不卡日韩| 国产精品三级久久久久久电影| 国产一区二区0| 亚洲人成在线影院| 午夜精品一区二区三区在线| 国产一区自拍视频| 亚洲高清久久久| 亚洲午夜小视频| 久久综合亚州| 日韩亚洲欧美成人一区| 性色av香蕉一区二区| 美女精品视频一区| 国产精品久久久久免费a∨大胸 | 亚洲国产美女精品久久久久∴| 9国产精品视频| 久久精品国产第一区二区三区| 你懂的成人av| 国产精品欧美风情| 亚洲电影在线免费观看| 亚洲一区免费在线观看| 欧美va天堂在线| 亚洲免费视频成人| 欧美精品九九| 黄色精品在线看| 亚洲一区二区三| 欧美二区在线播放| 亚洲一区二区三区在线看| 免费中文字幕日韩欧美| 国产亚洲精品一区二区| 一本色道久久88亚洲综合88| 久久婷婷综合激情| 中文国产一区|