計蒜客NOIP模擬賽 2 D2T2紫色百合

2022-05-11 12:17:22 字數 3427 閱讀 9665

【問題描述】

「牽著你的手的是她,路邊開滿了紫色的百合花……」

你從夢中醒來,卻依然忘不了夢中的

她百合花,每朵百合花都有乙個權值,在二進位制下寫成一行『

1』,第

i朵紫色百合的權值在二進位制下寫成i個『

1』。你想挑出其中一些組成「一束百合花」且價值在二進位制下恰好為乙個『

1』後面p個『

0』,那麼有多少種挑選方案呢?

定義「一束百合花」的價值為這些百合花組成的集合的所有子集的權值乘積的和

(空集的權值乘積算

1)。如價值為1和

3組成的一束百合花價值為

1+1+3+1*3=8

【輸入格式】

一行兩個正整數

n,p,含義如題目中所示

n,p<=100000

【輸出格式】

乙個整數代表方案數模

998244353

的結果【樣例輸入1

3 3【樣例輸出1

2【樣例輸入2

233 666

【樣例輸出2

572514965

稍稍運用一下數學知識發現題目要求的是選出的集合每個元素

+1之後的乘積等於

2^p的方案數,取個

log就變成了↓

1~n選若干個數使得總和等於

p,求方案數

然後用普通的揹包

dp可以就拿到

60分了

然後我們發現,由於物品大小是

1~n,所以最多選取

o(sqrt(p))

個物品,揹包就滿了

滿分做法可以用狀態

f[i][j]

表示選i

個物品,佔容量為

j的方案數

由於每個揹包是不同的,所以根據已選的最小的物品分類討論一下:

如果最小的物品是

1,相當於

i-1個物品湊出了

j-i的大小,然後整體

+1

如果最小的物品不是

1,相當於

i個物品湊出了

j-i的大小,然後整體

+1

需要注意我們要防止出現選擇了大小為

n+1的物品的情況,所以需要減去

得到遞推式

f[i][j]=f[i-1][j-i]+f[i][j-i]-f[i-1][j-(n+1)]

時間複雜度

o(nsqrt(n))

1 #include2 #include3 #include4 #include5

using

namespace

std;

6 typedef long

long

lol;

7 lol mod=998244353;8

int f[451][100011];9

lol ans;

10lol n,p;

11int

main()

1224 ans=(ans+f[i][p])%mod;25}

26 cout27 }

【問題描述】

「牽著你的手的是她,路邊開滿了紫色的百合花……」

你從夢中醒來,卻依然忘不了夢中的

她百合花,每朵百合花都有乙個權值,在二進位制下寫成一行『

1』,第

i朵紫色百合的權值在二進位制下寫成i個『

1』。你想挑出其中一些組成「一束百合花」且價值在二進位制下恰好為乙個『

1』後面p個『

0』,那麼有多少種挑選方案呢?

定義「一束百合花」的價值為這些百合花組成的集合的所有子集的權值乘積的和

(空集的權值乘積算

1)。如價值為1和

3組成的一束百合花價值為

1+1+3+1*3=8

【輸入格式】

一行兩個正整數

n,p,含義如題目中所示

【輸出格式】

乙個整數代表方案數模

998244353

的結果【樣例輸入1

3 3【樣例輸出1

2【樣例輸入2

233 666

【樣例輸出2

572514965

【資料範圍與約定】

測試點編號

n p

1≤ 8

100

2 ≤

12 ≤

100 3

15

100

4 ≤

100≤

100 5

1000 ≤

1000 6

2000 ≤

2000 7

100000 ≤

100000 8

100000 ≤

100000 9

100000 ≤

100000

10≤

100000 ≤

100000

計蒜客模擬賽5 D2T2 螞蟻搬家

很久很久以前,有很多螞蟻部落共同生活在一片祥和的村莊裡。但在某一天,村莊裡突然出現了乙隻食蟻獸,螞蟻們為了保全性命而決定搬家。然而這個村莊四面環山,想要離開這個村莊必須要從地洞裡離開,村子裡一共有 2n2n2n 個地洞,分布在山的左右,一邊 nnn 個。左邊的任意乙個地洞都可以通到右邊 nnn 個地...

計蒜客NOIP模擬賽4 D1T2小X的密室

小 x 正困在乙個密室裡,他希望盡快逃出密室。密室中有 n個房間,初始時,小 x 在 1號房間,而出口在 n號房間。密室的每乙個房間中可能有著一些鑰匙和一些傳送門,乙個傳送門會單向地創造一條從房間 x到房間 y的通道。另外,想要通過某個傳送門,就必須具備一些種類的鑰匙 每種鑰匙都要有才能通過 幸運的...

2018計蒜客初賽2

一天之後,計蒜客第二場,感覺一般般,第一題卡了一下處理的比較慢,導致後面時間略微不足,第二題倒是沒什麼坑點 思路 這題dp的味道還是挺明顯的,dp選擇當前元素所能達到的最大長度,至於轉移,第一次想的是轉移之前所有狀態中可能的狀態,然而o n 2 的複雜度,加上多組資料,毫無疑問tle 之後想到用d,...