喷泉装置2
来源:互联网 发布:unity3d游戏场景模型 编辑:程序博客网 时间:2024/04/27 23:28
题目:有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的喷水装置,每个喷水装置i喷水的效果是让以它为中心半径为Ri的圆都被润湿。请在给出的喷水装置中选择尽量少的喷水装置,把整个草坪全部润湿。
思路:将坐标转换成区间,利用区间计算出覆盖范围。
import java.util.Scanner;public class PengQuan2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); while ((t--)> 0){ //表示共有n个喷水装置,w表示草坪的横向长度,h表示草坪的纵向长度。 int n = in.nextInt(); int w = in.nextInt(); int h = in.nextInt(); int[][] rx= new int[n][2]; //存储喷泉装置的横坐标和半径 double[][] rxo= new double[n][2]; //喷泉装置覆盖的范围 for (int i = 0; i < n; ++i){ double length = 0.0; rx[i][0] = in.nextInt(); //横坐标 rx[i][1] = in.nextInt(); //半径 if (rx[i][1] <= h/2) {//当小于h/2 是不可以完整覆盖矩形,将覆盖的范围设置为0 length = 0.0; rxo[i][0] = rxo[i][1] = 0.0; }else{ length = Math.sqrt(rx[i][1]*rx[i][1] - (h/2.0)*(h/2.0));//计算出装置最大的覆盖范围 if ((rx[i][0] - length) <= 0)//当横坐标小于该长度时,左边的范围还是从0开始 { rxo[i][0] = 0.0; }else{ rxo[i][0] = rx[i][0] - length;//否则就是从它们之差算起 } if ((rx[i][0] + length) >= w){//当横坐标加上长度大于宽度时,就实现完全覆盖,将另一边的范围设置为w rxo[i][1] = w; }else{ rxo[i][1] = rx[i][0] + length;//否则就是它们之和 } } } //对范围的下限进行排序 for (int i = 0; i < n-1; ++i){ for (int j = n-i-1; j > 0; --j){ if (rxo[j][0] < rxo[j-1][0]){ double temp; temp = rxo[j][0]; rxo[j][0] = rxo[j-1][0]; rxo[j-1][0] = temp; temp = rxo[j][1]; rxo[j][1] = rxo[j-1][1]; rxo[j-1][1] = temp; } } } //找出最少装置 int count = 0; //所使用的最少装置数 int i,j; double scale = 0.0; int flag = 0; int index = 0; double mLength = 0.0; for (j = 0; j < n; ++j){ mLength = 0.0; flag = 0; for (i = 0; i < n; ++i){ if ((rxo[i][0] <= scale) && (rxo[i][1] >= scale)){ if (rxo[i][1] - scale > mLength){ mLength = rxo[i][1] - scale; index = i; flag = 1; } } } if (flag == 1){ scale = rxo[index][1]; count++; } if (scale >= w){ System.out.println(count); break; } } if (j == n){ System.out.println(0); } } }}
阅读全文
0 0
- 喷泉装置2
- 喷泉装置(一)
- 喷泉装置(贪心问题)
- 南阳理工学院 喷泉装置(一)
- 喷泉模型
- 喷泉问题
- 喷泉模型
- 喷泉模型
- H5---喷泉
- 喷水装置2
- 喷水装置2(nyoj12)
- 南阳 12 喷水装置(2)
- 南工ACM:喷水装置2
- ACM 喷水装置2 java
- 喷泉Silverlight源代码下载
- 模拟喷泉粒子
- ActionScript实现喷泉效果
- python 喷泉码
- string成员函数
- js中继承的理解
- ETH挖矿初尝
- pull镜像的过程
- LeetCode-169. Majority Element (Java)
- 喷泉装置2
- display:table-cell布局
- download site: eclipse-java-neon-3-linux-gtk-x86_64.tar.gz
- 【C++】【LeetCode】49. Group Anagrams
- 实例详解Spring Data JPA的使用
- 走进Ganglia—源码安装
- ubuntu配置Tomcat8环境
- MXNet Data IO
- RabbitMQ单机集群搭建