2015 Multi-University Training Contest 2 1004 Delicious Apples(DP)
题意:长度为l 的环,有n棵果树,背包容量为k,告诉你k棵苹果树的id。以及每棵树上结的果子数。背包一旦装满要返回起点(id==0)
清空,问你至少走多少路,能摘全然部的苹果。
思路:
由于是环形,所以事实上离起点最远的点应该是l / 2。
两种摘苹果的方式。一种从上半圈開始走。用dp[0][i]记录;
第二种。从下半圈開始走。用dp[1][i]记录;
allv 记录苹果总数,那么仅仅要找出最小的 dp[0][i] + dp[1][all-i]就好啦。
代码例如以下:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
const int N = 1e5+10;
const ll INF = 1E18;
ll l, n, k, inf;
ll dp[2][N];
ll allv; struct node
{
ll d, v;
bool operator < (const node &rhs) const{
return d < rhs.d;
}
}tree[N]; int main()
{
int t;
scanf("%d", &t);
while(t--)
{
allv = 0;
scanf("%I64d%I64d%I64d", &l, &n, &k);
for(int i = 0; i < n; i++)
{
scanf("%I64d%I64d", &tree[i].d, &tree[i].v);
allv += tree[i].v;
}
sort(tree, tree + n);
int cnt = 1;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < tree[i].v; j++)
{
int tmp = 0, dis = l;
if(cnt > k)
{
tmp = cnt -k;
}
if(2 * tree[i].d < l)
dis = 2 * tree[i].d;
dp[0][cnt] = dp[0][tmp] + dis;
cnt ++;
}
}
cnt = 1;
for(int i = n-1; i >= 0; i--)
{
for(int j = 0; j < tree[i].v; j++)
{
int tmp = 0, dis = l;
if(cnt > k)
{
tmp = cnt -k;
}
if((2 * l - 2 * tree[i].d) < l)
dis = 2*l - 2 * tree[i].d;
dp[1][cnt] = dp[1][tmp] + dis;
cnt ++;
}
}
ll ans = INF;
for(int i = 0; i <= allv; i++)
{
ans = min(ans, dp[0][i] + dp[1][allv-i]);
}
printf("%I64d\n", ans);
}
return 0;
}
2015 Multi-University Training Contest 2 1004 Delicious Apples(DP)的更多相关文章
- 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棵 ...
- 2016 Multi-University Training Contest 1 GCD RMQ+二分(预处理)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5726 题意:有N(N <= 100,000),之后有Q(Q <= 100,000)个区间查询[ ...
- 2018 Multi-University Training Contest 1 - B Balanced Sequence (贪心)
题意:对N个由(,)组成的字符串,求拼接后得到的最大的balance序列的长度.balance序列:空串/ A+B(A,B都是b序列)/ (+A+),A为b序列.此三种情况. 分析:在读入N每个字符串 ...
- Atcoder Grand Contest 022 E - Median Replace(dp)
Atcoder 题面传送门 & 洛谷题面传送门 首先考虑对于固定的 01 串怎样计算它是否可以通过将三个连续的 \(0\) 或 \(1\) 替换为其中位数得到.我们考虑单调栈,新建一个栈,栈底 ...
- Atcoder Grand Contest 002 F - Leftmost Ball(dp)
Atcoder 题面传送门 & 洛谷题面传送门 这道 Cu 的 AGC F 竟然被我自己想出来了!!!((( 首先考虑什么样的序列会被统计入答案.稍微手玩几组数据即可发现,一个颜色序列 \(c ...
- 2015年12月28日 Java基础系列(六)流
2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流
- 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)
官方解题报告:http://bestcoder.hdu.edu.cn/blog/2015-multi-university-training-contest-6-solutions-by-zju/ 表 ...
- hdu 6301 Distinct Values (2018 Multi-University Training Contest 1 1004)
Distinct Values Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- HDU 6312.Game-博弈-签到题 (2018 Multi-University Training Contest 2 1004)
2018 Multi-University Training Contest 2 6312.Game 博弈,直接官方题解,懒了. 考虑将游戏变成初始时只有2~n,如果先手必胜的话,那么先手第一步按这样 ...
随机推荐
- JS简单路由实现
说一下前端路由实现的简要原理,以 hash 形式(也可以使用 History API 来处理)为例, 当 url 的 hash 发生变化时,触发 hashchange 注册的回调,回调中去进行不同的操 ...
- 图片选择器ImageEditContainer
1. 简介 本次demo中一共封装了两个组件:ImageEditButton 和 ImageEditContainer.其中ImageEditContainer 是在 ImageEditButton, ...
- AdMob设计工具google web designer
一.google web designer工具中文文档: https://support.google.com/webdesigner?hl=zh-Hans#topic=3227692 我用的版本:应 ...
- 在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法
在网页中引用DWG控件,交互绘图,和响应鼠标点击对象的方法 [MXDRAW CAD控件文档] 下面帮助的完整例子,在控件安装目录的Sample\Ie\iedemo.htm中. 1. 主要用到 ...
- Java基础(四)--接口和抽象类
接口和抽象类能够体现OOP的抽象,而接口和抽象类也是日常开发中经常用到的 抽象方法: 抽象方法就是被abstract修饰的方法,只有声明,没有实现,也就是没有方法体 public abstract v ...
- (转)MySQL中的索引详讲
序言 之前写到MySQL对表的增删改查(查询最为重要)后,就感觉MySQL就差不多学完了,没有想继续学下去的心态了,原因可能是由于别人的影响,觉得对于MySQL来说,知道了一些复杂的查询,就够了,但是 ...
- sql之inner join
这个嘛...经常写sql写的我怀疑自己:算了还是记下来了再强调一遍!再强调一遍!再强调一遍!:虽然很傻逼... inner join(等值连接) 只返回两个表中联结字段相等的行
- 软件工程师需要了解的网络知识:从铜线到HTTP(一)—— 前言
转自:https://lvwenhan.com/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/485.html?hmsr=toutiao.io&utm_medium ...
- 第二章 设计高质量的React组件
第二章 设计高质量的React组件 高质量React组件的原则和方法: 划分组件边界的原则: React组件的数据种类: React组件的生命周期. 2.1 易于维护组件的设计要素 1.高内聚:指的是 ...
- 【搜索、bfs】Find The Multiple
Problem Given a positive integer n, write a program to find out a nonzero multiple m of n whose de ...