日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计蒜客NOIP模拟赛(2) D2T2紫色百合

發布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计蒜客NOIP模拟赛(2) D2T2紫色百合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【問題描述】

?

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

?

你從夢中醒來,卻依然忘不了夢中的百合花,每朵百合花都有一個權值,在二進制下寫成一行‘1’,第i朵紫色百合的權值在二進制下寫成i個‘1’。你想挑出其中一些組成“一束百合花”且價值在二進制下恰好為一個‘1’后面P個‘0’,那么有多少種挑選方案呢?

?

定義“一束百合花”的價值為這些百合花組成的集合的所有子集的權值乘積的和(空集的權值乘積算1)。如價值為13組成的一束百合花價值為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 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 typedef long long lol; 7 lol Mod=998244353; 8 int f[451][100011]; 9 lol ans; 10 lol n,p; 11 int main() 12 {lol i,j; 13 cin>>n>>p; 14 f[0][0]=1; 15 for (i=1;i*(i+1)/2<=p;i++) 16 { 17 for (j=i;j<=p;j++) 18 { 19 f[i][j]=f[i-1][j-i]+f[i][j-i]; 20 if (j>=(n+1)) f[i][j]-=f[i-1][j-n-1]; 21 if (f[i][j]<0) f[i][j]+=Mod; 22 if (f[i][j]>=Mod) f[i][j]-=Mod; 23 } 24 ans=(ans+f[i][p])%Mod; 25 } 26 cout<<ans%Mod; 27 }

?

?

?

?

?

【問題描述】

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

你從夢中醒來,卻依然忘不了夢中的百合花,每朵百合花都有一個權值,在二進制下寫成一行‘1’,第i朵紫色百合的權值在二進制下寫成i個‘1’。你想挑出其中一些組成“一束百合花”且價值在二進制下恰好為一個‘1’后面P個‘0’,那么有多少種挑選方案呢?

定義“一束百合花”的價值為這些百合花組成的集合的所有子集的權值乘積的和(空集的權值乘積算1)。如價值為13組成的一束百合花價值為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


?

轉載于:https://www.cnblogs.com/Y-E-T-I/p/7496356.html

總結

以上是生活随笔為你收集整理的计蒜客NOIP模拟赛(2) D2T2紫色百合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。