原创 矩陣快速冪優化的dp

如果你已經推導出了轉移方程 dp[i][j]=∑dp[i−1][fit[j]]dp[i][j]=\sum dp[i-1][fit[j]]dp[i][j]=∑dp[i−1][fit[j]] 那麼你可以把這個式子表示爲如下的矩陣形式:

原创 求N以內有k個合因子的數的個數

題目如下: 只有合數有合因子。 在埃篩的過程中,每遇到一個合數i,就將其自身的合因子個數以及其倍數的合因子個數num[i],num[i2],num[i3]…加一。 而且篩到這個合數的時候,它的合因子個數已經確定了。所以讓這個合因

原创 FFT(快速傅里葉變換)

一口老血 快速傅里葉,待補充 救命

原创 網絡流之最小割

最小割是什麼? 對於給定網絡,爲了保證沒有從s到t的路徑,需要刪去的邊的總容量的最小值爲多少? 這個問題就是讓你求最小割。 最大流最小割定理:最小割=最大流。 可以利用最大流算法求解最小割。 由ff算法的正確性可以知道,如果所有邊

原创 哥德巴赫猜想

哥德巴赫猜想:任何一個大於等於4的偶數均可以表示爲兩個素數之和。 那 大於等於5的奇數呢? (在大於等於5的前提下)我們知道,奇數=奇數+偶數。由於2是唯一的偶素數,如果這個奇數n可以被表示爲兩個素數的和,那麼n-2一定是素數。否

原创 Dilworth定理:序列的不上升子序列最少劃分數等於序列的最長上升子序列長度

就是這樣。。 點贊 收藏 分享 文章舉報 lpls1 發佈了76 篇原創文章 · 獲贊 3 · 訪問量 3934 私信

原创 java保留小數點後幾位,不足的用0補

public class Test { public static void main(String[] args) { String result= Test.roundByScale(2.00,2);

原创 洛谷P3386:網絡流之二分圖匹配,最大流算法

二分圖:我的理解是,對圖中的點集,可分爲兩個集合U和V,使得兩個集合之間存在通路,且集合內部不存在通路。如上圖。 匹配:兩兩不含公共端點的邊集合M 最大匹配:邊數最多的匹配 完美匹配:最大匹配的匹配數滿足2*M=點的總數 二分圖

原创 計算幾何

兩點式直線方程: x-x1/x1-x2=y-y1/y1-y2 點贊 收藏 分享 文章舉報 lpls1 發佈了76 篇原創文章 · 獲贊 3 · 訪問量 3939 私

原创 分桶法和平方分割

//超時= = public class Main { public static void main(String args[]) throws IOException { PrintWriter out=

原创 鴿籠原理的應用

就是說,如果有n個正整數a1,a2…an,那麼一定存在l、r ( 1 <= l < r <= n )使得al+…+ar可以被n整除。 爲了找l和r,我們可以維護一個前綴和數組A。當A[l]=A[r] (mod n)時,l+1–r

原创 java優化

輸入數據量爲1e5個integer,上邊爲scanner,下邊爲讀入掛(inputreader) 點贊 收藏 分享 文章舉報 lpls1 發佈了76 篇原創文章 ·

原创 數據類型

int 2,147,483,647(2e9) long 9,223,372,036,854,775,807(9e8) 點贊 收藏 分享 文章舉報 lpls1 發佈了76

原创 【c++筆記】關於指向數組的指針

關於指向數組的指針,撥亂反正: short int height[10]; //int型的數組(short int 每個數據2字節) cout << "height "<< height << endl

原创 擴展歐幾里得

前提:參數中的a,b必須爲自然數。 1.先上輾轉相除法的代碼: public static int gcd(int a,int b){ if(b==0){ return a; }else{ return gc