原创 AcWing 859(Kruskal算法求最小生成樹)

思路:克魯斯卡爾模板 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<b

原创 失衡天平(揹包DP)

思路:dp[i][j]表示前i個物品中取的差值爲j的最大重量,我們可以得出轉移方程,dp[i][j]=max(dp[i][j],dp[i-1][j+a[i]]+a[i]); dp[i][j]=max(dp[i][j],dp[i-

原创 Codeforces Round #650 (Div. 3) F1. Flying Sort (Easy Version)

題目鏈接 題意:給你一個數組可以執行兩種操作吧一個元素放到數組的最開頭或者最末尾,問最少多少次操作可以讓他升序。 思路:我們看排好後的序列的子串在原始數組出現的最長長度就是他不用變的長度,答案就是n減去他。 #include <c

原创 Codeforces Round #640 (Div. 4) E. Special Elements

題目鏈接 思路:要求我們找連續區間和能否組成一個數組元素,因爲數據範圍比較小,我們用前綴和去算區間和,然後map保存每個數組元素出現次數,暴力尋找每種區間和的值,判斷他是否在數組中出現過。 #include <cstdio> #i

原创 Codeforces Round #648 (Div. 2) B. Trouble Sort

題目鏈接 思路:只要b數組含有0和1那麼就可以換成有序,判斷一下全0或者全1的情況下是否已經有序即可 #include <cstdio> #include <cstring> #include <algorithm> #inclu

原创 Mayors posters POJ - 2528 (線段樹+離散化)

思路:對座標進行離散化,然後建立線段樹進行染色,每次對他的區間染一個顏色,然後遍歷整面牆看看有多少個不同顏色 #include <cstdio> #include <cstring> #include <algorithm>

原创 Codeforces Round #640 (Div. 4) F. Binary String Reconstruction(構造)

題目鏈接 思路:全是0和1的時候特判,然後構造字符串先輸出n0個0然後對n2分奇偶情況輸出。 #include <cstdio> #include <cstring> #include <algorithm> #include <

原创 Codeforces Round #644 (Div. 3) D. Buying Shovels

題目鏈接 題意:給你n,k。求k範圍內n的最大約數 思路:從1到n\sqrt{n}n​枚舉他的約數,求最大。 #include <cstdio> #include <cstring> #include <algorithm> #i

原创 字符串(尺取)

思路:以26個字母爲區間尺取 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #includ

原创 C. Johnny and Another Rating Drop

題目鏈接 思路: 以5爲例 000 001 010 011 100 101 最後一位的貢獻是5,第二位的貢獻是2,第1位的貢獻是1. 每一位的貢獻是n右移1位所變成是10進制數的貢獻。 101——>10——>1 5+2+1=8

原创 洛谷 P3369(權值線段樹)

思路:權值線段樹模板 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<ve

原创 只能喫土豆的牛牛(二進制枚舉)

思考:預處理下土豆的重量,二進制枚舉選擇情況i是1的情況價值加上此時土豆的重量 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #

原创 Codeforces Round #654 (Div. 2) D. Grid-00100(構造)

題目鏈接 思路:題目要求價值最小,怎麼放價值最小?每次放的地方行和列最大值最小值之差爲1,那麼當行或者列%n==0時就從頭開始此時的行列最大值最小值之差依舊是1 #include <cstdio> #include <cstrin

原创 珂朵莉的數列(樹狀數組)

思路:對於a[L]>a[R] L<R 逆序數對所被包含的區間是左端點(1——L)到右端點(R——n)所以他的貢獻是L*(n-r+1)我們用樹狀數組去求逆序數對,答案會爆ll用int128 #include <cstdio> #

原创 Codeforces Round #650 (Div. 3) D. Task On The Board(思維,模擬)

題目鏈接 思路:0是個特殊值,只有最大的字母纔會在零的位置上,我們先把最大的字母填到0的位置上,然後把其他不是0的位置的值減去0位置給他們的貢獻值,比如此時0位置的下標爲num,那麼其他位置a[i]的貢獻就變成a[i]=a[i]-