AT3949-[AGC022D]Shopping【贪心】
正题
题目链接:https://www.luogu.com.cn/problem/AT3949
题目大意
长度为LLL的坐标轴上,给出nnn个点,每个点xix_ixi需要购物tit_iti的时间,一辆车在0∼L0\sim L0∼L折返跑,求从000出发购物完回到000的最短时间。
n∈[1,3×105],L∈[1,109]n\in[1,3\times 10^5],L\in[1,10^9]n∈[1,3×105],L∈[1,109],输入的xix_ixi单调递增。
解题思路
挺奇妙的题目,WC2021WC2021WC2021讲课的题。
首先每个tit_iti先%\%%上一个2×L2\times L2×L。然后把那些2×L2\times L2×L加到答案里先,这些无可避免。
然后考虑一个点,如果从右边进只需要到达一次端点就视为左括号,如果从右边进只需要到达一次端点就视为右括号。
先默认每个点的贡献都是2×L2\times L2×L,显然一个左括号和一个右括号匹配可以减少2×L2\times L2×L的贡献,因为如果先走右边那个再来走左边那个,这样他们的贡献和就是2×L2\times L2×L。
而有些点既可以视为左又可以视为右,此时我们需要最大化匹配数。
其实还有一个性质,如果一个节点开始固定作为左括号,那么它后面的一定不会有固定作为右括号的(拿作为左右括号的条件看一下就能理解了)。所以不会有两个固定的括号匹配。
然后就可以直接贪心匹配了,时间复杂度O(n)O(n)O(n)
code
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=3e5+10;
int n,len,x[N],t[N],l[N],r[N],ans;
int main()
{scanf("%d%d",&n,&len);for(int i=1;i<=n;i++)scanf("%d",&x[i]);for(int i=1;i<=n;i++)scanf("%d",&t[i]);for(int i=1;i<=n;i++){ans+=t[i]/(2*len);t[i]%=2*len;if(!t[i]){ans--;continue;}l[i]=(t[i]<=x[i]*2);r[i]=(t[i]<=(len-x[i])*2);}int lim=n,L=0,R=0;ans+=n+1-r[n];for(int i=1;i<n;i++){if(!l[i]&&!r[i])continue;if(!r[i]){lim=i;break;}if(!l[i]&&L)L--,ans--;else if(l[i]) L++;}for(int i=n-1;i>=lim;i--){if(!l[i]&&!r[i])continue;if(!l[i])break;if(!r[i]&&R)R--,ans--;else if(r[i]) R++;}ans-=(L+R)>>1;printf("%lld\n",2ll*ans*len);return 0;
}
AT3949-[AGC022D]Shopping【贪心】相关推荐
- [总结]2019年10月 OI学习/刷题记录
10月份记录! 2019/10/1 UOJ #74. [UR #6]破解密码 Hash+分类讨论 UOJ #75. [UR #6]智商锁 Matrix-Tree定理+随机化 UOJ #76. [UR ...
- 牛客竞赛语法入门班数组模拟、枚举、贪心习题【未完结】
题目地址: https://ac.nowcoder.com/acm/contest/19851?from=acdiscuss 目录 四舍五入 安卓图案解锁 Captcha Cracker 回文数 [N ...
- JZOJ 5461 购物 —— 贪心
题目:https://jzoj.net/senior/#main/show/5461 贪心,原来想了个思路,优先选优惠价最小的 K 个,然后其他按原价排序遍历: 如果当前物品没选过,原价选上,如果选过 ...
- 【CodeForces - 545 ABCDE套题训练题解】贪心, 构造,模拟,dp,最短路树(Dijkstra+变形)
A: 题干: Input The first line contains integer n (1 ≤ n ≤ 100) - the number of cars. Each of the next ...
- codeforces D. Fedor and coupons 贪心+优先队列
题目地址:点击打开链接 D. Fedor and coupons time limit per test 4 seconds memory limit per test 256 megabytes i ...
- 算法设计与分析第3章 贪心算法
第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...
- 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...
问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...
- Too Many Segments CF595D 贪心乱搞
传送门! 比赛的时候没有时间写了,看看了看大佬的代码,学习学习. 一开始实验室大佬说是用差分写的,但是看了代码发现打cf的人大家都是stl狂魔! 贪心思路:区间按照左端点排序,从1~2e5遍历每一个点 ...
- Roundgod and Milk Tea 贪心
这个题好像可以用一种类似与置换的贪心方法来做~ sum记为剩余奶茶,一开始sum等于奶茶和 ans记录已经喝的奶茶数 不用排序,我们就从前往后直接处理,考虑的是每一个班最多可以喝多少杯奶茶 就是从剩余 ...
最新文章
- udp tcp ip 校验和对比
- SVM学习(四):为何需要核函数
- python 抓包 上传 文件_Python接口测试文件上传实例解析
- Lucene就是这么简单
- centos8安装ss发生错误failed to install pthon
- MTK手机充电原理分析及问题总结
- codesys file读写配置参数程序
- POS机交易支付知识点整理
- linux ntfs u盘启动盘,u盘NTFS格式制作PE+CDlinux+ubuntu多系统启动盘
- 插入安装光盘并重新启动计算机,电脑开机时显示 插入windows安装光盘并重新启动计算机 怎么解决 急救...
- 易到用车构架演进及上云探索
- 唤醒手腕Python全栈工程师学习笔记(人工智能篇)
- 易捷web文件服务器软件,易捷文件共享Web服务器
- Docker容器化开发流程(一)介绍
- OpenGL颜色渐变
- oracle 自定义数据类型
- 电源系列2:LDO 基本 原理(二)
- 如何在K8S上备份和恢复MySQL
- 电脑无法安装Android设备驱动
- mybatis之注解开发与逆向工程
热门文章
- 我已经把它摸的透透的了!!!Spring 动态数据源设计实践,全面解析
- php 异常 重试,Python中异常重试的解决方案详解
- 如何讲页面打入jar包中_如何把我的Java程序变成exe文件?
- 计算机显卡是指什么时候,电脑哪个是显卡
- android shell用户界面,shell界面下安装和卸载Android应用程序(apk包)
- mysql anyvalue函数_Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式
- leetcode654. 最大二叉树
- 77. 组合016(回溯法)
- Numpy中数组创建函数的辨析
- LED计数电路,5输入按键编码器,7段数码管显示驱动集成为LED计数测试电路