2023年藍橋杯B組C C 決賽題解

2022-03-06 19:42:41 字數 1524 閱讀 1325

三重迴圈 列舉a,b,c的值,如果滿足兩個條件:3個a + 7個b + 1個c = 15 ,4個a + 10個b + 1個c = 420 就是一組合法的解。 輸出a+b+c就是答案

一開始以為很難,看了題解 都是用dfs暴力搜出來的

國賽第二題永遠是用dfs解決。。

下面部落格dfs的很完美啊!

參考部落格:

思路:dfs(x,y) 正方形想象成邊長是47+46+61的網格(每個網格邊長為1),

還剩下19個小正方形;

從 (0,0) 網格點開始搜,作為小正方形的(左上角的頂點),列舉19個小正方形放在當前網格裡

搜尋過程中標記是否使用過這塊網格、是否使用過這個小正方形

並查集思想

30%資料點:

按題目要求 全排列子串,用stl內建函式在主串中查詢,string.find(s) != string::npos;

30-50%資料:

參考部落格:

100%資料點:

對於每個子串,先對它排序,從主串中依次擷取8位,如果這8位對應的字母個數 等於 子串的各個字母個數,說明匹配上(因為子串順序可以任意排列的,對比字元出現的次數就能比較是否匹配),可以用雜湊表優化查詢

參考部落格:

10%資料點:

先想到暴力列舉,題目讓我們找3個位置當作集會點,那我們就在1~l-1區間內列舉3個集會點,三重迴圈

參考部落格:

上面部落格的做法中,我們有兩點我們可以在優化時用到:

1.前三個集合地點肯定是要建在某個人的家裡,這樣可能更加省時

2.字首和預處理,sum[i] 表示 1號家庭 到距離起點i 之間 所有家庭到i集會的花費總和,那麼sum[i] - sum[j] (j < i) 就可以算出 從j到i之間所有家庭到i集會的花費總和,我們可以在時間複雜度o(n)下完成預處理!

另外,如果沒想到暴力列舉和預處理,我們可以用dfs搜尋來做這10%的資料,我自己用dfs做的。先不放上**。

10%-30%資料點:

分治 + 預處理時間複雜度o(l^2n),如果資料比較弱可以過30%資料

參考部落格:

上面部落格做法,值得參考的點:分治演算法。具體怎麼分治呢?題目讓我們選3個位置當作集會點,也就等於讓我們把1l區域劃分成4段,例如樣例110,我們從1~10中劃分4段即可。

缺點:預處理時間複雜度太高了o(l^2n)

100%資料點:

上面部落格做法的缺點:作者沒有意識到前面我們說的 集會點在某個人家裡更省時間,我們把作者的對距離1~l區間分治 改為對家庭1~n分治,再用字首和預處理sum[i] 就可以完成

我不知道分治演算法的時間複雜度怎麼分析。。大概能過100%資料,如果過不了,當我沒說。。

正常人的做法:dp動規,首先我認為這題和bzoj 葉子合併 很像。

dp[i][j]表示前i個家庭建立了j個集會點時的最小花費, 自己想的狀態轉移方程:dp[i][j] = min(dp[i][j], dp[0~i-1][j-1] + sum[i] - sum[0~i-1]) 但是題目中資料n最大達到1e6,兩層迴圈dp肯定不行,那怎麼做呢。。我也不知道

讀不懂樣例,不寫了

2023年藍橋杯B組C C 決賽題目

從昏迷中醒來,小明發現自己被關在x星球的廢礦車裡。礦車停在平直的廢棄的軌道上。他的面前是兩個按鈕,分別寫著 f 和 b 小明突然記起來,這兩個按鈕可以控制礦車在軌道上前進和後退。按f,會前進97公尺。按b會後退127公尺。透過昏暗的燈光,小明看到自己前方1公尺遠正好有個監控探頭。他必須設法使得礦車正...

2023年藍橋杯決賽 C C 大學A組第一題

在2行5列的格仔中填入1到10的數字。要求 相鄰的格仔中的數,右邊的大於左邊的,下邊的大於上邊的。如 圖1.png 所示的2種,就是合格的填法。請你計算一共有多少種可能的方案。請提交該整數,不要填寫任何多餘的內容 例如 說明性文字 接下來我們進行分析,我們將這個 看成乙個二維陣列a 2 5 我們發現...

藍橋杯 B組 決賽 感悟

其實並不是太想寫這個感悟,雖說沒什麼臉面,但還是有必要寫的,畢竟菜鳥還是得多反思呀。在藍橋盃國賽前一天晚上,自己的 qq 號被盜了,然後 訊息,我手速太慢,好叭,是它發的速度太快了,好多都沒撤回,當時弄得心態很崩.看來遇啥啥不順。在賽場上,其實個人認為做的比較小心,畢竟當時不能判呀,但是還是嗚嗚嗚 ...