非常直接地構造
由於答案與生成樹計數有關,所以一定要使用矩陣樹定理,但這樣就不能限制每種顏色的便使用的數量
我們構造$n^2$個關於$ans_$的方程,列舉將紅色的邊拆成$x$條,將藍色的邊拆成$y$條,跑一遍矩陣樹定理,就得到$$g_=\sum\limits_^ \sum\limits_^ ans_\cdot x^i\cdot y^j$$然後會發現$ans_$可以看做這個二維多項式的係數,直接用拉格朗日插值構造得解。
#include#include#include#include#include#define ll long long#define mod 1000000007
#define m 60
using namespace std;
int read()
int n,m,u[m*m],v[m*m],kd[m*m],mat[m][m],t[m][m],ans[m][m];
int x[m],y[m],tmp,v[m][m];
int add(int x,int y)
int mus(int x,int y)
int mul(int x,int y)
void upd(int &x,int y)
int qpow(int x,int sq)
return res;
}int init(int x,int y);
int dt,inv,now=1,ot;
memset(mat,0,sizeof(mat));
for(int i=1;i<=m;i++)
for(int i=1;i=n) return 0;
if(ot!=i)
now=mul(now,mat[i][i]),inv=qpow(mat[i][i],mod-2);
for(int j=i+1;j
} return now;
}void solve(int x,int y)
if(i!=y)
} for(int i=0;i
}int main()
幻想鄉三連C 狂飆突進的幻想鄉
題解 不難發現,對於每一條從 s 到 t 的路徑,設其 x y 的和為 s x s y 其對答案的貢獻是 a cdot s x 1 a cdot s y 這是乙個關於 a 的一次函式。而所有的路徑就對應著許多 a in 0,1 直線,而不同 a 所對應的最短路長度恰好構成了這些直線的上凸殼,而求最短...
單身三連之三
這是最終章,永久的思念。題目大意 有n張牌,每張牌兩面都有數字,範圍都在1到2n之間,求最少的反轉次數,使得每張牌朝上的一面的數字各不相同,並求出達到這個效果的方案數。多測,初始時每張牌正面朝上,無解輸出 1 1 題解 20 資料 n 20 直接搜尋即可。100 資料 n 1 105 搜尋複雜度不允...
NOIP三連測總結
近三天舉行了三場考試,好像考得都不咋地,與上一周專題訓練相比相差甚遠。單就分數來說,基本看不下去。基本就在20名左右徘徊。但是,三天以來,從第一天思維僵化忽略各種情況到今天想到第二題正解 雖然寫掛了 個人感覺自己的狀態還是在變好,並且收穫了一些乾貨 1.對於輸入輸出接近longlong的題目,不要因...