HDU5303
来源:互联网 发布:java中调用存储过程 编辑:程序博客网 时间:2024/06/06 05:02
题意:给定一个环形道路长度为L,以及环形道路下标为0处为起始点,在环形道路上距离起始点Xi位置种植一颗苹果树,该树有a个苹果,篮子的最大容量为K,那么求摘完全部苹果所需的最短距离。
思路:之前没想出来,根据官方题解,大致就是分成两个阶段来求,首先,按照普通情况下,肯定是每次都取离自己最短的苹果,这样因为要避免绕过半圈后的多余路径,就是分成两个半圈来走,分别贪心左右半圈,然后可能存在最后剩下的苹果数不足K,但如果走整圈的话一定优于分别半圈来回,为什么不足K呢,因为如果超过K的话,那么总可以算进左右半圈里面,所以这是最后的特殊情况,那么最后只要取这两个值中的最小值即可,在求整圈的时候,注意右边判断的时候可能为负值情况。
思路:之前没想出来,根据官方题解,大致就是分成两个阶段来求,首先,按照普通情况下,肯定是每次都取离自己最短的苹果,这样因为要避免绕过半圈后的多余路径,就是分成两个半圈来走,分别贪心左右半圈,然后可能存在最后剩下的苹果数不足K,但如果走整圈的话一定优于分别半圈来回,为什么不足K呢,因为如果超过K的话,那么总可以算进左右半圈里面,所以这是最后的特殊情况,那么最后只要取这两个值中的最小值即可,在求整圈的时候,注意右边判断的时候可能为负值情况。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define MAX 100050long long sum_len_left[MAX];long long sum_len_right[MAX];int sum_apple_left[MAX],sum_apple_right[MAX];long long ans;int Left,Right;int n,k,l,T,x_len,a_apple;void solve(){ for(int i=1; i<=Left; i++) { if(i<=k) sum_len_left[i]=sum_apple_left[i]; else sum_len_left[i]=sum_len_left[i-k]+sum_apple_left[i]; } for(int i=1; i<=Right; i++) { if(i<=k) sum_len_right[i]=sum_apple_right[i]; else sum_len_right[i]=sum_len_right[i-k]+sum_apple_right[i]; } ans=(sum_len_left[Left]+sum_len_right[Right])*2;}int main(){ scanf("%d",&T); while(T--) { memset(sum_len_left,0,sizeof(sum_len_left)); memset(sum_len_right,0,sizeof(sum_len_right)); scanf("%d%d%d",&l,&n,&k); Left=0,Right=0; for(int i=0; i<n; i++) { scanf("%d%d",&x_len,&a_apple); for(int j=0; j<a_apple; j++) { if(x_len*2<l) sum_apple_left[++Left]=x_len; else sum_apple_right[++Right]=l-x_len; } } sort(sum_apple_left+1,sum_apple_left+Left+1); sort(sum_apple_right+1,sum_apple_right+Right+1); solve(); for(int i=0; i<=k; i++) { long long lll = (sum_len_left[Left-i]+sum_len_right[max(0,Right-(k-i))])*2; ans=min(ans,l+lll); } printf("%lld\n",ans); } return 0;}
0 0
- HDU5303
- hdu5303 Delicious Apples
- Hdu5303 Delicious Apples 贪心
- hdu5303 Delicious Apples
- hdu5303(排序+dp)
- HDU5303 Delicious Apples(贪心)
- HDU5303 Delicious Apples【贪心】【DP】
- 解题报告 之 HDU5303 Delicious Apples
- hdu5303(2015多校2)--Delicious Apples(贪心+枚举)
- 2015 多校联赛 ——HDU5303(贪心)
- hdu5303(15年多校集训第二轮1004题delicious apple)
- hdu5303 环形路上取苹果的最小路程
- 2015 Multi-University Training Contest 2 1004 Delicious Apples(HDU5303)
- 关于大型网站技术演进的思考(十七)--网站静态化处理—满足静态化的前后端分离(9)
- Autolayout (一)
- bzoj 4178: A
- 用TlbImp.exe生成程序可调用的Dll
- 关于大型网站技术演进的思考(十八)--网站静态化处理—反向代理(10)
- HDU5303
- 关注极客头条微信,每天一大波干货
- Android 用Animation-list实现逐帧动画
- 关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)
- 提取数字的每一位
- WIPE与Format的种种神马情况
- 连接OMAPL138 ARM9核时出现的Error connecting to the target: (Error -1063 @ 0x0)问题
- an error ocurred during local report processing
- android开发之PreferenceScreen使用详解