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 表示第乙個不合法的情...