喷泉装置(贪心问题)
2013-05-09 09:17
841 查看
喷水装置(一)
时间限制:3000 ms | 内存限制:65535 KB难度:3
描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1<i<600)个,并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润。
输入第一行m表示有m组测试数据
每一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随后的一行,有n个实数ri,ri表示该喷水装置能覆盖的圆的半径。输出输出所用装置的个数样例输入
2 5 2 3.2 4 4.5 6 10 1 2 3 1 2 1.2 3 1.1 1 2
样例输出
2 5
喷水装置(二)
时间限制:3000 ms | 内存限制:65535 KB难度:4
描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个喷水装置i喷水的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水装置中选择尽量少的喷水装置,把整个草坪全部润湿。
输入第一行输入一个正整数N表示共有n次测试数据。
每一组测试数据的第一行有三个整数n,w,h,n表示共有n个喷水装置,w表示草坪的横向长度,h表示草坪的纵向长度。
随后的n行,都有两个整数xi和ri,xi表示第i个喷水装置的的横坐标(最左边为0),ri表示该喷水装置能覆盖的圆的半径。输出每组测试数据输出一个正整数,表示共需要多少个喷水装置,每个输出单独占一行。
如果不存在一种能够把整个草坪湿润的方案,请输出0。样例输入
2 2 8 6 1 1 4 5 2 10 6 4 5 6 5
样例输出
1 2
程序如下:
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
struct SS
{
int l;//区间左边
int r;//区间右边
}rad[10002];
bool cmp(SS s1,SS s2)//排序条件???
{
if(s1.l<s2.l) return true;
if(s1.l==s2.l&&s1.r<s2.r)
return true;
return false;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int n2,w,h;
cin>>n2>>w>>h;
for(int j=0;j<n2;j++)
{
int left,radius;
double s=(double)(radius*radius-(h/2)*(h/2));
if(s<0)//半径不足以覆盖池子的高
continue;
else
{
rad[i].l=left-sqrt(s);
rad[i].r=left+sqrt(s);
}
}
sort(rad,rad+n2,cmp);
double sum=0;
double max;
int flg=1;
int number=0;
//贪心算法
while(sum<w)
{
max=0;
for(int j=0;j<n2&&rad[j].l<=sum;j++)
{
if(rad[j].r-sum>max) max=rad[j].r-sum;
}
if(max==0)
{
flg=0;
break;
}
else
{
sum+=max;
number++;
}
}
if(flg)
cout<<number<<endl;
else
cout<<"0"<<endl;
return 0;
}
}
注意: 其实是变相的最少的区间覆盖问题。注意排序的规则
相关文章推荐
- 装置输出喷泉装置(贪心问题)
- NY 题目6 喷水装置(一)(贪心问题)
- 贪心问题:区间覆盖 NYOJ 喷水装置(二)
- 贪心——(区间覆盖问题)——ny_6喷水装置(一)ny_12喷水装置(二)
- 喷水装置(二) +区间覆盖-基础问题-贪心
- NYOJ 12 喷水装置(2)贪心之区间覆盖问题
- 喷水装置(二)(南阳oj12)(贪心之区间覆盖问题)
- nyoj--12--喷水装置(二)(区间覆盖问题+贪心)
- nyoj--12--喷水装置(二)(区间覆盖问题+贪心)
- 贪心-活动安排问题
- 贪心算法——会场安排问题
- 一个小贪心 区间覆盖问题
- 贪心之区域覆盖问题
- [SDUT](2052)装船问题 ---贪心
- NYOJ 喷水装置(二)贪心
- 用贪心算法背包问题,Java实现
- 贪心算法之活动选择问题
- 贪心算法专题小结——区间相关问题
- NYOJ 47 过河问题 (贪心)
- 纯C语言:贪心Prim算法生成树问题源码分享