原创 NOIP2014聯合權值

暴力 找中點 累加 int n,f[200010],ansmax,ans; vector<int>t[200010]; int main(){ n=read(); fr(i,1,n-1) {

原创 [模板]乘法逆元

定義 乘法逆元是一個十分有用的東西。 給定q,x 求x−1≡y(mod q) 就是說求xy=1(mod q) ,y 的最小值 意義 在mod p 意義下 xy=x×y−1 可以由此取整 求法 費馬小定理 yq≡y(mod 

原创 [模板]歸併排序

一個二分水題 借用了一下百度的圖片 代碼如下 int n,f[100010],g[100010]; void sort(int l,int r) { if(l==r) rt; int mid

原创 LuoguP1637 三元上升子序列

表不喜歡離散化,因爲 美麗 醜陋,人人都會的東西,爲什麼要考呢QAQ 就是BIT 正一次反一次,相乘 #include<map> map<int,int>ap; #define N 30010 int bit[N<<2],a[

原创 LuoguP1031 均分紙牌

假如當前不是標準紙牌,就++。 PS: !!x表示把x轉換爲2進制,具體:!!x={01x=0x≠0 代碼複雜度--,時間複雜度++ int n,p,ans,g[110],k; int main() { n=read

原创 LuoguP1338 末日的傳說

這應該是比較容易的一道數論題了。 枚舉一些: 發現一個大事情:[1,6]+1=[7,12] 還有更多:[1,2]+1=[3,4]=[5,6]−1⋯ 於是發現:ak 的貢獻爲:k−1−∑ki=1[ai<ak] 於是,稍

原创 [模板]二分圖匹配(有坑待填)

匈牙利算法 還沒學,學了再填坑 網絡流 網絡流很好寫啊。 來一發預流推進。 效率O((N+M+2)2(N+M+E)=O((N+M)2(N+M+E)) queue<int>q; int n,m,e,h[2010],g[2010]

原创 [USACO5.3]巨大的牛棚Big Barn

明顯DP,包括括號11行。 方程: fi,j=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪0min⎧⎩⎨⎪⎪fi−1,jfi−1,j−1fi,j−1mapi,j=0mapi,j≠0 #define N 1010 int n,ans,ap[N][N]

原创 LuoguP1890 gcd區間

這道題,只要會gcd,都可以過啊。 (a,b)=(b,a mod b) int gcd(int a,int b) { return b?gcd(b,a%b):a; } 然後,RMQ比暴力還慢。。。。。。。。。。。(此處省

原创 LUOGUP1739 表達式括號匹配

判斷是否匹配。。。 模擬 char c; int s; int main() { c=getchar(); while(c!='@') { if(c=='(') s

原创 LuoguP1820 尋找AP數

設p1,p2,p3⋯ 爲從小到大的素數集合,k1,k2,k3⋯ 爲它們的指數,AP 數有:∀i,ki>ki+1 所以根據這個性質枚舉,還有就是找在指數一樣多(計算公式爲∏(ki+1) )的情況下,要求最小的!!! long lon

原创 [USACO5.1]Fencing the Cows

裸的二維凸包 namespace point { struct point { double x,y; point() { x=y=0;

原创 LuoguP1115最大字段和

看到這道題,第一反應:前綴和 BUT,前綴和貌似過不了QAQ 看了看難度:感覺我省一白拿了QAQ 然後,仔細想了想,寫了一個看似對的算法,結果竟然。。。 時間複雜度:O(n) 空間:O(1) int n,k,ans=-23

原创 LuoguP1996約瑟夫問題

模擬即可 int n,m,l,ne[110]; int main() { n=read(); m=read(); fr(i,1,n-1) ne[i]=i+1; ne[n]=1;//設

原创 NOIP2017憤怒的小鳥

首先,可以根據任意兩點確定一個二次函數。 b=yi×x2j−yj×x2ixi×x2j−x2i×xj a=yi−b×xix2i 然後處理出每條二次函數經過的點數 並狀壓DP fi 表示將i 轉換爲二進制後,當且僅當第k−1