装置输出喷泉装置(贪心问题)
2013-05-09 20:32
288 查看
改章节是一篇关于装置输出的帖子
难度: 3
述描 现有一块草坪,长为20米,宽为2米,要在横中央线上放置半径为Ri的喷水装置,个每喷水装置的效果都市让以它为中央的半径为实数Ri(0<Ri<15)的圆被湿润,这有足充的喷水装置i(1<i<600)个,并且必定能把草坪全体湿润,你要做的是:选择尽量少的喷水装置,把全部草坪的全体湿润。入输 第一行m表现有m组测试数据
每一组测试数据的第一行有一个整数数n,n表现共有n个喷水装置,随后的一行,有n个实数ri,ri表现该喷水装置能覆盖的圆的半径。
输出
输出所用装置的个数
样例入输
样例输出
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。
样例入输
样例输出
每日一道理
当浮华给予我们过多欺骗,现实中的虚假几乎让我们忘却了真的存在,是真情唤回了迷离的心,是真情带给了我们最纯、最真的感觉,它流露的是美的誓言,渗透的是永恒执著的真爱。
程序如下:
#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 部门做技术工作”。
“没错”,地面上的人说到,“你是怎么知道的?”
“呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。
地面上的人说,“你一定是管理层的人”。
“没错”,热气球上的人说,“可是你是怎么知道的?”
“呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。
喷水装置(一)
间时制限: 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 部门做技术工作”。
“没错”,地面上的人说到,“你是怎么知道的?”
“呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。
地面上的人说,“你一定是管理层的人”。
“没错”,热气球上的人说,“可是你是怎么知道的?”
“呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。
相关文章推荐
- 喷泉装置(贪心问题)
- NY 题目6 喷水装置(一)(贪心问题)
- 喷水装置(二)(南阳oj12)(贪心之区间覆盖问题)
- 喷水装置(二) +区间覆盖-基础问题-贪心
- nyoj--12--喷水装置(二)(区间覆盖问题+贪心)
- 贪心问题:区间覆盖 NYOJ 喷水装置(二)
- nyoj--12--喷水装置(二)(区间覆盖问题+贪心)
- 贪心——(区间覆盖问题)——ny_6喷水装置(一)ny_12喷水装置(二)
- NYOJ 12 喷水装置(2)贪心之区间覆盖问题
- ffmpeg在android上输出滑屏问题处理
- 处理linux的echo命令不输出转义符号的问题
- 大数据 IMF 传奇 困扰很久的问题解决!ecliplse 远程提交程序到虚拟机 hadoop集群 ,ecliplse 没有显示输出 的问题解决!
- 贪心算法解决最少圆覆盖最多点问题
- 编程菜鸟的日记-初学尝试编程-输出99乘法表,考虑换行输出的问题
- 【转】关于输出用%lf和%f的问题
- js 中局部变量和全局变量输出遇到的问题
- Eclipse控制台中的中文输出乱码问题
- python 2.7输出中文字符串的编码问题
- 任务安排问题—贪心
- 通过GC输出分析内存泄露问题