三种路径,左边出去左边回来,右边出去右边回来,绕一圈

绕一圈的路径最多出现一次

那么绕一圈的路径覆盖的点一定是左边半圈的右边和右边半圈的左边

枚举绕一圈的路径的起始点(一定要枚举,这一步不能贪心),更新答案

#include<cstdio>
#include<algorithm>
using namespace std;
int a[10000005],X[10000005],Y[10000005];
long long L[10000005],R[10000005];
bool cmp(int a,int b){
return a>b;
}
int main(){
int n,K,l;
scanf("%d%d%d",&n,&K,&l);
for (int i=1; i<=n; i++) scanf("%d",&a[i]);
int Len1=0,Len2=0;
for (int i=1; i<=n; i++){
if (!a[i]) continue;
if (a[i]<=l-a[i]) X[++Len1]=a[i];
else Y[++Len2]=a[i];
}
for (int i=1; i<=Len2/2; i++) swap(Y[i],Y[Len2-i+1]);
for (int i=1; i<=Len1; i++)
if (i<=K) L[i]=X[i]*2;
else L[i]=L[i-K]+X[i]*2;
for (int i=1; i<=Len2; i++)
if (i<=K) R[i]=(l-Y[i])*2;
else R[i]=R[i-K]+(l-Y[i])*2;
long long ans=L[Len1]+R[Len2];
for (int i=0; i<K; i++)
ans=min(ans,L[Len1-i]+R[max(Len2-(K-i),0)]+l);
printf("%lld\n",ans);
return 0;
}

  

BZOJ 4368: [IOI2015]boxes纪念品盒的更多相关文章

  1. BZOJ 4368: [IOI2015]boxes纪念品盒 贪心

    题意:给定一个环,环上有一些点包裹,你要从 $0$ 号点出发,然后每次带上一个容量为 $k$ 的背包. 问:如果要把所有的包裹都带回 $0$ 好点最少要走多少距离. 每一次只有 $3$ 种走法:走整圆 ...

  2. 4368: [IOI2015]boxes纪念品盒

    4368: [IOI2015]boxes纪念品盒 链接 分析 链接 代码 #include<bits/stdc++.h> using namespace std; typedef long ...

  3. IOI2015 boxes纪念品盒

    BZOJ 4368: [IOI2015]boxes纪念品盒 BZOJ传送门 Description IOI2015开幕式正在进行最后一个环节.按计划在开幕式期间,每个代表队都将收到由主办方发放的一个装 ...

  4. [bzoj4368][IOI2015]boxes纪念品盒_动态规划_单调队列_贪心

    bzoj4368 IOI2015 boxes纪念品盒 题目链接:https://lydsy.com/JudgeOnline/problem.php?id=4368 数据范围:略. 题解: 如果在一个最 ...

  5. [BZOJ] IOI2015 Boxes纪念品盒

    问题描述 IOI2015 开幕式正在进行最后一个环节.按计划在开幕式期间,每个代表队都将收到由主办方发放的一个装有纪念品的盒子.然而所有志愿者都被精彩的开幕式所吸引,除 Aman外其他人完全忘记了发放 ...

  6. 题解 [BZOJ4368][IOI2015]boxes纪念品盒

    题面 解析 可以发现,发纪念品有三种方式: 从左边走再原路返回. 从右边走再原路返回. 走一圈. 注意到,第三种走法最多只会走一次, 因为如果走了多次,那发放的物品数量就会>=\(2k\), 那 ...

  7. Bzoj 4371: [IOI2015]sorting排序 二分

    题目 似乎很久没写题解了... 这题是校里胡策的时候的题,比赛因为评测机有点慢+自己代码常数大没快读...被卡t了,但是bzoj上还是A了的...,因为bzoj时限比较宽可以不卡常. 题解: 首先可以 ...

  8. IOI2015 Boxes

    Description 给出一个环形,n个点,每次只能访问k个点,求最短距离. Sol 贪心. CCF的题解. 首先只会最多走一趟环形,根据抽屉原理,如果一边不足k个才会到另一边,所以对于第二次以上的 ...

  9. BZOJ 4369: [IOI2015]teams分组

    把一个人看成二维平面上的一个点,把一个K[i]看成左上角为(0,+max),右下角为(K[i],K[i])的一个矩阵,那么可以很好地描述人对于询问是否合法(我也不知道他怎么想到这东西的) 然后把一组询 ...

随机推荐

  1. springMVC框架的理解加深,个人的一些想法

    一 写spring-boot整合的时候,有种想看源码的冲动!呸,是钻牛角尖的毛病犯了... @RequestMapping("/index") public String inde ...

  2. JsonModel&AFNetWorking

    // HttpManager.h // JsonModel&AFNetWorking // // Created by qianfeng on 15/7/21. // Copyright (c ...

  3. .net framework MVC 下 Hangfire使用,时区,权限

    安装 NuGet 上有几个可用的Hangfire 的软件包.如果在ASP.NET应用程序中安装HangFire,并使用Sql Server作为存储器,那么请在Package Manager Conso ...

  4. SQL SERVER 2014 缺少Business Intelligence 解决办法

    SQL SERVER 2014安装完所有的数据库工具后,缺少开发工具 Business Intelligence   之解决办法. https://msdn.microsoft.com/en-us/l ...

  5. 第一篇Active Directory疑难解答概述(2)

    从故障诊断的角度来看,无论用户对象存在于哪个Active Directory域中,Exchange都需要访问此数据.这意味着所有包含启用Exchange的对象的域必须对其运行Setup / Prepa ...

  6. Vue风格指南总结及对应ESLint规则配置

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10906951.html,多谢,=.=~ 必要的:规避错误: 强烈推荐:改善可读性和开发体验: 推 ...

  7. java面试题(杨晓峰)---第二讲Exception和Error有什么区别?

    本人总结: Exception和Error:正常问题和意外问题,以自行车举例:没气和爆胎. ①理解Throwable,Exception,Error的设计和分类. ②掌握哪些应用最广泛的子类, ③如何 ...

  8. python爬虫之路——对字符串的处理

    对字符串的处理分类:分段,连接,剔除,提取,综合 连接:+,* +(加法)的使用 a='i' b=' love' c=' you' print(a+b+c) #return i love you *( ...

  9. LiteIDE 错误: go build xxxxxx: no non-test Go files in xxxx

    问题 c:/go/bin/go.exe build [C:/Users/Administrator/Desktop/go] go build _/C_/Users/Administrator/Desk ...

  10. java,编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz.

    需求:编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz. package study01; public cla ...