vjudge比賽題解

2021-10-19 02:42:19 字數 3228 閱讀 7869

題目位址

這道題本身不難,難在題目要求的格式上,所以新手多數會卡著格式不過關而不能ac。空白行就是在endl後還要endl一次,而且要在最後一次輸出中不輸出空白行就行了。

至於大數加法可以參考這份部落格 大數專題

#include

#include

#include

#include

using

namespace std;

string fir,sec;

vector<

int>

sum(vector<

int>a,vector<

int>b)

if(flag) c.

push_back

(flag)

;return c;

}int

main()

return0;

}

題目位址

這道題是在《挑戰程式設計競賽》中看到的,每次看到這道題我都反思著要多個角度看題,當然角度是提前學習過的角度,不能異想天開。

而這道題便是換了乙個角度看題,題中螞蟻前進如果碰到另乙隻螞蟻便會掉頭,另乙隻螞蟻也是。題意是要我們找到全部螞蟻走出竿子的最長時間和最短時間。

每只螞蟻的初始方向有兩種,而很容易想到二進位制列舉所有可能,然後模擬求時間最終找出最短和最長時間。但是螞蟻數有106

10^6

106所以不可能。那麼如果兩隻螞蟻相遇互相掉頭其實就相當於互相穿過彼此(畢竟螞蟻速度都一樣),那麼最長時間就是求最遠離竿子邊緣的距離,最短同理。那麼每只螞蟻的向左和向右中找出最大值便是最長時間,最小值便是最小時間,那麼時間複雜度就是是o(n)了。

#include

using

namespace std;

const

int max_n=

1e6+5;

int l,n;

int x[max_n]

;int

main

(void

)return0;

}

題目位址

走迷宮是標準的bfs,所以會就還得寫的快,不會就跟要抓緊學。bfs需要佇列用來儲存每一步的鄰點,從而達到由近及遠。直到隊列為空就是走到頭了。

而這道題還要求輸出這個最短路,所以還要儲存走的路。

'''

**就不說了,畢竟是模板題,嘿嘿?

'''

題目位址

''' 

模板題就不用題解了吧!!!

:)'''

題目位址

此題是一道數學題,也是一道技巧題,也是不能直接算的,否則會超時的!!!

解題思路:設nn=

d∗10

k−1(

k表示n

n的位數

,d表示

為乙個浮

點數

)n^n=d*10^(k表示n^n的位數,d表示為乙個浮點數)

nn=d∗1

0k−1

(k表示

nn的位

數,d表

示為乙個

浮點數)

所以d =1

0(lo

g10(n

n)−(

k−1)

)d=10^(n^n)-(k-1))}

d=10(l

og10

​(nn

)−(k

−1))

而k =⌊

log10

(nn)

+1

⌋k= \lfloor log_(n^n)+1 \rfloor

k=⌊log

10​(

nn)+

1⌋帶入上式d=1

0log

10(nn

)−⌊l

og10(

nn)⌋

d=10^(n^n)- \lfloor log_(n^n) \rfloor }

d=10lo

g10​

(nn)

−⌊lo

g10​

(nn)

⌋在化解一下d=1

0n∗l

og10n

−⌊n∗

log10

n⌋

d=10^n- \lfloor n*log_n \rfloor }

d=10n∗

log1

0​n−

⌊n∗l

og10

​n⌋所以最後d取整就是答案了,呼~,難,數學難!!

#include

#include

using

namespace std;

intmain()

return0;

}

題目位址

三個陣營,公主的人a、皇后的人b、還有看熱鬧的人c,公主的人包括公主,他們只會說真話,皇后的人只會說假話,看熱鬧的人就想說什麼就說什麼,所以要100%找到公主,那麼看熱鬧的人就指定不上了,所以如果公主的人大於皇后的人和看熱鬧的人,那麼公主就一定能找到,而如果公主的人只有乙個,那麼就一定是公主所以就不用問就可以知道,否則根據鴿籠原理,就得問2∗(

b+c)

+1

2*(b+c)+1

2∗(b+c

)+1次

#include

using

namespace std;

intmain()

else

printf

("no\n");

return0;

}

題目位址

這是一道非常基礎的博弈,只要看了相關的資料這題應該是沒有問題的,只是有時候的確是這樣的,看這對,方法也是這樣的,但是就是wa,這樣的情況也不是沒有,我也時時為這種情況頭疼,當然沒辦法,這種情況我們要麼看看別人的,要麼換思路。。

這道題很簡單,就不多說,主要說一下結論,就是n%(m+1)這個m和1分別是可以摸到的最大值和最小值。

對於任意的p,q(p,q分別是可以摸的最大值和最小值)這個結論都是對的。即n%(p+q),這是乙個迴圈,大家應該是會懂得。』

這裡我要強推這篇blog 常見的幾種博弈

#include

using

namespace std;

intmain()

return0;

}

12 7 比賽題解

這個題的意思就是對於給定的數x,找到兩個數a,b滿足以下條件 可以看出a,b是不唯一的,所以這道題是spj,那我們只要找到最好找的就好了。a b 最大的時候,就是a b x對吧,正好這時候也滿足題目中的其它要求。如果x x 都不滿足大於 x 這個條件的話,肯定就無解了,所以我們只需要判斷這個條件就好...

題解 騎車比賽

描述 小信準備去參加騎車比賽,比賽在 n 個城市間進行,編號從 1 到 n。選手們都從城市 1 出發,終點在城市 n。已知城市間有 m 條道路,每條道路連線兩個城市,注意道路是雙向的。現在小信知道了他經過每條道路需要花費的時間,他想請你幫他計算一下,他這次比賽最少需要花多少時間完成。輸入第一行輸入兩...

比賽題解 NOIP2021 題解

可以先把十進位制表示下數字含有 7 的所有數都求出來,然後去列舉這些數的倍數,將其標記。如果當前列舉到的數被標記過了則就不需要再列舉倍數了 因為列舉的倍數肯定也被標記過了 時間複雜度 mathcal n log log n include include include using namespac...