B Chocolate(經典水題)

2021-09-23 14:06:55 字數 1465 閱讀 1392

做過的原題

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

void

fre(

)#define ms(x,y) memset(x,y,sizeof(x))

#define mc(x,y) memcpy(x,y,sizeof(x))

#define mp(x,y) make_pair(x,y)

#define ls o<<1

#define rs o<<1|1

typedef

long

long ll;

typedef

unsigned

long

long ul;

typedef

unsigned

int ui;

template

inline

void

gmax

(t1 &a, t2 b)

template

inline

void

gmin

(t1 &a, t2 b)

const

int n =

0, m =

0, z =

1e9+

7, ms63 =

0x3f3f3f3f

;int n;

int x;

int b[

105]

;int

main()

if(m ==0)

puts

("0");

else

printf

("%lld\n"

, ans);}

}return0;

}/*【trick&&吐槽】

1,這題最壞情況下,ans可達2^48*3,會爆int。

2,還是需要考慮沒有1這種無法劃分的特殊情況。

【題意】

有n(1<=n<=100)個數,每個數不是0,就是1.

我們要把這些數劃分成若干區間段。使得每個區間段恰好都有且僅有乙個1

問你劃分的方案數

【型別】

簡單題【分析】

顯然,有多少個1,我們就必然要劃分成多少段。

然後,兩個相鄰1之間有w個0,我們的劃分方案數就是w+1

於是,我們記錄所有1的位置,對於任意一對相鄰的1,答案乘上b[i+1]-b[i]

然後就ac啦

【時間複雜度&&優化】

o(n)

*/

確定進製(經典水題)

問題描述 6 9 42 對十進位制來說是錯誤的 但是對13進製來說卻是正確的 即6 13 9 13 42 13 42 13 4 13 2 1 54 你的任務是編寫一段程式 讀入3個整數,p,q和r 然後確定乙個進製b 2 b 16 使得p q r。如過b有很多選擇 則輸出最小的那個進製 如果沒有合適...

POJ 2449 A 經典水題

先求每個點到目地t的最短距離。這一步可以將圖的每條邊反向,做單源最短路求得。然後就是在圖上搜尋。可以用優先佇列來實現搜尋狀態的篩選。f g h g為搜尋到此點已經走過的距離,h為此點到t的最短距離。當第k次搜到t,此時的g h就是第k短路。include include include includ...

字尾陣列水水水水水水題

首先 jxrjxrjxr orz,沒有您我們都會死 然後就是我從jxr神犇那裡借鑑 照抄 過來的字尾陣列模板。include include include define cmp x y sa i x y sa i 1 x using namespace std const int n 100000...