尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

#题解#洛谷P1314#二分#前缀和#

#题解#洛谷P1314#二分#前缀和#
📅 发布时间:2026/6/20 1:21:15

[传送门](P1314 [NOIP 2011 提高组] 聪明的质监员 - 洛谷)

分析

1.W变大,则要求条件更严格,则sigema(y)不增,具有单调性,考虑二分查找W。O(log w)

2.对于每一个W,可以处理前缀和求特征值。O(n+m)

3.总时间复杂度O(log w * (n+m) )

代码实现

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mid ((r+l)>>1)
const int N = 2 * 1e5+10;
ll s;
int n, m, W;
ll w[N], v[N], sum[N], is[N];
int L[N], R[N];
void  doit(int We)
{memset(sum, 0, sizeof(sum));memset(is, 0, sizeof(sum));for (int i = 1; i <= n; i++){int tmp = (w[i] >= We);sum[i] = sum[i - 1] + tmp * v[i];is[i] = is[i - 1] + tmp;}
}
ll Y()
{ll y = 0;for (int i = 1; i <= m; i++)y += (sum[R[i]] - sum[L[i] - 1]) * (is[R[i]] - is[L[i] - 1]);return y;
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m >> s;int maxw = -1, minw = 1e9;for (int i = 1; i <= n; i++)cin >> w[i] >> v[i], maxw = max((long long)maxw, w[i]), minw = min((long long)minw, w[i]);for (int i = 1; i <= m; i++)cin >> L[i] >> R[i];ll ans = 1e15;ll yy;int l = minw - 1, r = maxw + 1;while (r >= l){doit(mid);yy = Y();if (yy > s)l = mid + 1, ans = min(ans, abs(yy - s));else if (yy < s)r = mid, ans = min(ans, abs(yy - s));else{cout << 0;return 0;}if (r == l){cout << ans;return 0;}}ans = min(ans, abs(yy - s));cout << ans;return 0;
}

Trick/错误总结

  1. 注意W的取值范围应该是maxw+1到minw-1之间 不要把范围搞小了

  2. 注意mid是下取整,故二分查找时若更新l,应令l=mid+1,否则无限循环。

  3. l==r的判断放到最后

相关新闻

  • 《团队作业2》需求规格说明书
  • 深入理解C++智能指针:掌握RAII与内存安全的利器 - 详解
  • Linux下的花式「隔空」文件传输魔法

最新新闻

  • 数据计算及应用专业偏向科研还是市场化就业?2026年就业方向分析
  • Tidy Animated Verbs高级技巧:颜色编码与过渡动画的实现原理
  • 嵌入式DSP性能分析实战:CodeWarrior工具配置与数据解读指南
  • Compass:重新定义手机指南针的简洁美学与精准导航
  • 轻松解密网易云音乐NCM格式:ncmdump工具使用指南
  • ClickHouse数据存储方案:gh_mirrors/infra4/infra高性能时序数据处理指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号