原创 BZOJ2200: [Usaco2011 Jan]道路和航線 拓撲排序+最短路

題面 挺好的題。 題意十分清晰, 求S出發到每個點的最短路。 由於負權邊的存在,不可以直接用dijkstra求解, 考慮spfa。 spfa的理論複雜度爲O(T(R+P))O(T(R+P)) 過不去,實際上也會TLE(好像加了SLF

原创 BZOJ1030: [JSOI2007]文本生成器 AC自動機 + DP

正着難想,要處理如何容斥,那就反着來 記f[i][j]f[i][j] 爲當前爲隨機串的第i位 匹配AC自動機裏編號爲j的點 那麼答案就是26m−∑f[m][j]26m−∑f[m][j] 寫了快速冪甚至比沒寫還慢了一丟丟…… /***

原创 洛谷P1402 酒店之王 網絡流

做一下往年省夏的題) 網絡流比較顯然,拆點要注意一下 一開始把超級源點S的出邊容量設成inf -> wa 60分 改成1 -> wa 70分 才發現建圖有問題 這樣是能過樣例 還能水70分 但是不合題意, 2號點也能蹭到1號點

原创 BZOJ1040: [ZJOI2008]騎士 基環樹DP

題面 一般的基環樹DP 處理環時的思路是斷環成鏈,轉爲序列上的dp 其他地方同樹形DP 但這樣寫起來挺麻煩 這道題可以以一種更簡潔的方法處理: 把圖建成無向圖,用dfs找環。對於每個環,任意切斷其環上的一條邊,並記錄兩端點編號。

原创 BZOJ4245: [ONTAK2015]OR-XOR 按位貪心

題面 在天津大爺一頓教育下 + 看題解水過了這題。 爲什麼我會去想奇奇怪怪的dp… 二進制求全部或起來、異或起來之類的一頓位運算操作後答案最大或最小的題都可以從高位開始按位貪心 比如10000總比01111大 這樣。 確保最高位

原创 BZOJ3295: [Cqoi2011]動態逆序對 CDQ分治

cdq模板題 把刪除操作的時間倒過來就變成了插入,轉三維偏序 用和陌上花開一樣的方法做就行,而且沒有重複元素,不用離散化 插入一個數對答案的貢獻要考慮左上角的元素個數與右下的元素個數,做完一次把x,y全部換成n-x+1與n-y+1就可

原创 BZOJ1477: 青蛙的約會 exgcd

(m−n)x+Ly=y−x(m−n)x+Ly=y−x 不妨設m−n=a,L=b,y−x=cm−n=a,L=b,y−x=c 原式化爲ax+by=cax+by=c 因爲ax0+by0=d,d=gcd(a,b)ax0+by0=d,d=gc

原创 BZOJ1212:[HNOI2004]L語言 Trie樹 + DP

記f[i]f[i] 爲文章中以第i個字符結尾的內容能否被理解 那麼對於每篇文章最大的ii 即爲答案 把單詞集合全部插入Trie中,初始化f[0]=truef[0]=true 每當找到一個i使f[i]=truef[i]=true 就

原创 BZOJ3940: [Usaco2015 Feb]Censoring AC自動機+棧

物理作業寫得頭昏腦漲T_T 建議做這題之前先做3942 做法同3942 只是這次移到了AC自動機上做匹配 用一個數組記錄匹配到棧中每個位置時的結點編號即可, 每次遇到有dangerdanger 標記的結點 就把toptop 減去該

原创 BZOJ3732:Network kruskal重構樹

題面 kruskal重構樹:kruskal的過程中每通過一條邊合併兩個集合 就新建一個結點作爲代表這兩個集合的結點的父親,點權爲該邊邊權 葉子結點都是原圖中的點== 那麼不難發現父節點點權都大於子節點 剛好使詢問的兩點所在集合合併

原创 極大化思想 懸線法

1.懸線法 luoguP4147玉蟾宮 藍書上有這種方法的介紹 維護left[i] right[i] up[i]表示當前行第i列能向左/右/上拓展的格子的編號 ,在第一次循環時從上到下,從左到右維護up和left 之後再逆序循環一次維

原创 BZOJ2442:[Usaco2011 Open]修剪草坪 單調隊列DP

設f[i]f[i] 表示前i只奶牛的最大效率,一個比較顯然的dp是f[i]=max(f[j−1]+e[i]−e[j]),i−k<=j<=if[i]=max(f[j−1]+e[i]−e[j]),i−k<=j<=i 複雜度是O(nk)O(n

原创 BZOJ1876:[SDOI2009]SuperGCD 高精度+更相減損法

更相減損法:gcd(a,b)=gcd(a/2,b/2)∗2gcd(a,b)=gcd(a/2,b/2)∗2 當a,b均爲偶數 gcd(a,b)=gcd(a/2,b)gcd(a,b)=gcd(a/2,b) 當僅有a爲偶數 gcd(a,

原创 歐拉函數

1.SDOI2008儀仗隊 題意:求n∗nn∗n 的矩陣中左下點能直接看到的點的個數 n<=40000n<=40000 注意到每條不重合的射線上最多隻有一個點能被看見 記左下角爲(0,0)(0,0) 那麼對於同一射線上的點(x

原创 關於此博客

博主老年辣雞OIer,高中在讀。 明天得回學校上課了,咕不動了。 估計NOIP完就退役,這幾十天會在博客裏發發題解這樣。 儘量不咕,爭取聯賽前BZOJ200題(flag) 博主水平有限,如有錯誤請儘量指出,謝謝)。