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,如果先手必胜的话,那么先手第一步按这样 ...
随机推荐
- 两个input可能会用到的小方法
1.一个普通的input元素,在不被 form包裹的时候,如何跳转或搜索 var oInput = document.getElementsByTagName('input')[0]; oInput. ...
- Ubantu下 docker的安装
另一种方法 1.切换到root权限或者用sudo 2.升级source列表并保证https和ca证书成功安装 # apt-get update # apt-get install apt-transp ...
- Android 读取asset文件
* * 从Assets中读取图片 */ private Bitmap getImageFromAssetsFile(String fileName) { Bitmap image = null; As ...
- Angular——单页面与路由的使用
单页面 SPA(Single Page Application)指的是通单一页面展示所有功能,通过Ajax动态获取数据然后进行实时渲染,结合CSS3动画模仿原生App交互,然后再进行打包(使用工具把W ...
- jquery.ajax之beforeSend方法使用介绍
常见的一种效果,在用ajax请求时,没有返回前会出现前出现一个转动的loading小图标或者“内容加载中..”,用来告知用户正在请求数据.这个就可以用beforeSend方法来实现. 下载demo:a ...
- (转)全文检索技术学习(三)——Lucene支持中文分词
http://blog.csdn.net/yerenyuan_pku/article/details/72591778 分析器(Analyzer)的执行过程 如下图是语汇单元的生成过程: 从一个Re ...
- 系统信号-signal.h
#define SIGSEGV 11 /* segmentation violation */ #define SIGSYS 12 /* bad argument to system call */ ...
- Java怎么实现文件数据拷贝
实现一个文件的内容拷贝到另一个文件里 public void copyDemo () throws IOException { //创建文件输入流 FileInputStream fis = new ...
- MS SQL Server查询 本日、本周、本月、本季度、本年起始时间
参数声明 declare @beginTime datetime, --查询开始时间 @endTime datetime, --查询结束时间 @queryTimeType tinyint; --查询时 ...
- Android studio 开发一个用户登录界面
Android studio 开发一个用户登录界面 activity_main.xml <?xml version="1.0" encoding="utf-8&qu ...