原创 牛牛的最美味和最不美味的零食(線段樹)

思路:我們再線段樹裏面去維護一個區間有多少個數和他的最大值最小值,區間查詢的時候我們去看有多少個數,如果他的數大於R,那麼我們去他的左子樹,如果他的數小於L我們去他的右子樹,都不是的話我們去看他左子樹此時要查詢的數變成L——左子

原创 牛牛的零食(容斥原理)

思路:用一組樣例 5,6,9 區間1——100 答案是 100/8 - 100/lcm(5,8) - 100/lcm(8,6) - 100/lcm(8,9) + 100/lcm(8,6,5) + 100/lcm(8,6,9) +

原创 切長條(貪心)

思路:我們把它換成【起始區間,結束區間】,我們吧每次切的地方儘量向後這樣切的就多,所以我們按起始時間排序,每次取他截止區間的點看他與之前的是否重合,如果不重合我們就在之前切一刀 #include <cstdio> #includ

原创 值周(貪心)

思路:校門外的樹數據加強版,但是空間給的很大差分前綴和已經能過,這裏用貪心去算區間和 #include <cstdio> #include <cstring> #include <algorithm> #include <se

原创 Selfish Grazing(貪心)

題目鏈接 題意:給你n個線段讓你求最多有多少個不相交的線段。 思路:把它看成會場安排問題 #include <cstdio> #include <cstring> #include <algorithm> #include <se

原创 平衡二叉樹(DP)

思路:根據題意我們讓左子樹爲高度n的滿二叉樹,右子樹上的點儘可能少,那麼我們首先吧他的高度拉滿使其爲n-m-1,此時我們在右子樹的左子樹上高度拉滿點最少,可得方程dp[i]=dp[i-1]+dp[i-m-1]。dp[i]表示高度

原创 換個角度思考(主席樹)

思路:主席樹查詢區間<=x的和 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #inclu

原创 【HNOI2006】公路修建(二分+最小生成樹)

思路:最大值最小首先想到二分,二分他花費最大公路的路費,這條路必定在一級公路上,然後通過克魯斯卡爾判斷是否能構成最小生成樹。 #include <cstdio> #include <cstring> #include <alg

原创 codeforces——Palindromic Paths(思維)

題目鏈接 題意:給一個01矩陣,求從(1,1)到(n,m)每條路都能組成迴文串,最少修改幾次。 思路:我們可以發現從(1,1)走向(i,j)所走的步數是i+j-2,那麼我們記錄一下走相同步同時爲0或1的個數。我們找到對稱的步數,然

原创 Codeforces Global Round 8 B. Codeforces Subsequences

題目鏈接 思路:通過排列組合找到最小的序列 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #

原创 求最大值(線段樹+思維)

思路:最大值肯定存在相鄰的數之間,用線段樹維護區間最大值(用C++14會內存超限) #include <cstdio> #include <cstring> #include <algorithm> #include <set>

原创 Codeforces Round #644 (Div. 3) E. Polygon

題目鏈接 思路:根據題目描述,每個炮彈存在的位置必須建立在上一個基礎上(n行或者n列除外)炮彈存在的基礎是他的右邊和下面二者必須有一個存在。 #include <cstdio> #include <cstring> #includ

原创 胖胖的牛牛(dfs)

思路:記錄一下他的上一次所走的方向,只有從前後方向變成左右方向步數纔會加或者左右方向變成前後 #include <cstdio> #include <cstring> #include <algorithm> #include

原创 Codeforces Global Round 8 C. Even Picture(構造)

題意:給你一個n讓你在座標上畫圖,畫一個連通圖,他們的沒個格子與相鄰格子都是偶數,有n個格子是上下左右都有相鄰格子。 思路:按題意去畫,圖畫出來就好了。 這裏畫的是n=3的情況 #include <cstdio> #include

原创 Codeforces Round #650 (Div. 3)C-Social Distance

題目鏈接 題意:給你一串01串,每個1之間要至少相隔K個單位,問你最多能插入幾個1。 思路:分成三段1.從頭到第一個1出現,2.從結尾到最後一個1出現,3.中間部分,其中1,2兩種情況都是可以插入dis(1出現的位置)/(k+1)