傳送門我們先考慮低維的情況
這應該有手就行
可惜我沒有手
我們注意到,我們肯定都是一次性將一次一行或者一列直接覆蓋完全,這一定是最優的方法
之後我們觀察乙個矩陣,其只需要\(min(x,y)\)條線段就可以覆蓋完全,這剛好就是題目中所提到的代價計算方式
然後就可以轉換成為最小點覆蓋的問題
三維的情況也有點類似,我們每一次一定是將乙個面刪去,
然後你會發現不會三分圖匹配這種玩意,所以考慮暴力列舉一維,剩下的兩維二分圖匹配即可
#include#include#include#includeusing namespace std;
vectorg[5005];
int t;
int a,b,c;
int minn,tot;
int dir[4][5005],ans;
int mat[5005],vis[5005];
int used[5005];
void init()
bool dfs(int u,int tag)
}if(b==minn)
else if(c==minn)
/*for(int i=1;i<=3;i++)
HNOI2013 比賽 搜尋
搜尋。lg傳送門 直接暴力有60,考場上寫的60,結果掛成40。考慮在暴力的同時加個記憶化,把剩下的球隊數和每支球隊的得分情況hash一下,每次搜到還剩 t 個隊的時候就在雜湊表裡找一下,有就拿來算答案,沒有就把這次的結果存進雜湊表。複雜度 o 能過 include include include ...
HNOI2013 遊走題解
題目鏈結 給你乙個 n 個點 m 條邊的無向連通圖從 1 號點出發,每次隨機選擇當前頂點的某條邊走到下乙個點,並獲得這條邊的分數,分數為這條邊的編號,一旦到了 n 號點就結束遊走,總分為獲得分數的總和。安排每條邊的編號,使總分的期望值最小,並輸出最小的期望值 看完題目能夠發現,我們只要求出經過每一條...
HNOI 2013 旅行 (數學)
感覺此題難啊,數學還是太渣了,看了半天的題解才算明白了點兒。給乙個長度為n且僅由1和 1組成的序列ai,i 1,2,n,每個位置都有另乙個值vi,要求用某種方案將序列劃分為m 0 m n 個非空連續子串行,使得所有子串行中和的最大絕對值最小,並且在所有滿足上述條件的方案中劃分位置的v i 序列字典序...