ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CF702F T-Shirts

2019-09-11 21:53:20  阅读:273  来源: 互联网

标签:钱数 合并 ge Shirts 2c CF702F T恤 考虑


cf

luogu

暴力是挨个考虑,这里不妨整体考虑,先把所有T恤按照价值从大到小为第一关键字,价格从小到大为第二关键字排序,然后依次考虑,可以发现这时候剩余钱数\(>c_i\)的会买,这会导致他们钱数\(-c_i\),答案\(+1\).因为这一段人是连续区间,所以考虑用平衡树维护,每次找到钱数\(.=c_i\)的点,打上减钱数和答案\(+1\)的标记,再和其他点合并成新平衡树

不过直接这样做显然是假的,如果很多人每次都买了T恤,那么复杂度会有\(O(n^2logn)\).所以进一步的可以发现如果钱数\(\ge 2c_i\)的人,合并之后他们之间不会插入其他人.那么就先把钱数\(\ge 2*c_i\)的人拎出来,打好标记,然后对钱数在\([c_i,2c_i)\)之间的人修改完后全部暴力合并到前面钱数\(<c_i\)的人里,然后把之前钱数\(\ge 2*c_i\)的人直接接到后面.注意到钱数在\([c_i,2c_i)\)之间的人每次钱数都会减少至少一半,所以一个人最多被暴力插入\(log_{b_j}\)次,复杂度就是\(O(nlognlog_{\max b_j})\)

然后splay被卡爆了,所以先放个被卡代码,学了Treap再来补qwq

标签:钱数,合并,ge,Shirts,2c,CF702F,T恤,考虑
来源: https://www.cnblogs.com/smyjr/p/11509056.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有