GDKOI 2013 參賽總結

2021-06-28 13:26:10 字數 3030 閱讀 5318

gdkoi 2013 參賽總結

第一次去dgkoi,見到了很多大神,也發現了自己的差距。

day 1:

p1:琪露諾的教室

在乙個w*h的矩形中,有n對整點,這2*n個點互不重疊,先要用線將每對點連線,線可以任意彎曲、環繞,但不能穿過2*n個點中的任何乙個。問是否存在合法方案。

剛看題目時我就傻了,第一天第一題就這麼難,我自己真實太水了。不過畫了幾個圖後,我發現這題不過是排除兩個頂點都在邊上邊,然後判斷剩下的邊是否相交。於是就想到了差積。不過我對差積的公式的記憶很模糊,幸好隨便寫的一條公式,經檢驗後竟是正確的。於是我長舒一口氣,也沒怎麼細想就開始敲**。沒有注意到有兩個頂點在同一條邊界上的線的情況,這導致我這題只拿了18分。

p2:mmm比身高

有n個人(編號0—n-1),給出m個關係,u v a b表示a≤height[v]-height[u]≤b。現在問這n個人當中最高的那個人比0號高多少。

沒有比這更裸的查分約束系統了。就是把題目轉化為幾個不等式,然後用最短路進行查分約束。我是用spfa來做的,紀錄乙個點入隊次數來判斷有無負環。這道題可能是全天得分率最高的題目了,因為很多大神第一題都敲錯了。

p3:琪露諾的完美算術課

設a,b,c為乙個三角形的三條邊。給出[x,y],求出a∈[x,y]且滿足c^2≤a^2+b^2≤c^2+1的邊長均為正整數的三角形個數。(2≤x,y≤10000000)

這道題真是純粹的數學題。我果斷打表,只過了3個點。這是我第一次在考試時打表,感覺很不錯。而且考完後我發現大部分人都是打表,都是衝著那12分去的。但用的時間卻不同,有的人用了半個小時,有的用了5分鐘,有的則用了1分鐘。因為他們的列舉方法不同,而打表時候電腦很卡,容易影響比賽心情。所以,儘管時暴力打表,還是要盡力優化。

正解:將式子轉化一下:

a^2=c^2-b^2=(c+b)(c-b)

a^2-1=c^2-b^2=(c+b)(c-b)

這樣我們很容易想到將a^2和a^2-1分解因式,又由於c和b都必須是整數,因此必須保證c+b和c-b的奇偶  

性相同。我們可以將被分解數進行質因數分解,然後將不是2的每個質因數的個數加1然後相乘。然後講剩  

餘的2分配到兩堆中,這些都可以用較簡單的組合數學來解決。但是這還是不夠的,因為將x到y的每個數都  

p4:大山王國的城市規劃

有乙個長度在100000以內的字串,想找盡可能多的回文子串,而且使得這些回文字串互不為對方的子串,問最多能取多少個子串。

第四題,我看完題目後就覺得很神奇,100000的字串,難道有一種演算法能有o(n)的效率?比賽時,我做到這一題時還剩兩個小時,於是我用暴力演算法,能過乙個點是乙個點。結果我就真的只過了乙個點。而直接輸出字串中字元種數也是過乙個點,但程式設計複雜度卻是天壤之別。

正解:超越理解範圍

day1總的來說考的還算不錯,但是考試時自己心裡很沒底,因為對所用的演算法沒有信心。所以,以後要好好複習高階演算法。

day 2:

p1:mmm軍團

題目大概是說,有n個人,每個人認同若干個人,現要在這n個人當中挑選一些人,使得滿足以下條件:選中的人要互相認同,且他們只認同選中的人。被選中的人要被所有的人認同。問最多能選多少人?

這題還挺簡單的,n範圍很小,用廣搜直接過。

p2:貪吃蛇

題目給出乙個n*m的地圖,地圖上的每個格仔都有一些食物,食物的分值可能為正,也可能為負。遊戲開始時,可選擇乙個初始位置和乙個初始方向。遊戲開始後,沿著原來的方向前進,並累加經過格仔的食物的分值。遊戲中只能拐一種彎(要麼全部向左拐,要麼全部向右拐),越出邊界或者所走路線交叉,遊戲就結束。問遊戲結束時最高分是多少。

我看了32*32的資料範圍後就認為這是道搜尋。但沒想到什麼好的剪枝方法,於是就是最基本的搜尋。寫了我200多行,幸好沒出錯。誰能想到這竟是一道dp題。

正解:由於只能拐一種彎,通過分析樣例,發現路徑可以在中間分開,分成兩個矩形,而這兩個矩形就是兩個子問  

題。繼續分析,矩形中走若干步後兜回來,又會形成乙個更小的矩形,這又是乙個更小的子問題。因此我們  

可以預先通過dp,計算出以每乙個點為起點,另乙個點為終點的矩形,轉的是哪一種彎,得到的最高分是多  

少。dp完後,在列舉分割的位置,然後列舉兩邊的矩形,最後統計一下求最大值。

dp時間複雜度是o(n^4*2),列舉時用了o(n^5)的時間。

p3:mmm二進位制

大意是,給出n(1≤n≤50000)個非負整數。現有m(1≤m≤100000)個操作,操作有5種型別:

(1)and l r x 將第l到r的所有數都與x進行and操作。

(2)or l r x 將第l到r的所有數都與x進行or操作。

(3)xor l r x 將第l到r的所有數都與x進行xor操作。

(4)qxor l r 詢問第l到r的所有數進行xor操作的結果。

(5)qsum l r 詢問第l到r的所有數之和。

處理qsum時,我想到了樹狀陣列,但qxor我就只能暴力列舉了。本以為這能讓我和全部列舉的拉開一點差距,但後來發現結果是一樣的。

正解:線段樹

p4:mmm函式

題目大意為,給出一棵有n(0

0 p w 將節點p的美味值加w。

1 p 詢問節點p的美味值。

用了個類似 最近公共祖先 的方法,可惜乙個點沒過。

正解: 據說是樹鏈剖分。

day 2 考完後,坐在我旁邊的乙個同學說:

「我去,肥平你怎麼題題都用搜尋?」

「如果我會用其他的演算法,一定不用搜尋。」我只能這樣回答。

這次比賽是我運氣好,題目都很極端,要麼很簡單,人人會做,要麼很難,大神都不會。

而我則因為簡單題沒有出錯,所以成績還可以。但不能說明我的實力。

GDKOI2013 大山王國的城市規劃

建出回文自動機,自動機上的每乙個節點都代表乙個回文串,我們考慮乙個串不是另乙個串子串的問題。分情況考慮,首先選的節點必須不同。然後就是兩邊個去掉乙個字元 重複若干次 不能相等,反應到自動機上就是沒有父子關係。還有一種就是不能是字首字尾回文串,反應到自動機上就是fai lfail fail 樹上沒有父...

GDKOI模擬2016 01 24總結

這場比賽爆零了。原因有很多。現就巨集觀而言,進入初三以後,我在資訊學方面遇到很大的瓶頸和壓力,加之初三學習的重負,oi方面一直有些萎靡不振。儘管退出了培優班,但是我發現由於沒有足夠完善的時間安排,我還是不能保證每天都去機房,很多題都沒時間改,更別提去做其它題目了。學習效率也不是很高,當然這些會形成惡...

GDKOI前模擬總結

連續做了4天的模擬賽,比賽之前打擊一下自信心是很好的事情。一開始看題發現第一題都不會感覺生活沒有希望。然後看第二題,好像做過很多遍了。第三題看了題面都覺得不可做,接著第四題,一直在化簡式子,沒有找到突破點。然後先打了第二題。接著第一題想錯了,以為匹配是對的,對拍的時候發現錯了。然後一直調後來發現整個...