原创 [TJOI2016]排序——[線段樹]

【題意分析】 首先,暴力sort有30pts… 全排列是一個特別好的性質,我們想想有沒有特別的做法。 由於數字保證不重複,對於x,把大於等於x的數全部變爲1,把小於x的數全部變成0。 那麼我們可以發現:對於要排序的區間[l,r]

原创 [USACO08MAR]土地徵用Land Acquisition——[斜率優化DP]

【題意分析】 首先可以發現一個性質:如果一個矩形長和寬都小於等於另一個,完全可以過濾掉這個矩形。 怎麼實現?排個序就好了 然後我們dp[i]表示前i個矩形的最小費用,那麼 dpi=min⁡1≤j<i{dpj+wj+1hi}dp

原创 [NOIpTG2014]尋找道路——[SPFA]

【題意分析】 這是道挺好的思維題,但是被我秒了 首先直覺告訴我們連反邊,從終點開始往前進行bfs擴展標記,把那些可以到達終點的邊全都找出來。 但題目說能到達終點的點,他們連向的點全部都能到達終點,那麼我們就找那些沒有標記的點,他

原创 [NOIpTG2014]飛揚的小鳥——[計數DP]

【題意分析】 考慮dp,dp[i][j]直接表示到座標爲(i,j)(i,j)(i,j)的點有幾種方案,不可到達就是INFINFINF low[i]和top[i]就是在這個位置最低在low[i]位置,最高在top[i]位置可以通

原创 [IOI2008]Type Printer打印機——[trie]

【題意分析】 要求操作數目最少,那麼可想而知最長的單詞就不用刪除了,打印一下就好了 然後我們可以根據輸入建出trie樹,首先最長的那個字符串每個字母都要在trie上打好標記。 然後進行DFS遍歷,如果在一個單詞的末尾就打印,然

原创 [SPOJ3267]DQUERY-D-query——[莫隊]

【題意分析】 裸莫隊不解釋,太模板了 直接上代碼 Code: #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #includ

原创 [NOIpPJ2018]對稱二叉樹——[搜索]

【題意分析】 稍微畫下圖就知道:對稱二叉樹的一個節點,左兒子的右兒子和右兒子的左二子一樣 那豈不是一個dfs就解決了 Code: #include <iostream> #include <cstdio> #include <

原创 [CEOI2004]鋸木廠選址——[斜率優化DP]

【題意分析】 首先這道題是有sa做法的,可是我不想寫 我們先對於數據做一些處理:dis[i]表示距離的後綴和(這個點到山下鋸木廠的距離),sum[i]表示質量的前綴和,cnt爲所有木材全部運輸到山下那個鋸木廠的價格(即山上不建任

原创 10.31模擬賽T2

問題就是把整個圖分爲兩個完全圖 首先建一個原圖的補圖,然後可以發現這個補圖有許多獨立的連通塊。 對於每個連通塊,進行黑白染色,就可以得到一些性質(針對補圖): 問題轉化爲將補圖分爲兩組,每組中在補圖中互不連邊(在原圖中就是兩兩

原创 [TJOI2008]Binary Land——[BFS]

【題意分析】 本來想做dp題的,然後發現這是道sb寬搜 直接來,暴力bfs,注意點是vis[][][][]數組要有四維(記錄兩個人的信息) 還有一隻企鵝往左走,另一隻企鵝往右走 輸入字符用cin,還不能關流同步,不然會錯,挺玄

原创 [COCI2009]OTOCI/極地旅行社——[LCT]

【題意分析】 權當複習LCT吧,操作很簡單: bridge:直接findroot判一下連通性就好了,如果不連通就link penguins:splay一下然後改一下權值 excursion:判一下連通性之後split把路徑拉

原创 11.09模擬賽T1&T2

n爲字符串長度,len爲s長度 想到正難則反,先求出合法的字符串數量,再用總數26n26^n26n去減就好了 類似於隔板法的思想,s字符串總共有len+1len+1len+1個空位可以放字符串,長度爲剩下的n−lenn-lenn

原创 [NOIpTG2014]聯合權值——[簡單數學+模擬]

【題意分析】 這道題的idea炒雞妙啊 首先枚舉點是顯然不可取的,那麼我們換種思路——枚舉那個中間點。 兩個值a,ba,ba,b距離爲2,那麼會產生2ab2ab2ab的權值(數對是有序的) 那麼就相當於這個中間點連着兩個值,如果

原创 [NOIpTG2015]運輸計劃——[樹上差分+LCA]

【題意分析】 首先明確一個性質,要刪除的邊肯定在最長路徑上面,因爲如果不在上面的話最大值相當於沒變。 然後我們二分這個最大值能不能達到,check的過程: 找到所有比二分值長的路徑,設其數量爲tot,運用樹上差分:路徑兩段差分

原创 [LGOJ2002]消息擴散——[縮點]

【題目描述】 有n個城市,中間有單向道路連接,消息會沿着道路擴散,現在給出n個城市及其之間的道路,問至少需要在幾個城市發佈消息才能讓這所有n個城市都得到消息。 【輸入格式】 第一行兩個整數n,m表示n個城市,m條單向道路。 以下m