zoukankan      html  css  js  c++  java
  • poj3069

    为了追踪他的部队,萨鲁曼在部队中分发被称为帕兰提尔的可见石。每个帕兰提尔都有一个最大有效射程的R单位,必须由军队中的一些部队携带(即,帕兰提尔不允许在半空中“自由漂浮”)。

    帮助萨鲁曼控制中土,确定萨鲁曼所需的帕兰提尔的最低数量,以确保他的每一个仆从都在某个帕兰提尔的R单位之内。

    输入

    输入测试文件将包含多个案例。每个测试用例以一条单行线开始,其中包含整数R,所有palantir的最大有效射程(其中0≤R≤1000)和整数n,即萨鲁曼军队中的部队数量(其中1≤n≤1000)。下一行包含n个整数,指示每个部队的位置x1,…,xn(其中0个小于席1000)。文件的结尾由一个R=n=-1的测试用例标记。

    输出

    对于每个测试用例,打印一个表示所需最少palantir数的整数。

    0 3

    10 20 20

    10 7

    70 30 1 7 15 20 50

    -1 -1

    思路:贪心问题,需要将点进行排序,但是有重复的要注意,排序后开始找,当找到一个点i大于r后第i-1个点可以做放置石头的中心,在从i-1开始寻找另一半r范围。不断地循环下去,直到i==n-1。

    #include <string.h>
    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    int main()
    {
    	int r,n,i,j,a[1100];
    	while(~scanf("%d %d",&r,&n)&&r!=-1&&n!=-1)
    	{
    		int ans=0;
    		memset(a,0,sizeof(a));
    		for (i=0; i<n; i++)
    			scanf("%d",&a[i]);
    		sort(a,a+n);
    		i=0;
    		while (i<n)
    		{
    			int t=a[i];
    			i++;
    
    			while (i<n&&a[i]<=t+r) i++;
    			int p=a[i-1];
    			while (i<n&&a[i]<=p+r) i++;
    			ans++;
    		}
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
  • 相关阅读:
    Java Web编程的主要组件技术——JSP
    Java Web编程的主要组件技术——Servlet
    closest()一个在评论里很有用的函数
    ThinkPHP I方法
    PHPstorm 的快捷键
    ThinkPHP的缓存 F方法
    console.log的使用
    选择使用接口和抽象类的依据
    OOP三类继承的区别
    Thinkphp C方法
  • 原文地址:https://www.cnblogs.com/shidianshixuan/p/13376242.html
Copyright © 2011-2022 走看看