题目链接:

HDU5303

题意:

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

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

问用 一次最多能装K个苹果的篮子   把这条路上全部苹果採回仓库最少须要走的距离

解题思路:

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

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

最后 考虑须要走一圈的情况:左边 多出k1( <K)个苹果,右边多出k2 (<k) 个苹果.

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

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#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<b;
}
int main()
{
// freopen("in.txt","r",stdin);
int T,m,n,k,a,b,L;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&L,&m,&k);
cnt=cnt1=cnt2=0;
while(m--)
{
scanf("%d%d",&a,&b);
if(a==0)
continue;
if((a<<1)<=L)
for(int i=1;i<=b;i++)
ldis[++cnt1]=a;
else
for(int i=1;i<=b;i++)
rdis[++cnt2]=L-a;
}
sort(ldis+1,ldis+cnt1+1,cmp);
sort(rdis+1,rdis+cnt2+1,cmp);
cnt=cnt1+cnt2; for(int i=1;i<=cnt1;i++) //左半边 通过来回的方式拿完
if(i<=k) lsum[i]=ldis[i];
else lsum[i]=ldis[i]+lsum[i-k]; for(int i=1;i<=cnt2;i++) //右半边.......
if(i<=k) rsum[i]=rdis[i];
else rsum[i]=rdis[i]+rsum[i-k]; LL ans=(lsum[cnt1]+rsum[cnt2])<<1; k=min(k,cnt);
int l_,r_;
for(int i=1;i<=cnt1&&i<=k;i++) //枚举走一圈时,左半边拿的苹果数量
{
l_=cnt1-i,r_=max(0,cnt2-k+i);
ans=min(ans,L+((lsum[l_]+rsum[r_])<<1));
}
printf("%I64d\n",ans);
}
return 0;
}

Hdu5303 Delicious Apples 贪心的更多相关文章

  1. [2015hdu多校联赛补题]hdu5303 Delicious Apples

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5303 题意:在一个长为L的环形路径上种着一些苹果树,告诉你苹果树的位置(题目中以0~L指示坐标)及苹果 ...

  2. 解题报告 之 HDU5303 Delicious Apples

    解题报告 之 HDU5303 Delicious Apples Description There are n apple trees planted along a cyclic road, whi ...

  3. HDU 5303 Delicious Apples (贪心 枚举 好题)

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  4. hdu5303(2015多校2)--Delicious Apples(贪心+枚举)

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  5. Delicious Apples (hdu 5303 贪心+枚举)

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  6. HDU 5303 Delicious Apples (2015多校第二场 贪心 + 枚举)

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  7. dp - 2015 Multi-University Training Contest 2 1004 Delicious Apples

    Delicious Apples Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5303 Mean: 一条长为L的环形路上种着n棵 ...

  8. 2015 Multi-University Training Contest 2 hdu 5303 Delicious Apples

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  9. HDU 5303 Delicious Apples(思维题)

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

随机推荐

  1. 对比hive和mysql查询汇总

    由于底层的处理机制大不相同,hive和mysql在查询上还是有较大差异的! 单个表的select操作 最简单的查询 ,字段2 frome 表名 where 字段 [not]in(元素1,元素2): 例 ...

  2. phpExcel导出excel打不开问题

    用wps和office都打不开,使用旧版的office打开了 出现了一些 warming警告,虽然warming不影响函数的执行,但是php导出excel文件,是header出来的.这个warning ...

  3. 08Webpage Form

    Webpage Form 表单(form)在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域:包含 ...

  4. vue的自定义指令控制菜单权限

    用户登录后,选择子节点,节点中含有多个菜单,可以根据后台返回的权限数据进行权限控制 在vue上挂载自定义指令方法,根据后台返回权限移除相应节点 import Cookies from "js ...

  5. CentOS下安装微软雅黑字体

    CentOS下安装微软雅黑字体   微软雅黑下载地址:http://download.csdn.net/detail/u012547633/9796219 1.先从你本机 C:\Windows\Fon ...

  6. LeetCode_16 3SumCloest

    3Sum Closest Given an array nums of n integers and an integer target, find three integers in nums su ...

  7. Semi-colon expected (eclipse 引入 json文件报错)

    最近做的项目用到的前端框架有一个json文件夹,里面全是json文件,所以导入Eclipse的时候会在整个项目上都是红叉,但是其实不影响项目运行的,之前忙着码代码也没时间管他,这个红叉存留了一个月!今 ...

  8. exception对象的使用及常用方法

    exception对象的使用及常用方法 制作人:全心全意 exception对象用来处理JSP文件执行时发生的所有错误和异常,只有在page指令中设置为isErrorPage属性值为true的页面中才 ...

  9. JavaScript 面向对象的编程(三) 类的继承

    定义父类和子类的继承关系 //声明父类 function SuperClass(){ this.superValue = true; } //为父类添加共有方法 SuperClass.prototyp ...

  10. 【Codeforces 977F】Consecutive Subsequence

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 设f[i]表示i作为序列的最后一个数字,最长的连续序列的长度. 用f[i]和f[i-1]+1来转移即可 [代码] import java.io ...