标题信息:

喷水装置(二)

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

例子输入
  1. 2
  2. 2 8 6
  3. 1 1
  4. 4 5
  5. 2 10 6
  6. 4 5
  7. 6 5
例子输出
  1. 1
  2. 2

源代码

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. struct QJ
  6. {
  7. double x, y;
  8. }qj[10000];
  9. int cmp(const void* x, const void* y)
  10. {
  11. if ((*(QJ*)x).x == (*(QJ*)y).x)
  12. return (*(QJ*)x).y - (*(QJ*)y).y;
  13. else
  14. return (*(QJ*)x).x - (*(QJ*)y).x;
  15. }
  16. int sel(double e, int used)
  17. {
  18. int s = 0;
  19. double b = 0, max = 0;
  20. while (b < e)
  21. {
  22. max = 0;
  23. for (int k = 0; k < used && qj[k].x <= b; ++k)
  24. {
  25. if (qj[k].y - b > max)
  26. max = qj[k].y - b;
  27. }
  28. if (0 == max)
  29. return 0;
  30. b += max;
  31. s++;
  32. }
  33. return s;
  34. }
  35. int main()
  36. {
  37. int M, N, i, j, k, num, used;
  38. int length, width;
  39. scanf ("%d",&M);
  40. while(M--)
  41. {
  42. used = 0;
  43. scanf ("%d%d%d",&N, &length, &width);
  44. for (i = 0; i < N; i++)
  45. {
  46. scanf("%d%d", &j, &k);
  47. if (k * 2 >= width)
  48. {
  49. double t = sqrt((double)(k*k - width*width / 4));
  50. qj[used].x = j - t;
  51. qj[used++].y = j + t;
  52. }
  53. }
  54. qsort(qj, used, sizeof(qj[0]), cmp);
  55. //for (i = 0; i < used; i++)
  56. // printf("(%.1lf, %.1lf) ", qj[i].x, qj[i].y);
  57. num = sel(length, used);
  58. printf("%d\n", num);
  59. }
  60. return 0;
  61. }

版权声明:本文博主原创文章,转载请注明出处 http://blog.csdn.net/xianyun2009

nyoj 题号12 水厂(两)——南阳oj的更多相关文章

  1. 【南阳OJ分类之语言入门】80题题目+AC代码汇总

    小技巧:本文之前由csdn自动生成了一个目录,不必下拉一个一个去找,可通过目录标题直接定位. 本文转载自本人的csdn博客,复制过来的,排版就不弄了,欢迎转载. 声明: 题目部分皆为南阳OJ题目. 代 ...

  2. IMO 2021 第 1 题拓展问题的两个极值的编程求解

    IMO 2021 第 1 题拓展问题的两个极值的编程求解 本篇是 IMO 2021 第一题题解及相关拓展问题分析 的续篇. 拓展问题三: (I). 求 n 的最小值,使得 n, n + 1, ..., ...

  3. 【公众号系列】两分钟学会SAP F1技巧

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]两分钟学会SAP F1技巧   写 ...

  4. leecode刷题(12)-- 整数反转

    leecode刷题(12)-- 整数反转 整数反转 描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: - ...

  5. leecode刷题(8)-- 两数之和

    leecode刷题(8)-- 两数之和 两数之和 描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输 ...

  6. leecode刷题(6)-- 两个数组的交集II

    leecode刷题(6)-- 两个数组的交集II 两个数组的交集II 描述: 给定两个数组,编写一个函数来计算它们的交集. 示例: 输入: nums1 = [1,2,2,1], nums2 = [2, ...

  7. 【c语言】不用大与小与号,求两数最大值

    // 不用大与小与号,求两数最大值 #include <stdio.h> int max(int a, int b) { int c = a - b; int d = 1 << ...

  8. 量子化学Gaussian技术实战课 2021年4月9号--12号 远程在线教学

    材料模拟分子动力学课程 3月19号--22号 远程在线课 lammps分子动力学课程 3月12号--15号 远程在线课 第一性原理VASP实战课 3月25号-28号 远程在线课 量子化学Gaussia ...

  9. [Swust OJ 666]--初来乍到(题号都这么溜~~,递归,找规律)

    题目链接:http://acm.swust.edu.cn/problem/0666/ Time limit(ms): 1000 Memory limit(kb): 65535   Descriptio ...

随机推荐

  1. [Linux]Centos git报错fatal: HTTP request failed

    在使用git pull.git push.git clone会报类似例如以下的错误: error: The requested URL returned error: 401 Unauthorized ...

  2. C# 计算字符串/文件的哈希值(MD5、SHA)

    原文 C# 计算字符串的哈希值(MD5.SHA) 已做修改 一.关于本文 本文中是一个类库,包括下面几个函数: /// 1)计算32位MD5码(大小写):Hash_MD5_32 /// 2)计算16位 ...

  3. 风起看云涌,叶落品人生 - Google 搜索

    风起看云涌,叶落品人生 - Google 搜索 风起看云涌,叶落品人生

  4. poj1094Sorting It All Out

    主题链接: 啊哈哈,选我 题目: Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 268 ...

  5. VS2010添加默认路径,库以及Lib

    下面以OpenCV为例,不需要每次打开VS2010都手动添加OpenCV的库和lib,具体方法如下: VC++目录 步骤一:用任意文本编辑器打开:  VS安装目录中的\VC\VCWizards\def ...

  6. sha1加密java代码

    sha1 加密 java代码 public static String getSha1(String str){ if(str==null||str.length()==0){ return null ...

  7. SQLServer2012 分页语句执行分析

    上一篇文章提到了,SQLServer2012在使用Offset,Fetch语句分页时,获取了大量不需要的数据,导致查询效率低的问题. 现在让我们来看看,究竟是什么导致SQLServer不能按需取数呢? ...

  8. 解决:Could not find debuginfo pkg for dependency package glibc-2.12-1.132.el6_5.3.i686

    场景: (gdb) break main Breakpoint 1 at 0x8048417 (gdb) r Starting program: /usr/local/src/ccode/ch11/s ...

  9. C#之再议数组和集合

    1.数组 1.1简单数组 1.2 多维数组 1.3锯齿数组 1.4Array数组 1.5作为参数的数组 1.6枚举 1.7结构 以上部分可参考 http://www.cnblogs.com/ztb12 ...

  10. 本科非cs菜鸟计算机面试实录

    两年制小硕,本硕期间差不多都打酱油的.本科非cs专业,硕士cs,编程基础一般,专业基础尚可.研究生期间分析分析了pgsql数据库的源码:同时实验室一些杂项目:自己业余为了应试读了些计算机书.自己当时q ...