当前位置: 首页 > news >正文

重生之二分我再也不敢乱用 lower_bound 了 [USACO23OPEN] Milk Sum S

[USACO23OPEN] Milk Sum S

重生之我再也不敢乱用 lower_bound 了.

显然看到这种套路题目首先复制一个数组, 然后排序前缀和初始化答案. 查找数字的位置直接在排序完后的数组上二分即可.

#include<iostream>
#include<algorithm>
#define P(A) A=-~A
typedef long long LL;
#define NUMBER1 150000
#define NUMBER2 100000000
LL pre_ans(0);
int n,a[NUMBER1+5],b[NUMBER1+5];
LL sum[NUMBER1+5];
signed main(){std::cin.tie(nullptr)->std::ios::sync_with_stdio(false);std::cout.tie(nullptr);std::cin>>n;for(int i=1;i<=n;P(i)){std::cin>>a[i];b[i]=a[i];}std::sort(b+1,b+1+n);for(int i=1;i<=n;P(i)){pre_ans+=1ll*i*b[i];sum[i]=sum[i-1]+b[i];}
}

我们设 \(p_1\)\(a[i]\) 在排序后数组的位置, \(p_2\)\(j\) 在排序后数组的位置. 显然必有:

p1=std::lower_bound(b+1,b+1+n,a[i])-b;
p2=std::lower_bound(b+1,b+1+n,j)-b;

然后我们开始分情况讨论, 当 \(p_1=p_2\) 时, 直接替换即可

if(p1==p2)std::cout<<pre_ans+1ll*p1*(j-a[i])<<'\n';

\(p1>p2\) 时, 显然对于初始化的 \(ans\) 而言, 从 \([p_2,p_1-1]\) 的数都要往右移动一位, 然后正常替换即可, 那么则有:

if(p1>p2)std::cout<<pre_ans-1ll*p1*a[i]+sum[p1-1]-sum[p2-1]+1ll*p2*j<<'\n';

同样, 当 \(p1<p2\) 时, 显然对于初始化的 \(ans\) 而言, 从 \([p_1+1,p_2]\) 的数都要往右移动一位, 然后正常替换即可, 那么则有:

std::cout<<pre_ans-1ll*p1*a[i]+1ll*p2*j+sum[p1]-sum[p2]<<'\n';

然后根据样例而言:

5
1 10 4 2 6
3
2 1
2 8
4 5

你会发现应该输出:

55
81
98

结果输出:

55
81
97

实际上是 lower_bound 出问题了. 因为 lower_bound 当没找到相等的数时, 会自然而然跳到下一位.
下面我们将详细讲述 \(p_2\) 跳到下一位的影响.

\(p_1=p_2\) 时, 当 \(j=b_{p_1}\) 显然成立, 不用讨论. 但若 \(j=\ne b_{p_2}\) 时, 则有 \(b_{p_2}>j\geq b_{p_2-1}\), 我们将 \(b_{p_2}\) 替换为 \(j\) 显然满足单调性. 此时 \(p_2\) 的越位是 有必要的.

\(p_1>p_2\) 时, 我们的要求是把 \(b_{p_1}\) 删了, 显然答案减去 \(p_1b_{p_1}\), 由于 \(b\) 是不严格单调递增的 , 所以必有 \(b_{p_2}\geq j\), 所以我们要把 \([p_2,p_1-1]\) 向右移动一位, 然后把 \(j\) 放进去, 此时答案加上 \(p_2j+sum_{p_1-1}-sum_{p_2-1}\).

\(p_1<p_2\) 时, 我们的要求是把 \(b_{p_1}\) 删了, 显然答案减去 \(p_1b_{p_1}\), 由于 \(b\) 是不严格单调递增的 , 所以必有 \(b_{p_2}\geq j\). 我们把 \(p_1\) 删了后, 如果 \(b_{p_2}>j\) 时, 为了维持不严格单调递增, 我们只能往 \(p_2\) 的左边加 \(j\). 即如果我们发现 \(b_{p_2}\ne j\) 时, 自动把 \(p_2\) 向左移一位, 然后加上 \(p_2j\), 减去 \(sum_{p_2}-sum_{p_1}\).

所以代码应该这么写:

else{if(b[p2]!=j)--p2;std::cout<<pre_ans-1ll*p1*a[i]+1ll*p2*j+sum[p1]-sum[p2]<<'\n';
}

代码:

#include<iostream>
#include<algorithm>
#define P(A) A=-~A
typedef long long LL;
#define NUMBER1 150000
#define NUMBER2 100000000
LL pre_ans(0);
int n,a[NUMBER1+5],b[NUMBER1+5];
LL sum[NUMBER1+5];
signed main(){std::cin.tie(nullptr)->std::ios::sync_with_stdio(false);std::cout.tie(nullptr);std::cin>>n;for(int i=1;i<=n;P(i)){std::cin>>a[i];b[i]=a[i];}std::sort(b+1,b+1+n);for(int i=1;i<=n;P(i)){pre_ans+=1ll*i*b[i];sum[i]=sum[i-1]+b[i];}int q;std::cin>>q;for(int i,j,p1,p2;q--;){std::cin>>i>>j;p1=std::lower_bound(b+1,b+1+n,a[i])-b;p2=std::lower_bound(b+1,b+1+n,j)-b;if(p1==p2)std::cout<<pre_ans+1ll*p1*(j-a[i])<<'\n';else if(p1>p2)std::cout<<pre_ans-1ll*p1*a[i]+sum[p1-1]-sum[p2-1]+1ll*p2*j<<'\n';else{if(b[p2]^j)--p2;std::cout<<pre_ans-1ll*p1*a[i]+1ll*p2*j+sum[p1]-sum[p2]<<'\n';}}return 0;
}
http://www.gsyq.cn/news/81379.html

相关文章:

  • t-SNE高效使用指南与常见误区解析
  • 国内商标转让平台哪家好?2025年3大靠谱平台推荐清单amp;避坑攻略 - 资讯焦点
  • 2025-2026年北京十佳企业搬家公司推荐:选立刻搬家的6个硬核理由 - 资讯焦点
  • 2025年机场广告品牌口碑榜:十大优选品牌深度解析,电梯门贴广告/影院广告/电梯视频广告/社区门禁广告/社区道闸广告机场广告公司找哪家 - 品牌推荐师
  • 2026年北京继承纠纷律师推荐排名榜:胜诉率与专业解决方案深度解析 - 苏木2025
  • 广东合金五金厂家TOP5评测!广州琦彩五金领衔箱包五金配件品牌,一站式定制+技术赋能权威榜单发布,重构高端五金生态 - 全局中转站
  • 全国中医师承班哪家好?——来自江苏学员首推阿虎医考师承 - 资讯焦点
  • C++ 数组初始化注意事项
  • 完整教程:数据库知识整理——SQL数据查询(2)
  • 【2025】碳纤维卡规知名企业有哪些?哪个厂家质量好?碳纤维卡规推荐品牌/推荐厂家/知名公司/推荐企业 - 品牌推荐大师1
  • 2025 年武汉一对一培训机构推荐排行榜,哪家好?哪家靠谱?选哪家? - AIEO
  • GitPuk V1.1.9版本发布,新增分支保护、推送合并等功能,高效保障代码质量与安全
  • OceanBase系列---【oracle模式的存在即更新,不存在即新增的merge into用法】
  • 深度剖析:国内专业水处理设备/全自动水处理设备/领域优质生产厂家、知名品牌及综合推荐指南 - 品牌推荐大师
  • 环形队列
  • 2025 年 BI 本地私有化部署厂商全景图:企业智能 BI 私有化部署厂商提供的一站式智能 BI 本地化服务指南 - 品牌2026
  • 2025年琉璃瓦厂家推荐排行榜,哪家好?哪家靠谱?选哪家? - AIEO
  • 2025年口碑好的医用冷冻冷藏防爆冰箱生产商推荐,靠谱化学品 - 工业推荐榜
  • 2025 最新国内电子签名排行:国内电子签名软件哪家强? - 博客万
  • 常熟国强和茂管材有限公司的产品质量怎样?售后服务如何? - 工业品牌热点
  • 考研论文引用格式 AI 校验实操:工具合集 + 便捷的技术原理
  • 2025 年企业智能 BI 私有化部署厂商选择指南:BI 私有化部署方案商如何赋能企业数据价值释放 - 品牌2026
  • 深圳GEO优化公司全景解析:技术标杆与选型指南 - 品牌评测官
  • A5纸打印电子发票
  • 2025本地回弹仪销售实力厂家排行榜及联系方式,一体式数显回弹仪/混凝土回弹仪/红外分光光度计/涂层测厚仪/楼板测厚仪回弹仪厂家口碑排行 - 品牌推荐师
  • 2025年行业内比较好的智能货架源头厂家哪家好,贯通货架/立体货架/可调节货架/流利式货架/牛脚式货架/智能货架厂商口碑推荐榜 - 品牌推荐师
  • 2025晶体炉生产厂TOP5权威推荐:深度测评指南,甄选企业 - mypinpai
  • 2025年五大脚垫式防爆包装封口机生产商推荐:看哪家信誉好 - myqiye
  • 软件官网UX自查清单|兰亭妙微10年经验总结,避坑必藏
  • 2025年检测仪行业领军企业,官方联系电话独家汇总,钢筋位置测定仪/一体式语音数显回弹仪/楼板测厚仪/混凝土回弹仪/钢砧检测仪源头厂家找哪家 - 品牌推荐师