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

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

[传送门](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的判断放到最后

http://www.jsqmd.com/news/38803/

相关文章:

  • Python 实现对遥感影像根据DN值上色
  • 《团队作业2》需求规格说明书
  • 【免费】MySQL自动化运维工具,一键生成WORD和EXCEL
  • 实用指南:轻量化 + 绿色部署的日志监控系统log-monitor设计思路(一)
  • 深入理解C++智能指针:掌握RAII与内存安全的利器 - 详解
  • 【LVGL】进度条部件
  • OpenEuler 22.03 安装zabbix-agent(源代码编译及自制rpm包)
  • pq使用体验和改进建议
  • Vue插值表达式
  • 设备坏了才修,能不能提前预测?
  • 好题集 (1) - LG P3978 [TJOI2015] 概率论
  • 部署MQTT Broker - Mosquitto - -YADA
  • useActionState 阻止表单重置
  • 路由基础
  • idea链接database时报错:serverTimezone
  • 题解:CF2117F Wildflower
  • UVM环境自动生成器具(2)uvmdvgen
  • 题解:CF961C Chessboard
  • 7年java开发的一些感悟
  • 11.12 NOIP模拟6/多校1 改题记录
  • 文字识别系统代码
  • B4093 [CSP-X2021 山东] 发送快递
  • 从零上手 Rokid JSAR:打造专属 AR 桌面交互式 3D魔方,开启空间创建之旅
  • 微软2025年11月补丁星期二修复1个零日漏洞和63个安全漏洞
  • CF468C Hack it!
  • 深入解析:FT62FC3X 8位MCU单片机选型表,详细解析FT62FC31A/32A/33A/35A/3FA
  • 语法记录
  • Can Large Language Models Detect Rumors on Social Media?
  • 压迫
  • P13573 [CCPC 2024 重庆站] Pico Park