19廣東工業大學 牛客J H補題

2021-10-03 19:43:24 字數 1645 閱讀 1231

害!很久之前刷了一些題目,但是由於課程實在是沒時間好好品題(其實是太懶了)決心好好嚼一些當時沒有ac的題目!

【注:我是ac一題然後寫一題報告的,可能演算法有錯誤或者演算法不是最優,本人小白也請見諒 xd】

ac**:

#include

using namespace std;

typedef

long

long ll;

intmain()

return0;

}

係數1

係數2112

1325

385可以看到是乙個類似遞推的係數關係,我們先列舉k為前100項的係數1和係數2

x1[1]

=1;x2[1]

=1;for

(int i=

2;i<=

1000

;++i)

我們的意圖是f(n)=係數1* f(n/2k) + 係數2* f(n/2k+1)

我們需要把n/2k壓得盡可能小,這樣f(n/2k) 與 f(n/2k+1) 我們可以輕易列舉

因為k增大1,2k增大一倍,那乙個loop就可以搞定求出適當的k了

ac**:

#include

#define show(x) std::cerr << #x << "=" << x << std::endl

using namespace std;

typedef

long

long ll;

const

int max =

1e5+50;

const

double eps =

1e-10

;ll cnt[

120]

;//存f(n)

ll x1[

1000

],x2[

1000];

//存係數1與係數2序列

ll qpow

(ll a,ll n)

n>>=1;

a=a*a;

}return ans;

}int

main()

x1[1]

=1;x2[1]

=1;for

(int i=

2;i<=

1000

;++i)

while

(cas--

) ll k=1;

while

(n>

100*

qpow(2

,k))k++

;//算合適的k

printf

("%lld\n"

,x1[k]

*cnt[n/

qpow(2

,k)]

+x2[k]

*cnt[n/

qpow(2

,k+1)]

);//見上公式帶入

//printf("%lld %lld\n",x1[k]*cnt[n/qpow(2,k)]+x2[k]*cnt[n/qpow(2,k+1)],cnt[n]);

}return0;

}

廣東工業大學程式設計競賽決賽 C

小時候,我只能一階一階得爬樓梯,後來,我除了能一次爬一階,還可以一次爬兩階,到現在,我最多一次可以爬三階。那麼現在問題來了,我想爬上 n層樓,相鄰樓層之間有一段樓梯,雖然我一次可以爬 1個台階 2個台階和 3個台階,但是我在i與 i 1層之間的樓梯上時,我不能跨越到 i 1與 i 2層之間的樓梯。現...

廣東工業大學賽 H tmk買禮物

今天是校賽的日子,為了慶祝這麼喜慶的日子,tmk打算買些禮物給女票 lsh慶祝一下。tmk進入了雪梨超市,然後剛踏入的一瞬間,店主就對 tmk說 恭喜你成為了本店第 2147483647 位顧客,本店在搞乙個活動,對本店第 2147483647 位顧客進行贈送活動。你先看看你有多少錢?tmk一摸口袋...

2017廣東工業大學程式設計競賽決賽 E(倒水)

problem e 倒水 water description 一天,cc買了n個容量可以認為是無限大的瓶子,開始時每個瓶子裡有1公升水。接著 cc發現瓶子實在太多了,於是他決定保留不超過k個瓶子。每次他選擇兩個當前含水量相同的瓶子,把乙個瓶子的水全部倒進另乙個裡,然後把空瓶丟棄。不能丟棄有水的瓶子 ...