8 14 訓練日記

2021-08-23 12:39:42 字數 1488 閱讀 4423

今天主要看了容斥

容斥原理 :重要應用 求出乙個數n在區間[1,m]裡面有多少個數與它互質。假設資料不超過int型。

實現過程分為兩步:

1, 求出m的質因子 並儲存在陣列裡面;

2, 求出區間[1,n]裡面有多少個數與m不互質。

**:

#include

#include

int p[10];//儲存質因子 int型n不會超過10個

int k;//記錄質因子個數

void getp(int n)//求出n的質因子

}

if(n > 1) p[k++] = n;//本身是質數

}

int nop(int m)//求出區間[1,m]裡面有多少個數與n不互質

}

int sum = 0;//統計個數

for(i = 1; i < top; i++)

sum += m / que[i];

return sum;

}

int main()

return 0;

}

上面的**實現是很簡單的,也是很好理解的。 網上還有dfs版本,位運算版本的以及遞迴版本的,這裡再給個遞迴的(另外本人理解不太透徹),至於其它兩個有興趣的可以上網查下。

遞迴版本:

#include

#include

int p[10];//儲存質因子 int型n不會超過10個

int k;//記錄質因子個數

void getp(int n)//求出n的質因子

}

if(n > 1) p[k++] = n;//本身是質數

}

int nop(int m, int t)//求出區間[1,m]裡面有多少個數與n不互質

int main()

return 0;

}

訓練日記8 14

今天做了幾個佇列的,真的爽額,花了差不多一上午的時間看例題,弄什麼是單調佇列,這個問題真的很嚴重。做了乙個移動窗戶問題之後,看了乙個給你乙個樹狀圖,求最大矩形面積的問題,直接做的話 o n2 而佇列能的時間的複雜度降到o n 初次接觸這種方法,感覺這個方法很溜,當然讓人也是很炸,光是求最大的矩形面積...

訓練日記 20161024

初賽好像不會掛了,好開心!版權原因,不上傳題目。題意 求1 n n 1000 的排列中逆序對恰好為 k 個的排列數目。多測。題解 f i j 表示前 i 個數,逆序對個數恰好為 j的排列個數,易得轉移方程f i j i 1k 0f i 1 j k 用字首和優化可使複雜度降為o n2 題意 對於乙個長...

訓練日記 20170324

長久不更新部落格了。期間經歷了恰好被ag線踩的wc,經歷了漫長痛苦的小高考準備。現在終於可以重整旗鼓,向省選進發!幾個月來,唯一不變的是我仍然是個超級蒟蒻 版權原因,不上傳題目。題意 最小樹形圖 去年就接觸 聽說 過的演算法,一直沒有真正寫過。因為各種奇怪的細節錯誤,調了好幾個小時 比如找環時沒有判...