首页 > 其他分享 >ABC 389(EF)

ABC 389(EF)

时间:2025-01-20 20:43:18浏览次数:1  
标签:二分 ABC EF 商品 code 答案 区间 389 价格

E

一道感觉非常巧妙的二分。

可以将每种商品分开来看:第\(k\)次买商品\(P_i\)时,价格为\((2k-1)P_i\)。

这样,就将每种商品拆分为了多个实体的商品,并有自己的价格。想最大化购买物品的总数,一定是每次购买时贪心选择当前所有物品中最便宜的那个。

但模拟一定会\(TLE\),可以枚举购买过程中买的最贵的一件商品,设其价格为\(x\)。

这样的话,价格\(<=x\)的所有商品均一定会被购买,而此时可能会剩下一些钱,可以去购买价格\(>x\)的物品。显然\(x\)是具有单调性的,故每次可以二分\(x\),看将所有\(<=x\)的商品购买完后,是否可以购买完价格为\(x+1\)的商品。

若能买完,则真实值一定比\(x\)要大(至少是\(x+1\)),扩大左边界;若\(<=x\)的物品不能全部买完,则真实值一定比\(x\)要小,缩小右边界;否则真实值就是\(x\)。

注意二分边界要足够大,因为可以购买的最大价格不止是原商品的最大价格,容易遗忘!

code

F

考虑对每一个\(X\)计算答案。初始时没有经过任何区间,答案为\([1,2,3,...,5e5]\)。

枚举要经历的区间,由于每经过一个区间\([l,r]\),值位于\([l,r]\)内的\(X\)会加\(1\),则在经历任意一个区间后,可以保证答案序列的非递减性。

因为对于任意\(X_i<X_j\),在\(X_i\)不断递增的过程中,由于每一次只会加\(1\),故递增时不会突然发生\(X_i>X_j\)的情况,最多只会等于\(X_j\),那么以后二者的变化就会永远相同,不会发生突变的情况。

所以每经历一场比赛,会增加的\(X\)在答案序列中一定也会呈现为一个区间的形式,这样就相当于区间加,可以用线段树二分来找要加的区间的左右端点,最后回答每个询问即可。复杂度\(O(nlog^{2}X + QlogX)\)

code

标签:二分,ABC,EF,商品,code,答案,区间,389,价格
From: https://www.cnblogs.com/jjjxs/p/18682249

相关文章

  • Codeforces Round 998 (Div. 3)
    题目链接:CodeforcesRound998(Div.3)总结:复建,Cwa两发,E读假题了。A.Fibonaccinesstag:签到Solution:简单模拟一下即可。voidsolve(){inta[5];for(inti=0;i<5;i++){if(i==2){continue;}cin>>a[i];......
  • 题解:CF580B Kefa and Company
    CF580BKefaandCompany前言。其实本题与这道题极为相似,所以建议降橙。思路因为输入顺序不影响就结果,所以可以先给\(a\)按照工资从小到打排序一下序(这里\(a\)使用MAP)。然后再使用尺取法,只要\(a_{r+1}\)的值减\(a_l\)的值\(\ltk\)就将\(r\)加\(1\)。然后发现每......
  • AtCoder Beginner Contest 389
    A-9x9题意一位数的乘法思路模拟代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongtypedefpair<int,int>pii;constintmxn=1e6+5;voidsolve(){ strings; cin>>s; cout<<(s[0]-'0')......
  • 【make】makefile变量全解
    目录makefile简介变量全解变量基础变量高级使用1.将变量里的值进行替换后输出2.使用变量的嵌套使用3.`$`可以组合使用override指示符目标指定变量模式变量总结参考链接makefile简介  makefile是一种类似shell的脚本文件,需要make工具进行解释makefile内......
  • 【make】makefile 函数全解
    目录makefile简介函数全解介绍相关链接字符串处理函数subst函数—字符串替换patsubst函数—模式字符串替换strip函数—去空格findstring函数—查找字符串filter函数—过滤器filter-out函数—过滤器sort函数—排序word函数—取单词wordlist函数—......
  • 250118 ABC389总结
    昨天激情地打了1场ABC。A一眼秒了。B一眼秒了。C两眼秒了。D1.5眼秒了,然后发现题读错了,不过问题不大,最后还是秒了。第一发没开longlong见祖宗了。全军复诵:不开longlong见祖宗。E一眼dp,但是我不会dp,所以想了一小下直接去看F了。最后的最后试图码了一下单调队列+暴......
  • AT_abc389_f [ABC389F] Rated Range 题解
    题目传送门前置知识Treap|线段树解法考虑将询问的\(x\)离线下来在升序排序后一起处理。观察到每次操作只有\(+1\),即其之间的相对大小关系不会发生变化,此时就只需要支持将值在\([l,r]\)内的数加一,可以记录懒惰标记。线段树上二分找到端点或直接FHQ-Treap分裂出合法......
  • [ABC389C] Snake Queue题解
    前情题意:问题陈述有一个(蛇)队列。最初,队列是空的。你会得到\(Q\)个查询,这些查询应按给出的顺序处理。查询有三种类型:类型\(1\):以1l的形式给出。一条长度为\(l\)的蛇会被添加到队列的末尾。如果添加前队列为空,则新添加的蛇的头部位置为\(0\);否则,它就是队列中最后......
  • Atcoder ABC389E Square Price 题解 [ 绿 ] [ 二分 ] [ 贪心 ]
    SquarePrice:垃圾卡精度,垃圾卡精度,垃圾卡精度,傻逼出题人,傻逼出题人,傻逼出题人,傻逼出题人,傻逼出题人,傻逼出题人,傻逼出题人。把ll改__int128前WA*22,改__int128直接AC了,难评。抛开卡精度这题还是挺好的。暴力先考虑暴力思路,显然暴力应该这么打:把所有物品全丢进优先队列......
  • ABC389
    场上被E卡50min结果赛后一分钟过F!场上被E卡50min结果赛后一分钟过F!场上被E卡50min结果赛后一分钟过F!场上被E卡50min结果赛后一分钟过F!场上被E卡50min结果赛后一分钟过F!场上被E卡50min结果赛后一分钟过F!场上被E卡50min结果赛后一分钟过F......