NOI2015模擬8 15 小 Z 的煩惱

2022-05-17 09:09:11 字數 982 閱讀 6170

這題有點卡常的味道。。。

正解找規律+高精度。

經過手推後發現樣例:

10 2↙

1 2 4 8

3 65 10

由於m=2,所以每兩個一組,共4組。

哇,這就是規律。

第一次將n除以2m-1,而後找到1~n中奇數的個數並新增到ans。

之後每次都將n除以2m,而後找到1~n中奇數的個數並新增到ans。

最後輸出即可。

上標(我壓了8位™都還跑了2069ms,重點是我用了很多優化啊(沒有吸氧)):

#include

#include

#include

#define ll long long

#define mo 100000000

#define rg register int

using namespace std;

ll a[

1310

],ans[

1310

],b[

1310];

char c,s[

10030];

int t,m,k;

void

divide

(int div)

void

inans()

intmain()

divide(1

<;inans()

;if(a[1]&

1)while

(a[0])

}printf

("%lld"

,ans[ans[0]

]);for

(rg i=ans[0]

-1;i>

0;i--

)printf

("%08lld"

,ans[i]);

puts(""

);}return0;

}

NOI2015模擬YYT 傳送

你在乙個有n 個點的環上,環上點按逆時針順序標號為0 到n 1。你一 開始在0 號點。你在每一回合可以使用k 種傳送中的一種,第i 種傳送會將你 按逆時針方向移動ai 個點。有m 個限制條件,對於每個限制條件 xi yi 要 求不能在第xi 步之後在yi 號點上。你要求出經過l 步之後在0 號點的方...

NOI2015模擬9 9 取石子(博弈)

個人覺得這種題要不就切掉要不就爆0了,所以我們要大膽地猜結論,然後去證明。這也是一種思路吧 因為一次只能取走一顆石子,因此對於所有石子,我們能進行的操作總數就是 s 石子總數 石子堆數 1 我們可以感性地先猜一猜,如果考慮最簡單的情況一堆的話,那麼如果s是奇數那麼很顯然先手必勝,若是偶數那麼先手必敗...

NOI2015 小園丁與老司機

給出n棵樹,從原點開始,每次可以在左 右 上 左上 45 右上 45 五個方向中選擇乙個,然後一直向這個方向走,直至走到一棵未經過的樹,然後繼續選擇方向,直至5個方向都不存在未經過的樹。現在要經過盡可能多的樹,輸出最多可能經過的樹的數量以及任意一條路徑。現在定義向上 左上 45 右上 45 三個方向...