Delicious Apples
Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 321 Accepted Submission(s): 95
Problem Description
There are
apple trees planted along a cyclic road, which is
metres long. Your storehouse is built at position
on that cyclic road.
The
th tree is planted at position
![](https://i-blog.csdnimg.cn/blog_migrate/82e20a3491b6554bca16b2e497c691bd.png)
, clockwise from position
. There are
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
delicious apple(s) on the
th tree.
You only have a basket which can contain at most
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?
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d145744987ffd848d7874a11151ad68e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0b5879407f132df93e22c848f7e7176b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b08ce66336b4f2b3a7b911c59c311d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b2776d768e6c22bb2cb38a592d3a2b78.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6a0880b16005c45f1a99e77c70ee111.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c68e6fe4944fcb1335a5b3dc47738524.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d9efe1ce21b2c8d4b2797ef8bce8879a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e55d414846558ea8e1501b5ff737c782.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e3f420d38eb1b6e230fcbf29a6d432c3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e55d414846558ea8e1501b5ff737c782.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b7afcc7f4cf457ed54232774c358e8ae.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b7afcc7f4cf457ed54232774c358e8ae.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b7afcc7f4cf457ed54232774c358e8ae.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e55d414846558ea8e1501b5ff737c782.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/43f98a79cd719cbbc21b0987c23c4b74.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b08ce66336b4f2b3a7b911c59c311d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e238b5b571c4309634b602eb993c0fe3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b08ce66336b4f2b3a7b911c59c311d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b08ce66336b4f2b3a7b911c59c311d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/82e20a3491b6554bca16b2e497c691bd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a1809c6a37efb3216c8343a8d0221e27.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8ed78b18ac14a4ecb56630a40fa44c18.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cb10f59dbf3015a94b8c009b13856360.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
There are less than 20 huge testcases, and less than 500 small testcases.
![](https://i-blog.csdnimg.cn/blog_migrate/d145744987ffd848d7874a11151ad68e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e238b5b571c4309634b602eb993c0fe3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b08ce66336b4f2b3a7b911c59c311d2.png)
The
![](https://i-blog.csdnimg.cn/blog_migrate/8ed78b18ac14a4ecb56630a40fa44c18.png)
![](https://i-blog.csdnimg.cn/blog_migrate/82e20a3491b6554bca16b2e497c691bd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6a0880b16005c45f1a99e77c70ee111.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b08ce66336b4f2b3a7b911c59c311d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6a0880b16005c45f1a99e77c70ee111.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8ed78b18ac14a4ecb56630a40fa44c18.png)
You only have a basket which can contain at most
![](https://i-blog.csdnimg.cn/blog_migrate/7b62c5ac964d1bbd8a6fa6db9499e998.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d145744987ffd848d7874a11151ad68e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0b5879407f132df93e22c848f7e7176b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b08ce66336b4f2b3a7b911c59c311d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b2776d768e6c22bb2cb38a592d3a2b78.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6a0880b16005c45f1a99e77c70ee111.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c68e6fe4944fcb1335a5b3dc47738524.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d9efe1ce21b2c8d4b2797ef8bce8879a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e55d414846558ea8e1501b5ff737c782.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e3f420d38eb1b6e230fcbf29a6d432c3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e55d414846558ea8e1501b5ff737c782.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b7afcc7f4cf457ed54232774c358e8ae.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b7afcc7f4cf457ed54232774c358e8ae.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b7afcc7f4cf457ed54232774c358e8ae.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e55d414846558ea8e1501b5ff737c782.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/43f98a79cd719cbbc21b0987c23c4b74.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b08ce66336b4f2b3a7b911c59c311d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b2776d768e6c22bb2cb38a592d3a2b78.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e238b5b571c4309634b602eb993c0fe3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a22e580c04f29f0f25e4262eec591fd5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b08ce66336b4f2b3a7b911c59c311d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/094f0c54ab74a17baaa3bd2c27e2cbb6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1b08ce66336b4f2b3a7b911c59c311d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/82e20a3491b6554bca16b2e497c691bd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a1809c6a37efb3216c8343a8d0221e27.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8ed78b18ac14a4ecb56630a40fa44c18.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cb10f59dbf3015a94b8c009b13856360.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d11c95e88ab4c8b84819401a4bd9aa72.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e238b5b571c4309634b602eb993c0fe3.png)
There are less than 20 huge testcases, and less than 500 small testcases.
Input
First line:
, the number of testcases.
Then
testcases follow. In each testcase:
First line contains three integers,![](https://i-blog.csdnimg.cn/blog_migrate/e238b5b571c4309634b602eb993c0fe3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d145744987ffd848d7874a11151ad68e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
.
Next
lines, each line contains
![](https://i-blog.csdnimg.cn/blog_migrate/82e20a3491b6554bca16b2e497c691bd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6a0880b16005c45f1a99e77c70ee111.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
.
![](https://i-blog.csdnimg.cn/blog_migrate/2d36ac317fe4904e12e17515bd2a65d1.png)
Then
![](https://i-blog.csdnimg.cn/blog_migrate/2d36ac317fe4904e12e17515bd2a65d1.png)
First line contains three integers,
![](https://i-blog.csdnimg.cn/blog_migrate/e238b5b571c4309634b602eb993c0fe3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d145744987ffd848d7874a11151ad68e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7b62c5ac964d1bbd8a6fa6db9499e998.png)
Next
![](https://i-blog.csdnimg.cn/blog_migrate/d145744987ffd848d7874a11151ad68e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/82e20a3491b6554bca16b2e497c691bd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6a0880b16005c45f1a99e77c70ee111.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0078e2c51675107576ccab364cd305ec.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0815e7e68da82e60bdb79395822f6d97.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6a0880b16005c45f1a99e77c70ee111.png)
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
解题思路:
注意到,最多只有一次会绕整个圈走一次,因此,先贪心的处理左半环和右半环,然后枚举绕整圈的时候从左侧摘得苹果和从右侧摘得苹果的数目。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <algorithm>
#define LL long long
using namespace std;
const int MAXN = 100000 + 10;
int L, N, K;
LL x[MAXN];
LL ld[MAXN], rd[MAXN];
vector<LL>l, r;
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
scanf("%d%d%d", &L, &N, &K);
l.clear(); r.clear();
int pos, num, m = 0;
for(int i=1;i<=N;i++)
{
scanf("%d%d", &pos, &num);
for(int i=1;i<=num;i++)
x[++m] = (LL)pos;
}
for(int i=1;i<=m;i++)
{
if(2 * x[i] < L) l.push_back(x[i]);
else r.push_back(L - x[i]);
}
sort(l.begin(), l.end()); sort(r.begin(), r.end());
int lsz = l.size(), rsz = r.size();
memset(ld, 0, sizeof(ld)); memset(rd, 0, sizeof(rd));
for(int i=0;i<lsz;i++)
ld[i + 1] = (i + 1 <= K ? l[i] : ld[i + 1 - K] + l[i]);
for(int i=0;i<rsz;i++)
rd[i + 1] = (i + 1 <= K ? r[i] : rd[i + 1 - K] + r[i]);
LL ans = (ld[lsz] + rd[rsz]) * 2;
for(int i=0;i<=lsz&&i<=K;i++)
{
int p1 = lsz - i;
int p2 = max(0, rsz-(K-i));
ans = min(ans, 2*(ld[p1] + rd[p2]) + L);
}
cout << ans << endl;
}
return 0;
}