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

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的情況下的樹的大?。ㄒ簿褪菍嶋H結點個數),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>
            亚洲高清电影| 欧美日韩裸体免费视频| 女同一区二区| 免费一级欧美片在线播放| 欧美大片免费观看在线观看网站推荐 | 欧美一区国产在线| 亚洲欧美日韩精品久久久| 欧美一区二区福利在线| 久久精品99| 欧美激情第五页| 制服丝袜激情欧洲亚洲| 欧美激情视频给我| 国产欧美精品国产国产专区| 国产精品成人一区二区网站软件 | 亚洲日本精品国产第一区| 国产麻豆日韩欧美久久| 在线播放日韩| 亚洲综合色丁香婷婷六月图片| 国产精品中文字幕在线观看| 黑人中文字幕一区二区三区| 亚洲精品一区二区三区在线观看 | 久久男女视频| 亚洲人成7777| 午夜精品网站| 欧美日韩不卡| 久久免费黄色| 国产精品第一页第二页第三页| 免费看黄裸体一级大秀欧美| 久久成人羞羞网站| 蜜臀久久99精品久久久画质超高清| 午夜精品偷拍| 欧美另类变人与禽xxxxx| 老司机一区二区| 国产精品成av人在线视午夜片| 欧美精品三级日韩久久| 久久综合色影院| 国产精品地址| 一区二区三区精品国产| 欧美成人精品一区二区| 亚洲自拍16p| 欧美精品国产精品| 亚洲激情影视| 久久久久久久国产| 久久综合九色99| a91a精品视频在线观看| 欧美成在线观看| 在线观看成人小视频| 久久爱www久久做| 亚洲午夜一区二区三区| 性欧美暴力猛交另类hd| 国产精品videosex极品| 亚洲精品视频在线看| 欧美成熟视频| 久久亚洲私人国产精品va| 国内精品久久久久久| 久久久91精品国产一区二区三区 | 国产精品第一页第二页第三页| 欧美四级剧情无删版影片| 亚洲精品一区二区三区不| 在线亚洲成人| 亚洲国产成人av好男人在线观看| 欧美日韩中文字幕在线视频| 亚洲免费av片| 黄色成人精品网站| 久久久夜色精品亚洲| 性色一区二区| 国产日韩在线不卡| 久久久久国产免费免费| 欧美在线视频在线播放完整版免费观看 | 国产精品女主播在线观看| 99国产精品99久久久久久| 亚洲国产日韩一区| 欧美久久视频| 国产视频自拍一区| 久久电影一区| 亚洲三级电影在线观看| 欧美精品免费在线观看| 一区二区三区成人精品| 亚洲视频综合| 在线观看一区二区精品视频| 亚洲国产精品视频一区| 亚洲男女自偷自拍| 久久综合成人精品亚洲另类欧美 | 欧美精品性视频| 在线亚洲精品| 欧美一级夜夜爽| 亚洲乱码国产乱码精品精天堂| 久久黄色网页| 久久综合九色欧美综合狠狠| 国产欧美日韩一区二区三区在线| 亚洲国产视频直播| 欧美综合激情网| 麻豆精品在线视频| 国产一区二区黄色| 亚洲一区二区三| 欧美影片第一页| 99国产精品久久久| 欧美激情久久久| 国产精品区二区三区日本 | 久久综合成人精品亚洲另类欧美| 国产精品女人网站| 一本色道久久88精品综合| 亚洲香蕉伊综合在人在线视看| 欧美激情自拍| 亚洲在线一区二区三区| 久久久夜色精品亚洲| 午夜视频一区二区| 欧美日韩国产123区| 蜜桃av噜噜一区| 欧美日韩在线观看一区二区| 国产精品视频免费在线观看| 一本一本久久| 久久国产日韩| 性色av香蕉一区二区| 国产精品a久久久久久| 亚洲一级免费视频| 美女黄网久久| 久久亚洲一区二区| 国产精品美女视频网站| 亚洲精品一区二区三区福利| 久久综合九色欧美综合狠狠| 韩国一区电影| 亚洲午夜一二三区视频| 亚洲色诱最新| 欧美日韩精品一区视频 | 久久久欧美精品sm网站| 亚洲一线二线三线久久久| 能在线观看的日韩av| 麻豆精品视频在线| 一区在线观看视频| 欧美中文字幕不卡| 久久九九99视频| 黄色av成人| 久久夜色精品亚洲噜噜国产mv | 国产精品亚洲美女av网站| 亚洲免费成人| 亚洲婷婷综合色高清在线| 欧美日韩成人网| 亚洲男人天堂2024| 欧美午夜电影网| 一区二区三区免费在线观看| 中文在线一区| 国产精品vvv| 欧美一区2区三区4区公司二百| 亚洲成色精品| 免费成人av在线| 亚洲国产免费看| 正在播放日韩| 国产精品国产精品| 欧美一级一区| 亚洲天堂成人在线观看| 日韩视频精品在线| 亚洲精品国产系列| 欧美日韩视频专区在线播放 | 欧美一区二区三区精品| 亚洲综合视频1区| 国产精品久久久久久久久动漫| 久久夜色精品国产噜噜av| 在线国产日韩| 欧美欧美全黄| 欧美中文在线免费| 亚洲国产美女| 欧美在线高清| 亚洲欧洲精品一区二区三区不卡 | 日韩午夜在线播放| 国产精品99一区二区| 欧美一区二区在线免费播放| 一区二区日本视频| 国产精品第2页| 久久狠狠亚洲综合| 欧美高清视频一区二区| 美女黄毛**国产精品啪啪| 亚洲人屁股眼子交8| 国产精品久久久久99| 久久青草久久| 欧美亚洲一区在线| 伊人精品在线| 欧美性大战xxxxx久久久| 久久精品女人| 在线视频精品一| 欧美国产精品日韩| 欧美在线视频观看| 在线亚洲美日韩| 亚洲精品乱码久久久久久| 国产一区二区精品久久91| 欧美日本不卡视频| 免费av成人在线| 久久精品国产在热久久 | 亚洲精品久久久久久久久久久久| 一区在线电影| 国产精品萝li| 亚洲天堂网在线观看| 亚洲丶国产丶欧美一区二区三区| 亚洲电影免费观看高清| 国产精品乱码妇女bbbb| 欧美激情精品久久久久久黑人| 亚洲国产综合视频在线观看| 亚洲人成高清| 在线电影一区| 亚洲成人在线观看视频|