loj:
洛谷:考慮補集轉換,用所有數減去只用合數的方案數,我們先考慮算所有數的
首先可以得到乙個普及組\(\rm dp\),\(f_\)表示當前填了前\(i\)個,總和\(\ p\)為\(j\)的方案數。
記錄乙個\(cnt_i\)表示\(\ p\)為\(i\)的數的個數。
轉移就是\(f_=\sum_^f_\ p}\cdot cnt_k\)。
然後我們拿矩陣大力優化這個轉移就可以過了。
複雜度\(o(p^3\log n)\)。
#includeusing namespace std;
void read(int &x)
void print(int x)
void write(int x)
#define lf double
#define ll long long
#define pii pair#define vec vector#define pb push_back
#define mp make_pair
#define fr first
#define sc second
#define for(i,l,r) for(int i=l,i##_r=r;i<=i##_r;i++)
const int maxm = 2e7+10;
const int inf = 1e9;
const lf eps = 1e-8;
const int mod = 20170408;
int add(int x,int y)
int del(int x,int y)
int mul(int x,int y)
int n,m,p;
struct matrix
matrix operator * (const matrix &r) const
int pri[maxm],vis[maxm],tot,cnt1[102],cnt2[102];
void sieve()
}}int solve(int *t)
int main()
Loj2003 SDOI2017 新生舞會
這道題太明顯了,一眼看過去就知道是0 1分數規劃。先用二分列舉mid,假設mid就是c 我們要判斷的是 a 1 a2 a nb1 b2 b n c frac c b1 b2 bn a1 a2 an c 然後我們就可以把分母乘到c上面去,得到 a 1 a2 a n c b1 b2 b n a 1 a ...
題解 LOJ2004 SDOI2017 硬幣遊戲
考慮建出ac自動機。則問題相當於,我們每步會從節點 i 等概率地走向 text i,0 或 text i,1 給定了乙個起點和若干個終點,求從每個終點結束的概率。因為到達乙個終點後遊戲就結束了,我們不會繼續走,所以每個終點被經過的次數要麼是 0 要麼是 1 因此,從每個終點結束的概率,在數值上就等於...
LOJ 2270 SDOI 2017 天才黑客
給出一張 n 個點,m 條邊的圖以及乙個大小為 k 的字典樹,每條邊有 x,y 的權值,一條路徑的權值就是上面所有邊的 x 之和 相鄰兩條邊在字典樹上的 lca 的深度之和。求 1 到每個點的最短路。對於 100 的資料,t leq 10 2 leq n leq 50000 1 leq m leq ...