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;
    }
  • 相关阅读:
    pdf 去水印 比较好用
    ffmpeg从视频中每隔几秒提取一张图片
    tampermonkey 网盘直链下载助手
    淘工厂买的usb 蓝牙5.0 外置台式机 适配器(下载)
    Apache Doris 轻松入门和快速实践
    一步一步编译最新版Apache Doris 0.15版本的详细过程
    go使用msgpack
    服务接口杂谈
    关于真伪3层所讨论的
    jattach最近的一些更新
  • 原文地址:https://www.cnblogs.com/shidianshixuan/p/13376242.html
Copyright © 2011-2022 走看看