您的位置:首页 > 其它

装置输出喷泉装置(贪心问题)

2013-05-09 20:32 288 查看
改章节是一篇关于装置输出的帖子

喷水装置(一)

间时制限: 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;
}
}

注意: 实际上是变相的少最的间区覆盖问题。注意排序的规矩

文章结束给大家分享下程序员的一些笑话语录:

问路

有一个驾驶热气球的人发现他迷路了。他降低了飞行的高度,并认出了地面 上的一个人。他继续下降高度并对着那个人大叫,“打扰一下,你能告诉我我 在哪吗?”

下面那个人说:“是的。你在热气球里啊,盘旋在 30 英尺的空中”。

热气球上的人说:“你一定是在 IT 部门做技术工作”。

“没错”,地面上的人说到,“你是怎么知道的?”

“呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。

地面上的人说,“你一定是管理层的人”。

“没错”,热气球上的人说,“可是你是怎么知道的?”

“呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: