NYOJ6 之喷水装置(一)
http://acm.nyist.net/JudgeOnline/problem.php?pid=6
java1:
主要用到贪心算法。
由题目很明显可以得出只要是半径大于1的喷水装置都是可以被选中的,每个装置能够湿润草坪的有效长度为2*sqrt(r*r-1);题目要我们求的是要选择尽量少的的喷水装置,所以可以贪心一下,先按半径从大到小的顺序排序一下,然后for()或while()一下就搞定。
import java.util.*;
public class Main {public static void main(String args[]) {Scanner cin = new Scanner(System.in);int count,a; count=cin.nextInt(); while (count>0) {a = cin.nextInt(); List<Double> arrs=new ArrayList<Double>();double sum=0;int result=0;for(int i=0;i<a;i++){arrs.add(cin.nextDouble());}Collections.sort(arrs,new Comparator<Double>() {public int compare(Double o1, Double o2) { //不能直接相减丢失精度。//System.out.println("a2="+o2+",a1="+o1+",o3="+(o2-o1)); if(o2>o1){return 1;}else{return -1;}}});for(int j=0;j<arrs.size();j++){double val=arrs.get(j);if(val<=1.0){//已经要使用1了break;} if(sum>=20.0){break;}else{sum+=2*(double)(Math.sqrt(val*val-1));result++;}}System.out.println(result);count--;}cin.close(); }
}
java2:
乍起来有点不知如何下手, 其实只要算出 这个草地的斜边长度, 然后只要全部圆的半径合大于等于这个斜边长度的一半就可以了(但是必须丢弃半径小于等于1的装置,在横中线上无论怎么放,它是无法完全覆盖草地的)。
import java.util.*;
public class Main {public static void main(String args[]) {Scanner cin = new Scanner(System.in);int count,a;count=cin.nextInt();double len = Math.sqrt(20*20 + 2*2)/2; while (count>0) {a = cin.nextInt(); List<Double> arrs=new ArrayList<Double>();double sum=0;for(int i=0;i<a;i++){arrs.add(cin.nextDouble());}Collections.sort(arrs,new Comparator<Double>() {public int compare(Double o1, Double o2) {if(o2>o1){return 1;}else{return -1;}}});int j=0;for( j=0;j<arrs.size();++j){double val=arrs.get(j);if(val<=1.0){//已经要使用1了break;} sum+=val; if(sum>=len){break;}}System.out.println(j+1);count--;}cin.close();}
}
最优答案:
#include<iostream>
#include<vector>
#include<functional>
#include<algorithm>
#include<cmath>
using namespace std;double Length(double R,double b)
{return 2*sqrt(R*R-b*b/4);
}
int main()
{const double l=20,w=2;int n;cin>>n;while(n--){int m;cin>>m;double R;vector<double> Rs;while(m--){cin>>R;Rs.push_back(R);}sort(Rs.begin(),Rs.end(),greater<double>());double sum=0;int i;for(i=0;i!=Rs.size();i++){if (sum>l) break;sum+=Length(Rs[i],w);}cout<<i<<endl;}
}
NYOJ6 之喷水装置(一)相关推荐
- NYOJ-6:喷水装置(一)
描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1& ...
- 贪心算法之——喷水装置一(nyoj6)
描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i(1& ...
- NYOJ6——喷水装置(一)
喷水装置(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述:现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它 ...
- NYOJ6——喷水装置(一)(贪心)
题目描述: 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i ...
- NYOJ 12 喷水装置(二)
喷水装置(二) 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的 ...
- 问题 A: 喷水装置(一)
题目描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置, 每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<Ri<15)的圆被湿润,这有充足的喷水装置i ...
- UVA10382喷水装置
题意: 给你一个矩形的空地,然后有一些圆形的喷水装置,每个装置的圆心都在矩形宽的中间位置,然偶给你每个矩形的圆心位置和半径,问你最少多少个喷水装置可以把矩形的所有编辑都覆盖上. 思路: ...
- 算法打卡39:喷水装置
365算法每日学计划 39打卡: 描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0<ri<15)的圆 ...
- 贪心算法之——喷水装置二(nyoj12)
题目描述: 喷水装置(二) 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000) ...
最新文章
- 中国电子信息产业发展研究院主办的2018中国软件大会上大快搜索“又双叒叕”获奖了...
- python pytz 获取指定时区的时间
- jdbc template 学习总结
- Hough 检测直线
- SM37作业条目的存储表
- dotNET Core 3.X 使用 Web API
- java中已定义类型car_Java 8 习惯用语(8):Java 知道您的类型
- openssh修复(CVE-2017-15906)(CVE-2018-15919)这两个漏洞
- 小甲鱼python课后题简书_【Python爬虫】-笨办法学 Python 习题01-10
- jquery怎么判断不同的字显示不同的颜色_不知道怎么封装代码?看看这几种设计模式吧!...
- win10无法装载iso文件_装载Win10 ISO镜像文件的具体方法
- 深入理解高级数据结构之红黑树
- 爬虫实例 8684公交网-太原公交线路信息
- 在数据库使用期间创建OMF(Oracle Managed Files,Oracle管理的文件)
- C语言|鼠标点击开始
- Rainbow: 结合深度强化学习的改进
- unix进程间的通信方式
- Pytorch预训练模型加载
- c语言约会,初次约会的十个话题 这么和女生聊天保准不冷场
- 好书《无毒一身轻—21天改变体质》- 总结
热门文章
- 小学四年级上册中的计算机,小学四年级上册信息技术.doc
- [Errno 14] curl#37 - Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-nux.ro 解决
- php一年节日,自动获取节日日期并显示灯笼效果的PHP源码
- 制作QQ登录界面(UI版)
- Error running ‘Tomcat 8.5.51‘: Address localhost:4099 is already in usebaoc
- C++ 复数类编写小练习
- 单片机c语言开发实验心得,在单片机C语言编程中的心得体会
- 安装linux7 没有图形化界面,CentOs7 安装后无图形界面,安装图形界面(yum groupinstall GNOME Desktop Graphical Administration ...
- MERR-04B、MERR-03A、MERR-03B叠加式泄压控制阀控制器
- L1正则化方法(拉格朗日)和L2(岭回归)正则化方法的不同