博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2015 多校赛 第二场 1004 hdu(5303)
阅读量:5085 次
发布时间:2019-06-13

本文共 1526 字,大约阅读时间需要 5 分钟。

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?
1n,k105,ai1,a1+a2+...+an105
1L109
0x[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
 
题意:给一个圈,设起点为0,给出周长为L,在圈中有 n 棵树,依次给出按顺时针方向与起点的距离,树上的苹果数。给出篮子大小(最多能装的苹果树)。问最少走多远可以采集完所有苹果。
 
思路:
以过起点的直径为界,以苹果树在左半圆和右半圆分别贪心,得到要走的距离。最后枚举最后走一整圈所采集的苹果(详见代码)。比较得出最小值。
#include
#include
#include
#include
using namespace std;#define maxn 100050 int d_l[maxn],d_r[maxn],l,n,k,t,x,a,L,R;long long tot_l[maxn],tot_r[maxn],ans,tmp;int main(){ scanf("%d",&t); while(t--){ L=R=0; scanf("%d%d%d",&l,&n,&k); for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/names-yc/p/4703051.html

你可能感兴趣的文章
动态规划算法之最大子段和
查看>>
linux c:关联变量的双for循环
查看>>
深入浅出理解zend framework(三)
查看>>
python语句----->if语句,while语句,for循环
查看>>
javascript之数组操作
查看>>
LinkedList源码分析
查看>>
TF-IDF原理
查看>>
用JS制作博客页面背景随滚动渐变的效果
查看>>
JavaScript的迭代函数与迭代函数的实现
查看>>
一步步教你学会browserify
查看>>
Jmeter入门实例
查看>>
亲近用户—回归本质
查看>>
中文脏话识别的解决方案
查看>>
CSS之不常用但重要的样式总结
查看>>
Python编译错误总结
查看>>
URL编码与解码
查看>>
日常开发时遇到的一些坑(三)
查看>>
Eclipse 安装SVN插件
查看>>
深度学习
查看>>
TCP粘包问题及解决方案
查看>>