題意:乙個國家有n個城市,m個雷達,我們同時操作的雷達數最多為k,給出城市與國家的座標,求小於等於k的操作下,雷達覆蓋的能夠覆蓋所有城市的最小覆蓋半徑。
思路:城市作為列,雷達作為行,二分列舉雷達的半徑+dlx重複覆蓋求解。
#include #include#include
#include
using
namespace
std;
//freopen("data.in","r",stdin);
#define cl(a,num) memset((a),(num),sizeof(a))
#define inf 0x7f7f7f7f
#define m 55
#define n 55
#define maxn 3317
const
double eps = 1e-8
;const
int head = 0
;struct
nodecity[n],rar[m];
intu[maxn],d[maxn],l[maxn],r[maxn],c[maxn],row[maxn];
ints[n];
bool
hash[m];
intn,m,k;
intsize;
int dblcmp(double
x)bool isok(int a,int b,double
r)void
init()
l[head] = n; r[head] = 1
; r[n] =head;
size = n + 1;}
void build(int
r)
else
size++;}}
}}void remove(int
ci)}
void resume(int
ci)}
inth()}}
}return
res;
}bool dfs(int
dep)
}for (i = d[ci]; i != ci; i =d[i])
if (dfs(dep + 1)) return
true
;
for (j = l[i]; j != i; j =l[j])
resume(i);
}return
false;}
intmain()
else l =mid;
}printf(
"%.6lf\n
",ans);
}return0;
}
hdu2295DLX重複覆蓋 二分
題目是說 給了n個城市 m個雷達 你只能選擇其中的k個雷達進行使用 你可以設定每個雷達的半徑,最後使得所有城市都被覆蓋,要求雷達的半徑盡可能的小 所有雷達的半徑是一樣的 二分最小半徑,然後每次重新建立這個十字鍊錶,跑dlx include include include include includ...
HDU 1258 Sum It Up 雜湊表判重
判重雜湊表解決 include using namespace std const int nmax 15 const int inf 10007 int t,n int a nmax int flag int hash inf 15 int head inf int head,next int a...
hdu 4277 爆搜 set 去重
題目 給出n條邊,每條邊有一定的長度,現在要用所有的邊圍成三角形,問能夠圍成多少個不同的三角形 三邊至少有一邊不等 include include include includeusing namespace std int n,t,edge 17 int ans,sum set s int min...