hdu 5303 Delicious Apples(贪心)
2015-07-31 22:57
363 查看
题目链接:hdu 5303 Delicious Apples
最多转一圈,所以考虑一下转一圈的情况,和直接取完回去的情况。
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 5;
int L, N, K;
ll disl[maxn], disr[maxn];
vector<int> l, r;
ll solve () {
sort(l.begin(), l.end());
sort(r.begin(), r.end());
int sil = l.size(), sir = r.size();
for (int i = 0; i < sil; i++)
disl[i + 1] = (i + 1 <= K ? l[i] : disl[i + 1 - K] + l[i]);
for (int i = 0; i < sir; i++)
disr[i + 1] = (i + 1 <= K ? r[i] : disr[i + 1 - K] + r[i]);
ll ans = (disl[sil] + disr[sir]) * 2;
for (int i = 0; i <= sil && i <= K; i++) {
int p = max(0, sir - (K - i));
ans = min(ans, 2 * (disl[sil - i] + disr[p]) + L);
}
return ans;
}
int main () {
int cas;
scanf("%d", &cas);
while (cas--) {
l.clear();
r.clear();
int x, a;
scanf("%d%d%d", &L, &N, &K);
for (int i = 0; i < N; i++) {
scanf("%d%d", &x, &a);
for (int j = 0; j < a; j++) {
if (2 * x <= L)
l.push_back(x);
else
r.push_back(L - x);
}
}
printf("%lld\n", solve());
}
return 0;
}
最多转一圈,所以考虑一下转一圈的情况,和直接取完回去的情况。
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 5;
int L, N, K;
ll disl[maxn], disr[maxn];
vector<int> l, r;
ll solve () {
sort(l.begin(), l.end());
sort(r.begin(), r.end());
int sil = l.size(), sir = r.size();
for (int i = 0; i < sil; i++)
disl[i + 1] = (i + 1 <= K ? l[i] : disl[i + 1 - K] + l[i]);
for (int i = 0; i < sir; i++)
disr[i + 1] = (i + 1 <= K ? r[i] : disr[i + 1 - K] + r[i]);
ll ans = (disl[sil] + disr[sir]) * 2;
for (int i = 0; i <= sil && i <= K; i++) {
int p = max(0, sir - (K - i));
ans = min(ans, 2 * (disl[sil - i] + disr[p]) + L);
}
return ans;
}
int main () {
int cas;
scanf("%d", &cas);
while (cas--) {
l.clear();
r.clear();
int x, a;
scanf("%d%d%d", &L, &N, &K);
for (int i = 0; i < N; i++) {
scanf("%d%d", &x, &a);
for (int j = 0; j < a; j++) {
if (2 * x <= L)
l.push_back(x);
else
r.push_back(L - x);
}
}
printf("%lld\n", solve());
}
return 0;
}
相关文章推荐
- 【iOS】利用Runtime特性做监控
- hdu 5314 Happy King 树点分冶 树状数组
- 如何使用Android MediaStore裁剪大图片
- J哥---------Android 多线程下载 仿下载助手(改进版)
- Android大图片裁剪终极解决方案(下:拍照截图)
- objectiveC【语法】修饰符 static extern const
- Android Service与Activity之间通信的几种方式(1)---通过broadcast(广播)的形式
- Android大图片裁剪终极解决方案(中:从相册截图)
- Android 动画系列
- Android大图片裁剪终极解决方案(上:原理分析)
- Android固定标题栏/底栏方法
- android的Spinner控件的自定义样式设置以及ArrayAdapter的使用
- iOS学习(如何添加背景音乐,以及音效)
- Android Shape画圆,矩形
- android用dp还是sp还是px等
- iOS设计模式 - 观察者
- Android 图片平铺效果实现的3种方法
- [android]多次点击的控制
- Objective-C类和对象
- xcode6 ios ios simulator Home键