原创 E. Product Oriented Recurrence(codeforces R566 div2)

矩陣快速冪+歐拉降冪 思路: #include<bits/stdc++.h> using namespace std; typedef long long ll; ll mod=1e9+7; ll fp(ll x,ll

原创 Lightoj1220三種解法(唯一分解,二分答案,pow開根)

Lightoj1220 題意:給你一個數n,要你求這個數可以是一個幾次方數。 比如:n=64,n=26n=2^{6}n=26,所以答案爲6。 大多數人給的題解都是下面這種唯一分解的。把我坑慘了QAQ 爲什麼呢?我在比賽中碰到一個一

原创 ZOJ4040(唯一分解定理)

題意是給你一個數n,你要求用n的不同的因子組成的和,能從1開始連續到多少。 首先我們可以通過一個數的唯一分解求的其所有因子和,如下 這個公式還有另外一種變形: (pe+1−1)/(p−1)(p^{e+1}-1)/(p-1)(pe

原创 用容斥原理解決素數篩類似問題

首先用容斥原理時千萬注意時間複雜度,建議不要用二進制去枚舉子集,很容易超時,我們用dfs進行枚舉比二進制更快,還有如果空間允許打表,就打表做,別用容斥 - 東北林業大學第13屆校賽(老生組)D無平方因子 平方因子個數 Proble

原创 Codeforces Round #590 (Div. 3)D. Distinct Characters Queries

D. Distinct Characters Queries 解法:法線段樹維護26個字母的與運算和(與運算計算常數比加法更小)。 #include<bits/stdc++.h> #define mid (l+r)/2 #defi

原创 2019牛客暑期多校訓練營(第三場)D題Big Integer

很好的題解思路博客 代碼思路和上面博客一樣 #include<bits/stdc++.h> using namespace std; typedef long long ll; ll n,m,p,a[105],b[105],r,c

原创 2019牛客暑期多校訓練營(第五場)E independent set 1(狀壓DP)

題目鏈接 題意:給一個無權圖(可以有環),求每個子圖最大獨立集大小的和。 思路:設dp[s]爲子圖點集爲 s (二進制下)的最多獨立點數量,對於dp[s],我們找到 i 的最右邊1的位置k(其他的1轉移也可以),刪除最右邊的1得到

原创 2019牛客暑期多校訓練營(第五場)generator 1

generator 1 思路就是用十進制的快速冪就行了,在榜首找到大佬的矩陣快速冪板子,大佬的板子又短又強,感覺我以前的板子好笨重。新板子寫來很簡潔,一般不容易寫錯,存一波模板。 #include<bits/stdc++.h>

原创 線性基學習

什麼是線性基? 假設有一個數組A,有m個元素(m可以很大),數組元素a[i]ϵ[1,2n−1]a[i]\epsilon[1,2^{n}-1]a[i]ϵ[1,2n−1], 我們設A數組裏面任意子集的異或所得的不同結果,爲集合XOR

原创 單調棧,單調隊列的學習

單調棧和單調隊列都可以用雙端隊列實現,因爲雙端隊列在隊頭和隊尾都可以進行插入和刪除。 單調棧和單調隊列其實是一種思想,用這種數據結構維護了一個區間的單調性 不多廢話,直接上題: 洛谷P1638 題意:n個數的序列,找到一個最短的

原创 狀壓DP的學習

什麼是狀壓DP? 以下是我個人理解: 狀壓DP是通過使用二進制來壓縮答案的種數,去掉不符合題意的情況,使一個非常暴力的算法,在時間上變得可以接受。 更詳細地解釋,大家可以看這裏:狀壓DP的理解,上面還有一些狀壓的DP的題目和解釋

原创 2019牛客暑期多校訓練營(第一場)F題隨機數做法

新技能get,以前不知道可以用隨機數來找規律,也叫蒙特卡洛算法。還是太年輕了TAT。 如何使用c++的隨機數 2019牛客暑期多校訓練營(第一場)F 題意: 給一個三角形,頂點爲a,b,c隨機在三角形內找一個點p,得到的貢獻爲

原创 線段樹補題

最近打了幾場,比賽有幾個題都可以用線段樹解,雖然還有其他O(n)的解法比線段樹的O(nlogn)更優,代碼量也更少,但需要巧妙的構思或者其他技巧,可是我不會,我也想不出來。。。。但是如果用線段樹有些題裏面的O(n)的操作,直接變成

原创 序列自動機模板

計蒜客subsequence 題意:給定一個序列M,詢問很多次,序列P是否序列M的子序列。 這題之前用26個數組存好,每個不同字母的位置,然後用二分查找判斷下一個字母的位置是否大於先前一個,時間是p*log(m),然後超時了,

原创 Codeforces Round #267 (Div. 2)C. George and Job 以及HDU1024

多段區間和最大問題 Codeforces Round #267 (Div. 2)C. George and Job 題意:有一個長爲n的序列,選擇k段不相交併且長度不大於m的區間,使它們的和最大。 #include<bits/