題目是說 給了n個城市 m個雷達 你只能選擇其中的k個雷達進行使用 你可以設定每個雷達的半徑,最後使得所有城市都被覆蓋,要求雷達的半徑盡可能的小(所有雷達的半徑是一樣的)
二分最小半徑,然後每次重新建立這個十字鍊錶,跑dlx
#include #includeview code#include
#include
#include
using
namespace
std;
const
int maxnode=3000
;const
int maxm=55
;int
k;struct
dlx r[n]=0; l[0]=n;
siz=n+1
;
for(int i=0; i<=m; i++)
h[i]=-1
; }
void link(int r, int
c)
else
siz++;
}void remove(int
c)
void resume(int
c)
bool
v[maxnode];
intax()
return
ret;
}bool dance(int
d)
return
false
; }
}g;const
double eps=1e-8
;struct
point
}city[maxm],station[maxm];
double
dis(point a, point b)
intmain()
printf(
"%.6lf\n
",l);
}return0;
}
hdu 2295 Radar DLX 重複覆蓋問題
題意 乙個國家有n個城市,m個雷達,我們同時操作的雷達數最多為k,給出城市與國家的座標,求小於等於k的操作下,雷達覆蓋的能夠覆蓋所有城市的最小覆蓋半徑。思路 城市作為列,雷達作為行,二分列舉雷達的半徑 dlx重複覆蓋求解。include include include include using n...
DLX重複覆蓋 hdu 2828 Lamp
題意 有n個燈m個開關 每個燈的on和off狀態都能控制乙個燈是否亮 給出n行,代表對於每個燈 哪些開關的哪個狀態可以使得第i個燈亮 思路 這裡需要注意乙個問題 如果開關1的on 狀態和開關2的on狀態能使得1號燈亮 那麼開關1 2同時處於on的時候 1號燈也是亮的。意思就是只要有乙個開關使得燈亮,...
DLX 精確覆蓋 重複覆蓋
給定乙個n m的矩陣,有些位置為1,有些位置為0。如果g i j 1則說明i行可以覆蓋j列。problem 1 選定最少的行,使得每列有且僅有乙個1.2 選定最少的行,使得每列至少乙個1.這類屬於np問題的問題,可以使用搜尋解決。但是普通的搜尋必超時無疑。因此我們要設法加優化來加快速度。dancin...