原创 NOIP RP++

NOIP RP++

原创 bzoj1588: [HNOI2002]營業額統計

切水。 法一:用平衡樹維護,nlogn,網上大多數題解都是這個 法二:權值線段樹,我寫的是這個,nlog1e9 法三:離線+離散化+權值線段樹,沒什麼好說的,nlogn 法四:離線排序+鏈表,從後往前掃一遍即可,nlogn+n,常數比較小

原创 uoj#228. 基礎數據結構練習題

第一次看到這題大概在這裏:2016多校聯合 反正當時也沒什麼想法,表示有區間加好難受。 題解並不難,維護每個區間最值、和,當一個區間開根後所有值都一樣就直接賦值,否則遞歸。存在一種特例:3 4 3 4 3 4 3 4 3,開根後1 2 1

原创 bzoj3216: 話舊2

大家好,我是SB 這道題是在看3215時找不到題麪點進來的(然而並沒有一眼看出這兩題的差別)。 一開始想了一會,感覺就是一個組合數,然後最小值==0就有點像Catalan數,於是打開geogebra畫圖,得到了一個:Ans=Get(Y-X

原创 bzoj3512: DZY Loves Math IV

杜教篩是什麼?趕緊寫一題。 令S(n,m)=∑i=1mφ(ni)對於|μ(n)|=1S(n,m)=∑i=1mφ(i)∑e|dφ(de)φ(nd)−−−d=(i,n)S(n,m)=∑i=1mφ(i)∑d|(i,n)φ(nd)=∑d

原创 bzoj2338: [HNOI2011]數矩形

這是一道SB題,然而我是大SB。。。 發現N<=1500,可以先N^2求出所有矩形的對角線,當2條對角線相等且中點重合時可以認爲找到了一個矩形。時間複雜度O(N^2logN^2+N^2)左右。 注意精度問題,中點請將座標*2,面積請用叉積

原创 bzoj4650: [Noi2016]優秀的拆分

此題有95分暴力。。。 發現AABB的統計相當於對AA的統計。於是可以計算出每個點左側爲AA的方案數。枚舉|A|,將字符串分成長度爲|A|的小段,當AA中點在小段中的情況可以利用SA+rmq,O(1)求。於是就能在O(n/1+n/2+..

原创 bzoj3218: a + b Problem

題目名稱是吸引我點進來的。 首先這是一個最小割模型,對點i,連S->i:b[i],i->T:w[i],i->i':p[i],i'->j(奇怪):inf,這樣就有了一個TLE的算法。 怎麼辦呢? 然後vfk強行將n^2的邊減少到nlogn

原创 bzoj1195: [HNOI2006]最短母串

一開始以爲這是字符串好題,一看n範圍,n!就炸了。 考慮dp,dp[i][j] i表示每個子串有沒有出現,j表示最後的串。 看了lych的博客之後,自己還是naive!首先有可能出現一個串沒有用,要預處理掉,另外字典序最小需要存更多的東西

原创 bzoj3672: [Noi2014]購票

爲什麼我這麼慢!!! 這道題大概有兩種思路,樹分治和線段樹。 樹分治:使用類似cdq的方式,1:找重心,分裂,2:work(根所在的樹)3:用重心到根的點的答案更新重心的子樹,4:work(重心的子樹)。更新的時候維護一個下凸殼,在下凸殼

原创 bzoj3813: 奇數國

該村子在財產上的求和運算等同於我們的乘法運算 該村子在財產上的求和運算等同於我們的乘法運算 該村子在財產上的求和運算等同於我們的乘法運算 一開始直接把它忽略了。。。導致題意都沒看懂,直接看題解一句話題意,聽說是最簡單的一道。。。 考慮ph

原创 bzoj4383: [POI2015]Pustynia

既然講了線段樹就做一道裸題吧。。。 於是卡死。。。 考慮暴力,有點像差分約束的建邊,然後發現k比較小,k個數把l~r分成k+1個區間於是用線段樹建圖,然後就好餓 我用了dfs跑拓撲,因爲並不需要排序。。今天聽lbn講splay+LCT+K

原创 bzoj3159: 決戰

這道題真是讓我對LCT有了新的認識啊! 題意大概就是實現一顆樹,支持路徑翻轉!然後我一臉懵逼地想到了splay,然後不會。 其實只要一個LCT就可以了,再額外開一顆splay記錄prefer路徑上的值,然後翻轉就是MakeRoot+spl

原创 bzoj4574: [Zjoi2016]線段樹

好久沒寫題解了。。。 這道題拖了好久,終於把常數卡進去了。 首先發現數據隨機,肯定不是正常算法,不妨離散。 考慮DP,用dp[q][i][j]k]表示q輪後i~j最後變成k的情況。比較難轉移。 參考大神的blog: 用dp[q][i][j

原创 bzoj3316: JC loves Mkk

首先看到環,考慮變成鏈上詢問。由於題目要求平均值最大,所以無法直接使用線段樹維護。先二分平均值,問題就能轉化爲能否找到L~R的一列數和大於等於零。這個很像單調隊列,只要對奇偶分別維護單調隊列就可以了。 #include<iostream>