3069专题

【贪心】POJ 3069:Saruman‘s Army

一、题目内容 POJ 3069 原题地址 二、题意解释 一个直线上有N个点。点i的距离是Xi。从这些点中选取若干个加上标记。要求:对于每个点,与其距离为R的范围内必有做标记的点(包括自身)。求至少标记多少点才能满足要求。 三、代码及注释 #include<stdio.h>#include<algorithm>using namespace std;int X[1001];in

LeetCode 3069.将元素分配到两个数组中 I

给你一个下标从 1 开始、包含 不同 整数的数组 nums ,数组长度为 n 。 你需要通过 n 次操作,将 nums 中的所有元素分配到两个数组 arr1 和 arr2 中。在第一次操作中,将 nums[1] 追加到 arr1 。在第二次操作中,将 nums[2] 追加到 arr2 。之后,在第 i 次操作中: 如果 arr1 的最后一个元素 大于 arr2 的最后一个元素,就将 nums[

POJ 3069 Saruman's Army

题目链接:POJ 3069 题意:第一行r 和 n,表示半径为r,n个点。要求每个点周围距离r以内(包括r和0)都必须有1个点被标记,问至少需要标记多少个点。 思路:贪心,先从最左边点开始找与其距离最接近r且小于r的点,将此点标记,然后以此点开始向右找与其距离最接近r且大于r的点,将这个点作为新的起点,重复以上步骤。 注意判断不能超过界限。 挑战程序设计竞赛,贪心 2.2