首页 > 其他分享 >POJ 3069 Saruman's Army(贪心)

POJ 3069 Saruman's Army(贪心)

时间:2023-05-26 15:03:13浏览次数:58  
标签:包含 标记 int 进去 while POJ Saruman 3069 我们


传送门

这个题是说给你n个点,然后让你标记其中尽可能少的点,使得n个点都处于被标记点左右不超过R的区间内

我们使用的是贪心算法,也就是我们要将被标记的点尽可能的朝右边去即可,首先我们将他们从左到右进行排序,第一个我们所选取的被标记的点应该是能够包含掉左边的点的最靠右的点。。。

假设s是我们还没有被包含进去的最左边的点,那么我们要一直往右找到最右边的那个能够将这个点包含进去的点;等我们找到了它,我们就将它所能包含进去的点全部跳过,这样我们就能得到下一个还没有被包含进去的最左边的点。
 

#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
    int r,n,a[10010];
    while(scanf("%d %d",&r,&n) != EOF)
    {
        if(r == -1 && n == -1)
            break;
        for(int i = 0;i < n; i++)
            scanf("%d",&a[i]);
        sort(a,a + n);
        int i = 0,ans = 0;
        while(i < n)
        {
            int s = a[i++];
            while(i < n && a[i] <= s + r)
                i++;
            int p = a[i-1];
            while(i < n && a[i] <= p + r)
                i++;
            ans++;
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

标签:包含,标记,int,进去,while,POJ,Saruman,3069,我们
From: https://blog.51cto.com/u_16131191/6356122

相关文章

  • POJ 1182 食物链
    解题思路:并查集经典中的经典题,在网上看了很多大牛的思路,大部分是增加一个结构体存动物间的关系,结合并查集判断,但是关系域的更新比较复杂,一下子不太容易理解。所以就有人另开思路,这里介绍一个十分巧妙的思路。一般我们都会把一个动物当成一个节点,然后去执行并查集等操作。但是有位大......
  • POJ 2251 Dungeon Master(三维BFS)
    题目看起来很厉害,实际上看懂了并不难,开一个三维的数组,这里需要注意的是第一维是高度,然后就是简单的BFS了,还有不同就是三维的时候有六个方向可以走,在前后左右的基础上多了一个向上和向下的走法,还有一个问题就是多个输入样例要注意每次都要初始化,我做的时候就因为这个WA了好几次,最后......
  • POJ 2080 Calendar
    题目链接:http://poj.org/problem?id=2080题目不是很难,也没什么说的,直接看代码吧:#include<iostream>#include<stdio.h>usingnamespacestd;intyear(intm){ if(m%4==0&&m%100!=0||m%400==0) return1; else return0;}intmain(){ intn,i,j......
  • 区分PO、VO、 BO、 DTO、 POJO
     分层领域模型规约:DO(DataObject):此结构与数据库表结构一一对应,通过DTO向上传输数据源对象。DTO(DataTransferObject):数据传输对象,Service或Manager向外传输的对象。BO(BusinessObject):业务对象,由Service层输出的封装业务逻辑的对象。AO(ApplicationObject):应用......
  • Tallest Cow(最高的牛)poj3263
    题目描述:FJ'sN(1≤N≤10,000)cowsconvenientlyindexed1..Narestandinginaline.Eachcowhasapositiveintegerheight(whichisabitofsecret).YouaretoldonlytheheightH(1≤H≤1,000,000)ofthetallestcowalongwiththeindexIoftha......
  • poj-1519
    //132K0MSC++#include<cstdio>#include<cstring>usingnamespacestd;longlonggetDigitSum(longlongval){longlongdigitSum=0;if(val<10){returnval;}else{while(val){digitSum+=......
  • poj-2362
    //132K141MSC++withbeginSearchPos#include<cstdio>#include<cstring>#include<cstdlib>usingnamespacestd;intcmp(constvoid*a,constvoid*b)//降序{return*(longlong*)b-*(longlong*)a;}longlongfourEdgeLeng......
  • poj-2371
    //524K63MSC++#include<cstdio>#include<cstring>#include<cstdlib>intcmp(constvoid*a,constvoid*b){return*((int*)a)-*((int*)b);}usingnamespacestd;constintMAX=100001;intarray[MAX];intdataBaseSiz......
  • poj-1930
    //144K0MSC++#include<cstdio>#include<cstring>#include<cmath>intgcd(inta,intb){if(b==0){returna;}elseif(a>b){returngcd(b,a%b);}else{returngcd(a,b%a);}}/......
  • poj-1023
    //184K0MSC++#include<cstdio>#include<cstring>usingnamespacestd;charNP[65];//-1:n,1:pcharstr[80];chardigitUsed[80];charbinaryExpression[80];intcaseNum;intlength;longlongval;voidsolve(longlongval){l......