Hdu5303 Delicious Apples 贪心

题目链接:

HDU5303




题意:

有一条环形的长为L的路,仓库在位置0处,

这条路上有n棵苹果树,给出每棵苹果树的位置和苹果数量,

问用 一次最多能装K个苹果的篮子   把这条路上所有苹果采回仓库最少需要走的距离




解题思路:

这条路是环形的,先把果树分为两部分,圆的左半边算一部分,圆的右半边算另一部分

对所有苹果根据距离排序 , 用类似背包的思想,  统计左半边,右半边用 来回走(来回的长度一定小于一个圆环的周长)的方式采集完苹果所需要走的最少距离;

最后 考虑需要走一圈的情况:左边 多出k1(

判断   来回拿k1所需走的距离+来回拿k2所需走的距离  和 圆周长L 的 大小关系即可得出相应答案



代码:

#include
#include
#include
#include
#define LL long long
#define maxn 100050
using namespace std;
int dis[maxn],cnt;
int ldis[maxn],rdis[maxn];
int cnt1,cnt2;
LL lsum[maxn],rsum[maxn];

int cmp(int a,int b)
{
    return a


你可能感兴趣的:(算法)