帶取模的運算,除以乙個數一定要乘逆元!!!!!!!!!!!!!!!!!!
不同位置的值對最終答案的貢獻是互不影響的,分開考慮每個值的貢獻
考慮對於位於\((x,y)\)的值對\((n,m)\)的貢獻,無論從哪個路徑走過去,一定是原數\(*a^*b^\),而對答案貢獻多少次即為\((x,y)->(n,m)\)不同的路徑數,這個顯然是個組合數,用l表示需要走幾步,r表示需要向右(或下)走幾步,那麼方案數為\(c_l^r\),為了方便計算,我們從方案數唯一的開始算,這樣每次通過\(c_l^r\),求\(c_^\)只需要\(*(l+1)/(r+1)\)記得用逆元
#include#includeusing namespace std;
const int mod=998244353;
long long a,b;
long long x[300005],y[300005];
int n,m;
long long qp(long long x,long long y)
return ans;
}int main()
c=1,l=n-1,r=0,num=nn;
for(int i=m;i>=1;--i)
printf("%lld\n",ans);
return 0;
}
n個點,2n條邊,還是連通圖,那麼圖中有且只有乙個環,是一棵基環樹
如果將乙個y點和其黑白邊看成一條邊,可以省去y點,將黑白邊當作點權加到x點上,這樣仍然得到基環樹
其實問題已經可以轉化為在基環樹上任意相鄰兩點必須有乙個啟用,啟用費用為點權的最小花費
任意一條邊所連的兩點必然有乙個被啟用,我們考慮斷掉環上的一邊,轉化為普通的樹形dp,兩次dp分別啟用斷開的兩點,取個min即可
#include#includeusing namespace std;
int min(int x,int y)
int main()
NOIP提高組模擬賽3
周圍大佬都說初中打過n遍,我乙個菜雞瑟瑟發抖。把斐波那契數列寫出來找了半天性質,用了半個多小時推出來 x兔子的父親,就是x減去是在斐波那契數列中最大的小於x的數 舉個栗子 13號兔子,應減去8,得到他的祖先5 10號兔子,應減去8,得到他的祖先2 預處理出斐波那契數列,然後讓ab中較大的到他的祖先,...
NOIP提高組模擬賽4
丹青千秋釀,一醉解愁腸 無悔少年枉,只願壯志狂 矩陣字首和加暴力 o n 2m 2 60pts有手就行 觀察資料範圍,猜測應該是求一種 o n 3 的演算法,想到之前做的題,應該是 n 2 枚舉行,n 處理乙個序列的答案,然後,就沒有然後了 對於乙個序列,求子段和為k的倍數,如何 o n 求解,考慮...
NOIP提高組模擬賽6
這題看著真熟啊,好像把之前的english,入陣曲雜糅了一下。首先,像入陣曲一樣計算出字首和 s 式子可以轉化為求 s r s l 1 equiv max mod k 像english一樣 用單調棧處理出以x為最大值的區間,分區間求解 每次列舉一側區間,已知max,只要知道另一側有多少與之餘數相同的...