Delicious Apples

Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)

Total Submission(s): 395    Accepted Submission(s): 122

Problem Description
There are n
apple trees planted along a cyclic road, which is
L
metres long. Your storehouse is built at position
0
on that cyclic road.

The ith
tree is planted at position xi,
clockwise from position 0.
There are ai
delicious apple(s) on the ith
tree.



You only have a basket which can contain at most K
apple(s). You are to start from your storehouse, pick all the apples and carry them back to your storehouse using your basket. What is your minimum distance travelled?

1≤n,k≤105,ai≥1,a1+a2+...+an≤105

1≤L≤109

0≤x[i]≤L



There are less than 20 huge testcases, and less than 500 small testcases.

 
Input
First line: t,
the number of testcases.

Then t
testcases follow. In each testcase:

First line contains three integers, L,n,K.

Next n
lines, each line contains xi,ai.
 
Output
Output total distance in a line for each testcase.
 
Sample Input
2
10 3 2
2 2
8 2
5 1
10 4 1
2 2
8 2
5 1
0 10000
 
Sample Output
18
26
 
Source
 
Recommend
wange2014   |   We have carefully selected several similar problems for you:  

pid=5309" target="_blank">5309 5308 5307 5306 5305 

题意:在一个圆上有n个苹果树。告诉苹果树的位置和每棵树上的苹果个数,另一个容量为K的篮子,用篮子去摘苹果,起点在位置0,重复去摘直到把全部的苹果都摘回到0,问走的最短距离为多少。

思路:首先将圆一分为二,在圆形两側能拿满的话肯定就是仅仅走半边再回去,这样比走整圈划算。另外还要想到最后两边都不足K个了。这个时候最多须要走一个整圈,我们不知道这个整圈拿了哪几个苹果,那么就枚举K个。

比赛时仅仅是想到了贪心,最后那一部分没有枚举,另外这里的苹果进行了离散化,由于苹果总数仅仅有1e5,大大简化了代码。自己当时写的太冗余=-=

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <stack>
#include <vector>
#include <set>
#include <queue>
#pragma comment (linker,"/STACK:102400000,102400000")
#define pi acos(-1.0)
#define eps 1e-6
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,r
#define FRE(i,a,b) for(i = a; i <= b; i++)
#define FREE(i,a,b) for(i = a; i >= b; i--)
#define FRL(i,a,b) for(i = a; i < b; i++)
#define FRLL(i,a,b) for(i = a; i > b; i--)
#define mem(t, v) memset ((t) , v, sizeof(t))
#define sf(n) scanf("%d", &n)
#define sff(a,b) scanf("%d %d", &a, &b)
#define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)
#define pf printf
#define DBG pf("Hi\n")
typedef long long ll;
using namespace std; #define INF 0x3f3f3f3f
#define mod 1000000009
const int maxn = 1e5+10;
const int MAXN = 2005;
const int N = 1005; ll Len,n,k,cnt;
ll pos[maxn],dp_l[maxn],dp_r[maxn]; //dp[i]表示拿完前i个苹果要走的的距离和
vector<ll>posl,posr; int main()
{
#ifndef ONLINE_JUDGE
freopen("C:/Users/lyf/Desktop/IN.txt","r",stdin);
#endif
ll i,j,t;
scanf("%lld",&t);
ll x,num;
while (t--)
{
cnt=1;
scanf("%lld%lld%lld",&Len,&n,&k);
posl.clear();
posr.clear();
for (i=0;i<n;i++)
{
scanf("%lld%lld",&x,&num);
for (j=0;j<num;j++)
pos[cnt++]=x;
}
cnt--;
k=min(k,cnt);
for (i=1;i<=cnt;i++)
{
if (2*pos[i]<Len)
posr.push_back(pos[i]);
else
posl.push_back(Len-pos[i]);
}
sort(posl.begin(),posl.end());
sort(posr.begin(),posr.end());
dp_l[0]=dp_r[0]=0;
for (i=0;i<(ll)posl.size();i++)
{
if (i+1<=k)
dp_l[i+1]=posl[i];
else
dp_l[i+1]=dp_l[i+1-k]+posl[i];
}
for (i=0;i<(ll)posr.size();i++)
{
if (i+1<=k)
dp_r[i+1]=posr[i];
else
dp_r[i+1]=dp_r[i+1-k]+posr[i];
}
ll ans=(dp_l[posl.size()]+dp_r[posr.size()])*2;
for (i=0;i<=posr.size()&&i<=k;i++)
{
ll right=posr.size()-i;
ll left=max((ll)0,(ll)(posl.size()-(k-i)));
ans=min(ans,(ll)Len+(dp_l[left]+dp_r[right])*2);
}
printf("%lld\n",ans);
}
return 0;
}

Delicious Apples (hdu 5303 贪心+枚举)的更多相关文章

  1. 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 (2015多校第二场 贪心 + 枚举)

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

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

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

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

  5. HDU 5303 Delicious Apples(思维题)

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

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

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

  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. 解题报告 之 HDU5303 Delicious Apples

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

  9. POJ 1018 Communication System 贪心+枚举

    看题传送门:http://poj.org/problem?id=1018 题目大意: 某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m个厂家提供生产,而每个厂家生产的同种设备都 ...

随机推荐

  1. C#(服务器)与Java(客户端)通过Socket传递对象(序列化 json)

    下面详细讲解实现的关键步骤:          通信关键: C#和java用Socket通信,发送数据和接收数据可以统一采用UTF-8编码,经过测试,使用UTF-8编码可以成功传递对象. 对于Sock ...

  2. CMMI的SG/GG概念区别与SP/GP概念的区别

    每一个 “流程区域” 会细分为多个子目标.若该子目标只对应单一的流程区域,称为 “特定目标(Specific goal)”:若子目标会涵跨多个流程区域,则称为 “一般目标(Generic goal)” ...

  3. B. Sereja and Suffixes(cf)

    http://codeforces.com/problemset/problem/368/B B. Sereja and Suffixes time limit per test 1 second m ...

  4. A Round Peg in a Ground Hole(圆与凸包)

    http://poj.org/problem?id=1584 题意:判断所给的点能不能形成凸包,并判断所给的圆是否在凸包内. 改了好几天的一个题,今天才发现是输入顺序弄错了,办过的最脑残的事情..sa ...

  5. [Apple开发者帐户帮助]二、管理你的团队(7)管理服务器帐户

    如果在配置机器人以在多个设备上运行应用程序时向团队添加服务器,允许Xcode Server为您管理签名,或者配置机器人以创建iOS App文件,则服务器可以访问您的资产并显示在您的开发人员帐户 您可以 ...

  6. layui富文本编译器添加图片

    1.创建富文本编辑器 <form class="layui-form" method="post" id="myForm" encty ...

  7. css3 选择器 权重问题 (第一部分)

    其实我现在写的这些博文笔记都是我很早之前学习的时候所写的笔记,只不过之前是没有写博客的习惯,所以都是写在word文档中个人需要的时候看而已.最近刚刚开了博客,所以想将自己的笔记贴到博客. 但是现在看来 ...

  8. 5.13Mysql数据库Database

    数据库的基本概念 1.什么是数据库: 用于存储和管理数据的仓库. 2.数据库的特点: 1.持久化存储数据的.其实数据库就是一个文件系统. 2.方便存储和管理数据 3.使用了统一的方式操作数据库---s ...

  9. Flex使用总结

    最近做的项目因为对浏览器的兼容要求是IE10以上,所以大胆的使用了Flex布局,这里总结一些使用心得仅供参考. 一,Flex简单介绍 Flex是Flexible Box的缩写,意为”弹性布局”.任何一 ...

  10. 高通处理器手机 解锁Bootloader 教程

    目前很多手机都需要解锁Bootloader之后才能进行刷机操作   本篇教程教你如何傻瓜式解锁Bootloader 首先需要在设置-关于手机 找到版本号(个别手机可能是内核版本号,甚至其他) 然后 快 ...