原创 [二分+2-SAT]POJ 2749 Building roads 題解

[二分+2-SAT]POJ 2749 Building roads 題解 題目大意 給出nnn個穀倉和2箇中轉站的座標,要求每個穀倉都必須連且只連接其中一箇中轉站,有k1k1k1對穀倉由於某種原因不能連在同一個中轉站,還有k2k2

原创 [記憶化DFS]NOIP2017Day1T3 逛公園 題解

解題分析 題面網上肯定找得到,不貼了…… 仍然填大坑ing…… 當初在考場上看到了此題,由於發現k≤50k\le50k≤50,所以自然要在kkk上搞事情。設f[i][j]f[i][j]f[i][j]表示到達i點此時的路徑總長度比最長路

原创 [狀壓DP]NOIP2017Day2T2 寶藏 題解

題目大意 給出一個無向圖,一開始選中一個點進行擴展成一棵樹,初始節點深度爲0,每次建邊的代價爲子節點到父節點的距離乘上子節點的深度,求最小建邊代價。 n≤12n\le12n≤12 解題分析 見nnn那麼小肯定想到狀壓DP了,然後用二進

原创 [BFS]Codeforces 906C Party題解

題目大意 給出一個nnn個點eee條邊的無向聯通圖,每次可以選中一個點,將這個點和它相鄰的點縮成一個點,求最少需要多少次才能把圖縮成一個點。 解題分析 首先要發現,以不同的順序選中同樣的點的結果其實是相同的,所以我們關注的就是選出哪些

原创 [Manacher+離線+線段樹]2015計蒜之道初賽第三場 商品推薦走馬燈 題解

題目大意 給出一個長度爲nnn的序列,多次詢問一個區間[L,R][L,R][L,R]內所有迴文子串的權值和。 解題分析 涉及到迴文字符串的題目立刻腦回路想到Manacher,那麼這題可以考慮從迴文中心入手,然後又發現這道題支持離線操作

原创 [數位DP]BZOJ 3131 [Sdoi2013]淘金 題解

題目大意 有一個大小爲N∗NN*NN∗N的矩陣,一開始矩陣內每一個數都是1,每一次變換後坐標爲(i,j)(i,j)(i,j)內的數會累加到(f(i),f(j))(f(i),f(j))(f(i),f(j)),其中f(x)f(x)f(x)

原创 [DP]hihoCoder #1147 時空陣 題解

題目大意 給出一個nnn個點的圖,現允許任意兩點之間建立長度爲1的無向邊(不允許重邊),問有多少種建圖方案滿足1到nnn的最短路距離爲KKK。n,K≤100n,K\le100n,K≤100 解題分析 很妙的DP!可以考慮對這個圖進行分

原创 [複雜度分析]HDU4473 Exam 題解

題目大意 定義f(x)=∑a=1+∞∑b=1+∞[ab∣x]f(x)=\sum_{a=1}^{+\infty}\sum_{b=1}^{+\infty}[ab|x]f(x)=∑a=1+∞​∑b=1+∞​[ab∣x],求∑i=1nf(i)

原创 [DFS序+樹狀數組+nim遊戲]BZOJ 2819 nim 題解

題目大意 給出一棵帶點權的樹,多組詢問樹上一條鏈上的所有點的點權作爲nim遊戲的初始石子數,問是否存在必勝策略,帶修改。 N,Q≤500000N,Q\le500000N,Q≤500000 解題分析 如果看過我那篇上了兩次又刪了兩次的

原创 [最短路+拓撲]BZOJ 2750 [HAOI2012]Road

題目大意 給出一個有向圖,求有向圖上每條邊被多少不同的最短路通過。 n≤1500,e≤5000n\le1500,e\le5000n≤1500,e≤5000 解題分析 簽到題?反正並不難,就對於每個點先求最短路,然後取出所有dst[x]

原创 [DP]BZOJ 1939 [Croatian2010] Zuma 題解

[DP]BZOJ 1939 [Croatian2010] Zuma 題解 題目描述 祖瑪遊戲是這樣的:有一列nnn個有顏色的珠子,如果觸碰連續KKK個同色的珠子,那麼它們就會消失,其餘的珠子按照原來順序接在一起。 現在你每次可以發射任

原创 [KMP]BZOJ 4974 [Lydsy1708月賽]字符串大師 題解

題目大意 給出一個長度爲n的字符串,求這個字符串的所有前綴的最小循環節,現在反過來,給出所有前綴的最小循環節,求字典序最小的字符串。(N≤100000)(N\le100000)(N≤100000) 解題分析 最小循環節=i-nxt[i

原创 [歐拉函數]HDU 2824 The Euler function 題解

題目大意 求∑i=LRφ(i)\sum_{i=L}^R \varphi(i)∑i=LR​φ(i) 解題分析 水題,前綴和構造,注意空間不要爆 示例代碼 題目傳送門 #include<cstdio> using namespace st

原创 [歐拉函數]BZOJ 2818 Gcd 題解

題目大意 見題面。 解題分析 一開始我還以爲很麻煩,然後才發現是數論水題。 思想很簡單,之前用過的套路gcd(i,j)=p =&gt;gcd(i/p,j/p)=1gcd(i,j)=p\ =&gt; gcd(i/p,j/p)=1gcd

原创 [BFS序+線段樹]HDU 5957Query on a graph 題解

題目大意 給出一個n個點n條邊的圖,有兩種操作: 1.Uptate x k d 將所有距離x距離不超過k的所有節點加d 2.Query x k 統計所有距離x距離不超過k的所有節點 n≤105,0≤k≤2n\le 10^5,0\le