牛客練習賽29D 禁止動規

2022-05-08 05:54:10 字數 1516 閱讀 4929

newcoder

你在乙個無限長的數軸上,一開始你在原點

本來你只有兩種操作:向左dp,以及向右dp

然而由於禁止dp

於是你只能另尋出路

萬幸的是,dp之神隨機給了你n個變數,既\(x_1,x_2, ... , x_n\),每個變數的值在\([1,m]\)之間,且是整數

每次你可以選擇乙個變數\(x_i\),然後向左走\(x_i\)個單位,或者向右走\(x_i\)個單位

問走到原點右側1單位距離的概率是多大?

既隨機給定n個變數後,存在至少一種從數軸上的0點走到1點的方案的概率

設答案為\(w\),那麼你只需要輸出\(w\times m^n\)在模\(2^\)意義下的值

注意:乙個變數可以選多次,也可以不選

可以走到負半軸

\[n,m\le 10^

\]終於學會杜教篩.jpg

我們知道合法方案一定存在兩個數\(x_j,x_k\)互質。

考慮容斥減掉\(x_i\)全部為\(k\)的倍數的方案,那麼答案即為

\[\sum_^\mu(i)(\lfloor\frac\rfloor)^n

\]數論分塊+杜教篩求\(\mu(i)\)的字首和即可。

時間複雜度為\(o(n^})\)。

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define f "a"

#define mp make_pair

#define pb push_back

#define fi first

#define se second

#define rg register

using namespace std;

typedef unsigned long long ll;

typedef pairpi;

typedef vectorvi;

//typedef long long ll;

typedef long double dd;

const dd eps=1e-6;

const int mod=1e4;

const int n=2e7+10;

const dd pi=acos(-1);

const int inf=2147483647;

const ll inf=1e18+1;

const ll p=100000;

inline ll read()

inline void file()

int pri[n],mu[n];bool vis[n];

inline void sieve()

ll n,m,ans;

mappremu;

ll getmu(ll n)

int main()

牛客小白月賽29 D 種樹

d 種樹 很久沒來水部落格了,來水一下部落格 這個題目一開始還不知道怎麼寫但是仔細想了一下我們用max次數越多,那麼最後的結果就越大,而最後的結果顯然和最多能取多少次最大值,還有想要取的那個數的深度有關,如果最大值的深度小於可以取最大值的次數,那麼就能取到,如果最大值的深度小於可以取最大值的次數,那...

牛客練習賽24 D

名字挺有意思的,排插樹,雖然這是個圖。算dijkstra的模版題,求最短路裡面最長的那條,因為到講台的距離總是取決於最短的那條路,但是又要求離講台最遠,那麼我們通過dijkstra計算出起始點到所有點的最短路然後遍歷找最大值就好。如下 include using namespace std type...

牛客練習賽64 D

容斥原理經典題 第i ii個物品不能放在a ia i ai 箱子裡,求每個箱子有乙個物品的方案數 經典題目 之前做了一道題,需要crt crtcr t合併 此題 也是要考慮到容斥,那題處理方式是利用dpdp dp,因為有個類似上公升子串行的遞推關係,dp i dp i dp i 表示第乙個不合法的情...