题意:

在一个长度为L的环上有N棵苹果树。你的篮子容量是K个苹果。

每棵苹果树上都有a[i]个苹果。

问你从0点出发最少要走多少距离能拿完所有的苹果。

思路:

我们考虑dp,dp[0][i]代表顺时针取i个苹果的最短距离。

dp[1][i]代表逆时针取i个苹果的最短距离。

那么设苹果的总是为sum

那么ans=dp[0][i]+dp[sum-i]  (0<=i<=sum)

代码:

#include"stdio.h"
#include"algorithm"
#include"string.h"
#include"iostream"
#include"queue"
#include"map"
#include"vector"
#include"string"
#include"cmath"
using namespace std;
#define ll __int64
ll l;
struct node
{
int x,s;
} ap[123456];
ll dp[2][123456];
int cmp(node a,node b)
{
return a.x<b.x;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,k;
scanf("%I64d%d%d",&l,&n,&k);
for(int i=0; i<n; i++) scanf("%d%d",&ap[i].x,&ap[i].s);
memset(dp,0,sizeof(dp));
sort(ap,ap+n,cmp);
int tep=1,sum=0; //tep代表取了几个苹果 由于一定是递增的
for(int i=0; i<n; i++)
{
for(int j=0; j<ap[i].s; j++)
{
if(tep-k<0) dp[0][tep]=dp[0][0]+min(l,2LL*ap[i].x);
else dp[0][tep]=dp[0][tep-k]+min(l,2LL*ap[i].x);
tep++;
}
} tep=1;
for(int i=n-1; i>=0; i--)
{
sum+=ap[i].s;
for(int j=0; j<ap[i].s; j++)
{
if(tep-k<0) dp[1][tep]=dp[1][0]+min(l,2LL*(l-ap[i].x));
else dp[1][tep]=dp[1][tep-k]+min(l,2LL*(l-ap[i].x));
tep++;
}
} ll ans=999999999999999999LL;
for(int i=0;i<=sum;i++) ans=min(ans,dp[0][i]+dp[1][sum-i]);
printf("%I64d\n",ans);
}
return 0;
}

[多校2015.02.1004 dp] hdu 5303 Delicious Apples的更多相关文章

  1. 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 ...

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

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

  3. HDU 5303 Delicious Apples(思维题)

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

  4. HDU 5303 Delicious Apples(贪心 + 背包 2015多校啊)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5303 Problem Description There are n apple trees plan ...

  5. 多校第二场 1004 hdu 5303 Delicious Apples(背包+贪心)

    题目链接: 点击打开链接 题目大意: 在一个周长为L的环上.给出n棵苹果树.苹果树的位置是xi,苹果树是ai,苹果商店在0位置,人的篮子最大容量为k,问最少做多远的距离可以把苹果都运到店里 题目分析: ...

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

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

  7. HDU 5303 Delicious Apples 美味苹果 (DP)

    题意: 给一个长为L的环,起点在12点钟位置,其他位置上有一些苹果,每次带着一个能装k个苹果的篮子从起点出发去摘苹果,要将全部苹果运到起点需要走多少米? 思路: 无论哪处地方,只要苹果数超过k个,那么 ...

  8. hdu 5303 Delicious Apples

    这道题贪心 背包 假设在走半圆之内能够装满,那么一定优于绕一圈回到起点.所以我们从中点将这个分开,那么对于每一个区间由于苹果数非常少,所以能够利用pos[x]数组记录每一个苹果所在的苹果树位置,然后将 ...

  9. 2018多校第九场1004(HDU 6415) DP

    本以为是个找规律的题一直没找出来... 题目:给你一个n*m的矩阵和1-n*m个数,问有多少种情况满足纳什均衡的点只有一个.纳什均衡点是指这个元素在所在行和所在列都是最大的. 思路:吉老师直播的思路: ...

随机推荐

  1. Week Four

    2018.12.18 1.[USACO Platinum C] 2.[Gym 102028H] 3.[BZOJ 2750] 4.[BZOJ 3238] 5.[BZOJ 4310] 6.[BZOJ 38 ...

  2. python开发_bisect

    现在有如下的需求: ''' 实现这样的一个功能: 对一个班级的学生的成绩做出一些评定,评定规则是: one: [0-60) -- F two: [60-70) -- D three: [70-80) ...

  3. SCOJ 4484 The Graver Robbers' Chronicles 后缀自动机

    4484: The Graver Robbers' Chronicles 题目连接: http://acm.scu.edu.cn/soj/problem.action?id=4484 Descript ...

  4. Linux下ip route、ip rule、iptables的关系(转)

    1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目 ...

  5. php curl 抓取

    <?php set_time_limit(0); function curl_multi($urls) { if (!is_array($urls) or count($urls) == 0) ...

  6. Install Linux Kernel 4.10 In CentOS and Ubuntu

    https://www.ostechnix.com/install-linux-kernel-4-10-centos-ubuntu/

  7. 用css让一个容器水平垂直居中

    阅读目录 方法一:position加margin 方法二: diaplay:table-cell 方法三:position加 transform 方法四:flex;align-items: cente ...

  8. SharePoint 2013 本地创建解决方案

    在之前的博客<SharePoint 2013本地开发解决方案以及远程调试>中,我们介绍了如何通过修改注册表,使SharePoint 2013 解决方案可以本地编辑,也提及了即使修改注册表, ...

  9. Net线程足迹 传递参数至线程

    方法一:应用ParameterizedThreadStart这个委托来传递输入参数,这种方法适用于传递单个参数的情况. using System; using System.Collections.G ...

  10. BeagleBone折腾记(一):连接你的狗板

    BeagleBone折腾记一连接你的狗板 准备 了解BeagleBone BeagleBone社区 所需软硬件 USB连接 TTL连接 结语 准备 了解BeagleBone BeagleBone可能一 ...