為了準備下次比賽(2019a組c++),這裡只寫了大題的題解。(一部分原因也是因為要考研,時間不太夠)
對於下次比賽很有信心,因為看了下大題基本會做。想起去年看這些題還要思考很久就感慨萬分啊,當時以為自己智商不過,哪知道系統的學過演算法後能提公升這麼多思維。所以有的看演算法題崩潰的道友們不要擔心,慢慢學總是學得會的,多學習演算法還是挺有好處的。加油吧!
下面的**注意:為了簡化**和減少**錯誤,我把for迴圈寫成了巨集定義。還有**沒有經過嚴格測試和證明,如果有錯誤還希望道友或大佬們指出,如果有更靈活,或者更有趣的思路,也希望大家分享交流~
【問題背景】
小h前往美國參加了藍橋杯國際賽。小h的女朋友發現小h上午十點出發,
上午十二點到達美國,於是感嘆到「現在飛機飛得真快,兩小時就能到美國了」。
小h對超音速飛行感到十分恐懼。仔細觀察後發現飛機的起降時間都是當地時間。
由於北京和美國東部有12小時時差,故飛機總共需要14小時的飛行時間。
不久後小h的女朋友去中東交換。小h並不知道中東與北京的時差。
但是小h得到了女朋友來回航班的起降時間。小h想知道女朋友的航班飛行時間是多少。
【問題描述】
對於乙個可能跨時區的航班,給定來回程的起降時間。
假設飛機來回飛行時間相同,求飛機的飛行時間。
【輸入格式】
從標準輸入讀入資料。
乙個輸入包含多組資料。
輸入第一行為乙個正整數t,表示輸入資料組數。
每組資料報含兩行,第一行為去程的 起降 時間,第二行為回程的 起降 時間。
起降時間的格式如下
h1:m1:s1 h2:m2:s2
或h1:m1:s1 h3:m3:s3 (+1)
或h1:m1:s1 h4:m4:s4 (+2)
表示該航班在當地時間h1時m1分s1秒起飛,
第一種格式表示在當地時間 當日 h2時m2分s2秒降落
第二種格式表示在當地時間 次日 h3時m3分s3秒降落。
第三種格式表示在當地時間 第三天 h4時m4分s4秒降落。
對於此題目中的所有以 h:m:s 形式給出的時間, 保證 ( 0<=h<=23, 0<=m,s<=59 ).
【輸出格式】
輸出到標準輸出。
對於每一組資料輸出一行乙個時間hh:mm:ss,表示飛行時間為hh小時mm分ss秒。
注意,當時間為一位數時,要補齊前導零。如三小時四分五秒應寫為03:04:05。
【樣例輸入】
317:48:19 21:57:24
11:05:18 15:14:23
17:21:07 00:31:46 (+1)
23:02:41 16:13:20 (+1)
10:19:19 20:41:24
22:19:04 16:41:09 (+1)
【樣例輸出】
04:09:05
12:10:39
14:22:05
【限制與約定】
保證輸入時間合法,飛行時間不超過24小時。
思路:題目每組資料的輸入是兩行,分別是可能跨時區的時間起降時間,所以只需要將兩個飛行耗時直接加起來,抵消掉時差,然後除以二即可。
這裡我是中間計算按秒數計算,最後在用除法取餘得到具體時間。具體格式處理請看**。
#define local
#include #define _for(i,a,b) for(int i=a;i=b;i--)
#define mset(a,val,n) for(int i=0;i
思路:暴力可以得大部分分(40-70),想得滿分這道題花的時間不值,後面還有三道大題呢。所以直接暴力吧。
#define local
#include #define _for(i,a,b) for(int i=a;i=b;i--)
#define mset(a,val,n) for(int i=0;i把'.'當做0,把'#'當做-1(化作整數方便標記連通分量)
1.dfs一次,並在dfs的過程中標連通分量(每個島給乙個編號p,p從1開始)
2.在1的過程中,把會被淹沒的陸地(如果周圍存在海)給予特殊編號-2
3.最後統計非特殊編號個數cnt, 答案就是p-cnt;
#define local
#include #define _for(i,a,b) for(int i=a;i=b;i--)
#define mset(a,val,n) for(int i=0;i=0&&j>=0&&ist;
_for(i,0,n)_for(j,0,n) if(a[i][j]>0)st.insert(a[i][j]);
printf("%d\n",p-st.size());
}
【題目描述】
眾所周知,小蔥同學擅長計算,尤其擅長計算乙個數是否是另外乙個數的倍數。
但小蔥只擅長兩個數的情況,當有很多個數之後就會比較苦惱。
現在小蔥給了你 n 個數,希望你從這 n 個數中找到三個數,
使得這三個數的和是 k 的倍數,且這個和最大。資料保證一定有解。
【輸入格式】
從標準輸入讀入資料。
第一行包括 2 個正整數 n, k。
第二行 n 個正整數,代表給定的 n 個數。
【輸出格式】
輸出到標準輸出。
輸出一行乙個整數代表所求的和。
【樣例入】
4 31 2 3 4
【樣例輸出】
9【樣例解釋】
選擇2、3、4。
【資料約定】
對於 30% 的資料,n <= 100。
對於 60% 的資料,n <= 1000。
對於另外 20% 的資料,k <= 10。
對於 100% 的資料,1 <= n <= 10^5, 1 <= k <= 10^3,給定的 n 個數均不超過 10^8。
資源約定:
峰值記憶體消耗(含虛擬機器) < 256m
cpu消耗 < 1000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。
注意:main函式需要返回0;
只使用ansi c/ansi c++ 標準;
不要呼叫依賴於編譯環境或作業系統的特殊函式。
所有依賴的函式必須明確地在原始檔中 #include 不能通過工程設定而省略常用標頭檔案。
提交程式時,注意選擇所期望的語言型別和編譯器型別。
思路:(a+b+c)%k==0 等價於 (a%k+b%k+c%k)==0,所以只要找到三個數,這三個數模k餘數相加等於0即可
所以儲存每個輸入資料的%k取餘,儲存到a[x%k]裡面,a陣列開1000*3空間,只儲存x%k最大的三個x數即可。
然後就是兩個for迴圈找a,b然後c=k-a-b.時間複雜度(k^2);
#define local
#include #define _for(i,a,b) for(int i=a;i=b;i--)
#define mset(a,val,n) for(int i=0;i第十題,看了一下挺簡單的,這種思維題在coderforce上刷太多了,在做好像不會有太大的提公升~~以後有時間再補上(ps如果要得滿分的話,感覺最難的應該是第七題。)
2018第九屆藍橋杯C語言第九題 全球變暖
你有一張某海域nxn畫素的 表示海洋 表示陸地,如下所示 其中 上下左右 四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。由於全球變暖導致了海面上公升,科學家 未來幾十年,島嶼邊緣乙個畫素的範圍會被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰 上下左右四個相鄰畫素中有海洋 它就會被淹...
第九屆藍橋杯C組 一二題
小明被不明勢力劫持。後被扔到x星站再無問津。小明得知每天都有飛船飛往地球,但需要108元的船票,而他卻身無分文。他決定在x星戰打工。好心的老闆答應包食宿,第1天給他1元錢。並且,以後的每一天都比前一天多2元錢,直到他有足夠的錢買票。請計算一下,小明在第幾天就能湊夠108元,返回地球。public c...
參加第九屆藍橋杯C C B組
寫這篇部落格的目的不是要把所有題目的題意給詳細分析 點出思路 給出答案。只是為了要寫點感受。實在不行,你可以用計算機的時鐘日曆,如果自己做錯了,有沒有很驚喜 意外。2 明碼,話說是9的9次方的值 這個把結果算成是81的同志,你應該清楚明白,不管你當時是緊張,還是粗心大意,或是當推出是 9的9次方 時...