1. 程式人生 > 實用技巧 >「聯賽模擬測試35」題解

「聯賽模擬測試35」題解

T1:組合

很容易發現,這題需要建個圖

建圖方法是把每個串的首尾相連,能反過來就建雙向邊

由於每個串都要用上,所以第一問就是判斷是否存在尤拉路,第二問就是尤拉路徑

考場前80打了個 \(O(n^2)\) 帶回溯的暴搜,後20口胡了一個 \(O(nlogm)\) 的最長路路徑記錄

然後本地得了45分,聯考oj得了25,原因:

1.

2.

其實一遍DFS就能找出尤拉路徑(沒寫過。。)

判是否存在尤拉路的以前考過兩次,不寫了,貼個尤拉路的

void DFS1(int u,int id){
//	for(int x=now[u];x;x=e[x].next){
	while (now[u]) {
		int x = now[u]; now[u] = e[x].next;
		int v=e[x].to;
		if(black[x])continue;
		black[x]=1;
		if(opt==1)black[x^1]=1;
		DFS1(v,e[x].id);
		//sta[++top]=e[x].id;
	}
	if(id)sta[++top]=id;
}

T2:小W的魔術

沙雕題,十幾分鍾就推出來了

先往大致方向蒙個柿子

用計算器驗證驗證

然後就出來了

不會的建議練習打表

ans=((qpow(26,n)-qpow(26,n-m)-qpow(26,n-m-1)*25%mol*m%mol)%mol+mol)%mol;

這個部分分干擾性極大

T3:小Y的圖

智障題,然而考試時沒衝,腦子裡只有T1

把貨車運輸改成建最小生成樹就行

T4:小L的數

不會,割了