由於跑a
區去面試的原因,這次比賽沒參加,回來時已經四點多了,過了
h題,然後
d題交了一發,沒考慮乙個盟國只有乙個國家的情況,
wa了一次,之後就結束比賽了…具體說下每道題吧。
a. 檔案系統
簡單模擬題。 把題目意思理清楚就比較簡單了。每個組給乙個編號,並記錄它的成員,然後對每個檔案進行判斷就可以了。(徐偉拿了一血!!)
b. a ****** geometric problems
題目意思是給n個點,求最多能選多少個點組成凸多邊形。這題一開始沒想到思路,後來在博兄的指點下才明白了……明白之後就覺得比較簡單了,果斷好久沒寫計算幾何了,反應比較遲鈍了。
首先對n個點組成的n*(n-1)條線段進行極角排序,從小到大。因為我們逆時針來看,後一條線段的極角一定要大於前一條的。 然後列舉第i個點為起點時,遍歷排序好後的線段陣列,不斷更新其他點的狀態,即到這點之前最多有多少個點。 時間複雜度 o(n^3)
c. yesorno
首先得反應出來其實兩個等價的串,如果將它們看成乙個環的話,它們是相等的。怎麼看出這點來呢,可以在紙上畫一畫找規律。其實如果我們將乙個串的首尾連起來看,x操作其實只是將首尾位置變換到了x操作的點的位置,還是原來那個環,絲毫沒變。明白了這點後就好辦了。
先將兩個a串連線起來,只要b串是其子串即可。這裡採用kmp判斷。貌似題目資料弱了,直接暴力o(n^2) 判斷也是可以0ms ac的。
d. 盟國
題目涉及兩個操作,乙個是兩個國家結盟,另乙個是某個國家退盟,很容易反應出是並查集。但是直接搞的話,退盟操作就有些麻煩了。
可以考慮給每個國家乙個編號,退盟之後的國家再給乙個新的編號,即放到末尾去,那它之前那個編號就不用管了,因為它已經沒有任何影響了,這樣我們就對那些編號進行並查集就可以了。需要注意的乙個地方就是:有可能乙個盟國只有乙個國家,這個時候退盟不會增加盟國數量,注意這點這題就沒問題了。
e. climb stairs
簡單dp; dp[i]表示爬i層樓有dp[i]種方式;
dp[i] = dp[i-a] + dp[i-b]; dp[0] = 1;
所以答案就是 dp[a]*dp[b-a]*[n-b] (af. programcaicai's trees
樹形dp ,比較簡單
dp[i][0] 表示第i個點才用0方式時以它為根的子樹的最小的代價
dp[i][1] 表示第i個點才用1方式時以它為根的子樹的最小的代價
dp[i][0] = c[i][0] + σ min(dp[j][0]+ c00 , dp[j][1]+ c01)
dp[i][1] = c[i][1] + σ min(dp[j][0]+ c10 , dp[j][1]+ c11)
其中j 為i的子節點
答案就是 min(dp[1][0],dp[1][1]);
g. 數字密碼
這題比較蛋疼,一開始大意理解錯了,以為是連續字串,直接就想到ac自動機dp了,**都敲完了,發現錯了,sad……
這裡是子串行,要注意。 乙個直接的想法就是乙個n維dp,匹配到每個串的第多少位時所需的最少的位數,然後轉移自然即使列舉下一位取哪個字串的下一位了。 不過n維dp直接搞在c++裡面應該不好弄。我想的辦法是將這個狀態hash成乙個整數,因為最多7個串,所以可以將它採用7進製方式來hash,
然後就可以直接dp了。 實現的時候還是要小心點,能優化的地方有優化一下,不然會超時。
h. wuyou
直接dfs就好了,引數記錄這一位是否是第一位,以及a 是否已經小於b 了;
當a 已經小於 b 了,那麼碰到問號,就直接取 9 就行了
如果還沒:
如果這一位不是問號,並且在這一位上已經大於b了,那麼直接返回
不然這一位就直接是a 在這一位的值了
如果是問號: 那麼想取與b相等的,然後考慮比b小1的情況
細節認真想想就ok了 !
第一次寫題解,寫得比較爛,如果大家要**可以qq問我要,有更好的解法可以qq跟我交流。
Foj 1205 小鼠迷宮問題
問題描述 小鼠a與小鼠b身處乙個m n的迷宮中,如圖所示。每乙個方格表示迷宮中的乙個房間。這m n個房間中有一些房間是封閉的,不允許任何人進入。在迷宮中任何位置均可沿上,下,左,右4個方向進入未封閉的房間。小鼠a位於迷宮的 p,q 方格中,它必須找出一條通向小鼠b所在的 r,s 方格的路。請幫助小鼠...
FOJ 1475 不同的單詞
這道題讓我一次性ac了,但儘管如此,也讓我學到了一點,那就是如何將calloc函式的返回值強制轉換成指向一維陣列的方法!嘻嘻 是好心的教會我的 include include include int n,i,j,flag char p 21 str 21 int main while scanf d...
FOJ 1402 豬的安家
這道題目的基本思想就是必須求前n 1個數的最大公約數。比如這邊為了方便大家理解,給出一組測試資料。33 1 5 17 2 10 1 這組資料的最終結果是121 下面我們就來分析一下。定義乙個函式gongbeishu 求前n 1項的最小公倍數。首先,我們定義變數 gbs 表示前n 1個數的最小公倍數。...