原创 HDU6118 度度熊的交易計劃 【費用流】

鏈接 百度之星的時候腦抽了… 跑了n次Dijkstra求了個全源最短路 拆點 i和j′的費用爲cj−ai−disi,j S到i,流量爲bi,費用爲0, i′到T流量爲di,費用爲0 這樣邊數2n2,TLE到爆 正解..

原创 51NOD1799 二分答案 【組合+分塊打表】

傳送門 顯然確定了2分的結果下標,模擬一下即可得到途經的所有mid 記錄a[mid]>m 和 a[mid]<=m的mid數量分別爲larger,samller ans=Clargern−m∗(larger!)∗Csmalle

原创 51NOD1495 中國好區間 【尺取法】

傳送門 尺取法求[i,j]區間,使得[i,j]區間size>=k且>=T的數恰好有k個,於是[1,j],[2,j],[3,j],….,[i,j]都滿足題意,以j結尾有i種方案 #include<stdio.h> #include

原创 51NOD1681 公共祖先 【dfs序+樹狀數組】

傳送門 首先求一遍樹1的dfs序,線段樹維護數組c[i] dfs遍歷樹2 當進入u點時 ①: subNum=∑out[u]i=in[u]c[i] ②: c[in[u]]+=1 ③: 遍歷u的所有孩子 ④: 以u爲樹

原创 POJ2914 Minimum Cut 【全局最小割Stoer-Wagner模板題】

題目鏈接 顯然裸的全局最小割 //O(n^3) #include<stdio.h> #include<iostream> #include<algorithm> #include<stdlib.h> #include<string

原创 【2017多校】HDU6058 Kanade's sum 【鏈表】

題目鏈接 枚舉1到n,當i是第k大時,區間左端點到右端點 比i大的數必須=k-1個 將a[1..n]放鏈表裏,枚舉完i,則將i刪去,則鏈表中所有元素都>當前枚舉的數,O(k)即可統計出區間個數 #include<stdio.h

原创 HDU6108 小C的倍數問題 【腦洞】

鏈接 證明:p進制下,當且僅當,x每位之和爲B的倍數時,x%B=0 設x=k0+k1p+k2p2+...+knpn 若(k0+k1+...+kn)%B=∑ni=0ki%B=0 又因爲x=∑ni=0ki+∑ni=1((pi−1

原创 HDU6143 Killer Names 【數學+組合】

鏈接 f(n,m)=n長度,恰好使用了m種字母的方案數 f(n,m)=mn−∑m−1i=1[Cimf(n,m−i)] 考慮name1使用了i種字母,name2使用了j種字母 則有f(n,i)∗f(n,j)∗Cim∗Cjm−

原创 51NOD1337 翻轉游戲 【貪心】

傳送門 顯然當沒有'?'時,模擬一遍即可 當位置i是'?'時,如果後續的關卡中,位置i需要關燈,且當前關卡必須關掉一些燈,則順手關掉 開燈也同理 #include<stdio.h> #include<bits/stdc++.h>

原创 【2017多校】HDU6092 Rikka with Subset 【DP】

傳送門 令xi=sum和爲i,且不包含>=i的數的集合的數量 則numi=A[1...n]中等於i的數個數=Bi−xi 於是,m爲背包大小,numi爲物品個數,每個物品體積=i,dpj=體積爲j時方案數,求背包即可 又因爲

原创 51NOD 1210 矩陣查詢 【線段樹/樹狀數組】

傳送門 對每列建區間線段樹直接肛過去 樹狀數組貌似比線段樹快很多 樹狀數組代碼(每行單獨維護): #include<stdio.h> #include<bits/stdc++.h> #define ll long long #

原创 HDU2222 Keywords Search 【AC自動機模板題】

鏈接 AC自動機一直搜即可 注意每次+end[i]後,需要把end[i]=0,避免重複計算 #include<stdio.h> #include<bits/stdc++.h> #define ll long long #def

原创 HDU6166 Senior Pan 【Dijkstra】

鏈接 老年選手,腦洞真心跟不上啊 k個點,可以分爲2個集合s1,s2 顯然dijkstra一遍即可得到s1到s2的最小距離 考慮枚舉2進制的每一位 若第i位=1,則分進s1,否則分進s2 顯然所有不同的pair組合都被包含

原创 HDU6134 Battlestation Operational 【莫比烏斯】

鏈接 設g(n)=∑ni=1∑ij=1ceiling(ij) g(n/3)=∑n/3i=1∑ij=1ceiling(ij)=∑n/3i=1∑ij=1ceiling(3i3j) 顯然gcd(3i,3j)>=3,g(n)−g(n

原创 HDU6203 ping ping ping 【LCA+BIT】

傳送門 先求dfs序in[]和out[],以及lca 將不能連通的(u,v)按lca深度從大到小排序 樹狀數組維護數組flag[] flag[ini]=0:i點與任意{v|flag[inv]=0}連通 flag[ini]