注意每個圓管轄的區間不是最左或最右的端點而是和被覆蓋圖形的交點。
直接按照每個圓的left排序
每次盡量尋找靠右的就可以了。
#include #include #include #include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f
using namespace std;
//int n, m,q ;
typedef long long ll;
const double pi = 3.141592653589793;
const double r = 6378 ;
const int maxn = 10000+10;
int n,l,w;
struct point
s[maxn];
bool cmp(const point &t1, const point & t2)
int main()
}sort(s,s+e,cmp);
if(s[0].st > 0)
double up = 0;
double low = 0;
int sum = 0;
while(up < l)
}if(!flag)
low = up;
sum++;
}cout << sum << endl;
}return 0;
}
uva 10382 貪心 區間覆蓋問題
include stdio.h include cmath include algorithm include iostream using namespace std struct sgm a 10000 500 int main sort a,a cnt if cnt 0 a 0 l 0 a 1...
uva 10382題解(貪心)
題目大意 有一塊草坪,長為l,寬為w,在它的水平中心線上有n個位置可以安裝噴水裝置,各個位置上的噴水裝置的覆蓋範圍為以它們自己的半徑ri為圓。求出最少需要的噴水裝置個數。8 20 2 5 34 1 1 27 2 10 2 13 3 16 2 19 4 3 10 1 3 59 3 6 13 10 1 ...
UVA 10382 貪心 最少圓
題目 給你一塊草地,有長,寬,給你n個噴頭,每個噴頭給出中心和噴灑範圍。求覆蓋這片草地的最小碰頭數量。思路 這是經典的貪心題,從左到右,把所有噴頭排序,現在第乙個噴頭的最右邊距離為right,找到剩下噴頭中噴頭能覆蓋right的,且噴頭右邊的距離最大的噴頭,然後更新最右邊的距離right。這裡注意計...