题目链接:

点击打开链接

题目大意:

在一个周长为L的环上。给出n棵苹果树。苹果树的位置是xi,苹果树是ai,苹果商店在0位置,人的篮子最大容量为k,问最少做多远的距离可以把苹果都运到店里

题目分析:

首先我们能够(ˇˍˇ) 想~,假设在走半圆之内能够装满,那么一定优于绕一圈回到起点。所以我们从中点将这个圈劈开。那么对于每一个区间由于苹果数非常少,所以能够利用belong[x]数组记录每一个苹果所在的苹果树位置,然后将苹果依照所在的位置排序,那么也就是我们知道每次拿k个苹果的代价是苹果所在的最远的位置。

所以我们记录。sum[i]就是拿第i个苹果的时候的最小代价和,利用背包的思想就是

sum[i] = sum[i-k] + d[i]

if ( i <= k )

sum[i] = d[i]

由于当最后苹果数不足k个时候。能够通过绕一圈拿走全部的苹果。所以说。最后要枚举左右这一圈拿走的苹果,然后算取最大的情况。详细看代码。有不懂的能够再评论中询问

代码例如以下:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <vector>
#define MAX 100007using namespace std;typedef long long LL;
int t,l,n,k;
LL sum1[MAX];
LL sum2[MAX];
LL belong[MAX];
vector<int> b1;
vector<int> b2;int main ( )
{scanf ( "%d" , &t );while ( t-- ){scanf ( "%d%d%d" , &l , &n , &k );int m = 0;int x,a;b1.clear();b2.clear();for ( int i = 0; i < n ; i++ ){scanf ( "%d%d" , &x , &a );for ( int i = 0 ; i < a ; i++ )belong[++m] = x;}k = min ( k , m );for ( int i = 1 ; i <= m ; i++ ){//cout << belong[i] << " ";if ( belong[i]*2 >= l ) b2.push_back ( l-belong[i] );else b1.push_back( belong[i] );}//cout << endl;sort ( b1.begin() , b1.end() );sort ( b2.begin() , b2.end() );int len1 = b1.size();sum1[0] = sum2[0] = 0;for ( int i = 0 ; i < len1 ; i++ ){int id = i+1;if ( id <= k ) sum1[id] = b1[i];else sum1[id] = b1[i] + sum1[id-k];}int len2 = b2.size();//cout << len1 << " " << len2 << endl;for ( int i = 0 ; i < len2 ; i++ ){int id = i+1;if ( id <= k ) sum2[id] = b2[i];else sum2[id] = b2[i] + sum2[id-k];}LL ans = ( sum1[len1] + sum2[len2] )*2 ;for ( int i = 0 ; i <= len1 && i<= k; i++ ){int m1 = len1 - i ;int m2 = ( 0 , len2 - (k-i) );ans = min ( ans , 2*(sum1[m1]+sum2[m2])+l );}printf ( "%I64d\n" , ans );}
}

转载于:https://www.cnblogs.com/cxchanpin/p/6938245.html

多校第二场 1004 hdu 5303 Delicious Apples(背包+贪心)相关推荐

  1. Fake Maxpooling(2020多校第二场F)

    Fake Maxpooling(2020多校第二场F) 文章目录 题意: 题解: 代码: 题意: 一个n * m的矩阵,第i行第j列的值是lcm(i,j),然后给定一个 k * k的子矩阵(k< ...

  2. Duration(2020多校第二场D)

    Duration(2020多校第二场D) 文章目录 题意 题解 代码 首先,非常感谢出题人出这个题,避免了我全wa的尴尬 题意 求两个时间相差多少秒,两个时间为同一天 题解 全部转化成秒,然后求差 代 ...

  3. Boundary(2020多校第二场B)

    Boundary(2020多校第二场B) 文章目录 题意: 题解: 思路1: 代码: 思路二 代码 题意: 坐标平面有n个点(不与原点(0,0)重复),现考虑一个圆,(0,0)点在圆的边界,问这个圆的 ...

  4. 2021牛客暑假多校第二场 K题—Stack (链表)

    2021牛客暑假多校第二场 K题-Stack 题意: 一个单调栈,给你第n次操作时里面数据的数量,让你给出里面塞入的会是哪些数字. 主要思想:链表模拟 (代码里面有注释) (题解一开始说的是拓扑,后来 ...

  5. 牛客多校第二场补题(继续罚坐)

    牛客多校第二场(继续罚坐场) Draw Grids ZYT和LBC玩游戏,在4*4的矩阵中,从起点开始,每个人只能连一条直线,且只能在起点或者上一个人的终点位置连上这个位置相邻的一条直线,并且不能形成 ...

  6. 【多校训练】2021牛客多校第二场

    [前言] 这是打的第二场,rk39,但是AB这两个比较简单的题都没做emm,大概还是磨合的不够.然后感觉对于阈值类的东西还不是很敏感,应该看到不太好做就直接去想这种阈值的.校内3/9(然后就开启了常年 ...

  7. HDU 2020 多校第二场 游记

    咕了整整一天才来写 2333 这次邓老师没来 /kk,不过打的还算不错,可惜还是有一题没调出来,不然就是 11 题队了 /ll 1001 题意好像有点奇怪,不过 djq 还是一眼看对了,拿了这题一血. ...

  8. HDU2019多校第二场 1009(HDU 6599) I Love Palindrome String(回文树(自动机)+manacher)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6599 解题思路: 回文自动机求每个本质不同的子串出现的次数,同时记录每个节点i代表的回文串第一次出现的 ...

  9. 莫队 ---- 值域分块处理优化字典树上的查询 杭电多校2021第二场1004 i love counting

    题目链接 题目大意: 就是给你nnn个数,mmm次询问 每次询问给你l,r,a,bl,r,a,bl,r,a,b问你在[l,r][l,r][l,r]区间里面有多少种种种数c(XOR)a≤bc(XOR)a ...

最新文章

  1. LruCache缓存处理及异步加载图片类的封装
  2. nginx关于域名解析的源码分析
  3. Javascript DOM动态添加表格
  4. 中石油训练赛 - 关于我转生变成史莱姆这档事(dfs)
  5. .NET 6 数组拷贝性能对比
  6. 法线贴图Nomal mapping 原理
  7. 额度降为0剩下欠款怎么办?
  8. 【WinForm】自己写一个截图软件1 --注册全局热键
  9. ts中简单的用法和存储器 get set 的用法
  10. win10安装oracle数据库失败
  11. histogram函数 python_Python numpy.histogram函数方法的使用
  12. Appcms漏洞+webshell复习
  13. SPTD和虚拟光驱 以后装机我再也不带酒精52%了
  14. Dropout与Inverted Dropout细节,在训练与测试阶段的使用
  15. 微信缓存dat怎么转图片_微信dat文件转换为图片
  16. MYSQL on和where的区别
  17. 圆梦之旅 – 日本(一)攻略篇
  18. IPsec IKE第一阶段主模式和野蛮模式
  19. 上市企业统计面板数据集(2011-2020年)
  20. Git下载安装(Windows版本+Linux版本)

热门文章

  1. 正确地组织python项目的结构
  2. Arduino入门笔记(6):温度传感器及感温杯实验
  3. 问题 D: 去行首行尾的空白符
  4. np.stack() | 数组堆叠
  5. EOS Nation更新“flash.sx遭攻击”进展:将建议MSIG根据快照将资金退还
  6. 逾845.5万枚XRP从币安交易所转入未知钱包,价值超过496万美元
  7. 合成资产挖矿项目 ARCx 启动流动性挖矿
  8. 商城小程序、实例原型设计、电商app、积分商城、领券中心、会员中心、每日签到、小程序电商、优惠券、移动端电商、Axure原型、rp原型、产品原型、积分、会员卡
  9. 后台管理系统、商品管理、商品发布、商品回收、订单管理、退款管理、运营管理、商城设置、导航分类、营销管理、优惠券套餐、数据统计、活跃用户、数据埋点、财务管理、对账单、财务数据、账户资产、电商后台
  10. SpringBoot中快速实现邮箱发送