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

打卡信奥刷题(3225)用C++实现信奥题 P8370 [POI 2001 R3] Goldmine

P8370 [POI 2001 R3] Goldmine

题目描述

Byteman\text{Byteman}Byteman作为Byteland\text{Byteland}BytelandThe Goldmine\text{The Goldmine}The Goldmine(某一公司厂矿)的最有功的雇员之一,即将在年末退休。

为了表示对他的认真勤恳的工作的承认,The Goldmine\text{The Goldmine}The Goldmine的管理层愿意奖励他一小块长方形的矿地,此矿地长和宽为ssswww,且平行于坐标系统的轴线。长方形矿地的位置可由他自己选。当然,这块地的价值会随着位置的不同而不同。其价值是指这块区域内天然金矿石的数量(若矿石位于这块地的边缘,我们同样认为他是属于这个区域的)。

你们的任务是计算出这块地的最大可能价值(即:为它选择最佳位置)。为简便起见,我们假定整个金矿的矿区是无穷的,但含有天然金矿石的区域却是有限的。

请你编写一个程序:

  1. 读入天然金矿石的位置。

  2. 计算这块地的最大可能价值(即:求给定大小的这块地所含的天然金矿石的最大数)。

输入格式

第一行输入两个正整数s,ws,ws,w,各自代表着此矩形区域平行XXX轴和YYY轴的边的长度。

第二行输入一个正整数nnn,它表示此金矿矿区内天然矿石的数量。接下来的nnn行,每行输入两个用单个空格隔开的整数x,yx,yx,y,它们分别表示了某一天然金矿石的XXX坐标和YYY坐标。

输出格式

输出一个整数,表示此块给定大小的矿地的最高价值。

输入输出样例 #1

输入 #1

1 2 12 0 0 1 1 2 2 3 3 4 5 5 5 4 2 1 4 0 5 5 0 2 3 3 2

输出 #1

4

说明/提示

对于100%100\%100%的数据:1≤s,w≤10000,1≤n≤15000,−30000≤x,y≤300001 \le s,w \le 10000,1 \le n \le 15000,-30000 \le x,y \le 300001s,w10000,1n15000,30000x,y30000

C++实现

#include<bits/stdc++.h>#definelllonglong#definels(x)x<<1#definers(x)x<<1|1#defineN100005usingnamespacestd;structNN{ll x,l,r,w;}q[N];intT,n,W,H,t,cnt;ll ans,a[N],lz[N],tr[N];intcmp(NN a,NN b){returna.x==b.x?a.w>b.w:a.x<b.x;}voidpushup(intx){tr[x]=max(tr[ls(x)],tr[rs(x)]);}voidpushdown(intx){if(lz[x]){tr[ls(x)]+=lz[x],lz[ls(x)]+=lz[x];tr[rs(x)]+=lz[x],lz[rs(x)]+=lz[x],lz[x]=0;}}voidupdate(intx,intl,intr,intL,intR,intw){if(L>R)return;if(l>=L&&r<=R){tr[x]+=w,lz[x]+=w;return;}intmid=(l+r)>>1;if(lz[x])pushdown(x);if(R<=mid)update(ls(x),l,mid,L,R,w);elseif(L>mid)update(rs(x),mid+1,r,L,R,w);elseupdate(ls(x),l,mid,L,mid,w),update(rs(x),mid+1,r,mid+1,R,w);pushup(x);}intmain(){scanf("%d%d%d",&W,&H,&n),W++,H++;for(ll i=1,x,y;i<=n;i++){scanf("%lld%lld",&x,&y);a[++t]=y,a[++t]=y+H-1;q[++cnt]={x,y,y+H-1,1},q[++cnt]={x+W-1,y,y+H-1,-1};}sort(a+1,a+t+1);t=unique(a+1,a+t+1)-(a+1);sort(q+1,q+cnt+1,cmp);for(inti=1;i<=cnt;i++){intl=lower_bound(a+1,a+t+1,q[i].l)-a;intr=lower_bound(a+1,a+t+1,q[i].r)-a;update(1,1,t,l,r,q[i].w);ans=max(ans,tr[1]);}printf("%lld",ans);return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

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

相关文章:

  • 2026年郑州装修公司推荐排名前十强,口碑好性价比高的靠谱公司盘点 - 速递信息
  • 本土化赋能:Gitee如何重塑中国开发者的代码托管体验
  • Mermaid Live Editor:如何用代码思维解决图表绘制的三大痛点?
  • BDInfo深度解析:蓝光光盘技术规格分析的完整解决方案
  • AISMM×ISO 27001×NIST RMF三模融合实践:一位CISO亲授的72小时风险响应加速方案
  • DayZ社区离线模式终极指南:打造专属末日生存实验室
  • 终极指南:如何用Python快速获取专业级金融数据
  • ChatGPT Atlas全解析:OpenAI原生AI浏览器核心能力+macOS离线安装完整指南
  • 3分钟手机端刷入Android内核:Horizon Kernel Flasher终极指南
  • Python数据分析如何填充缺失日期_Pandas的asfreq技巧
  • mysql数据库读写分离策略与性能分析_通过中间件实现自动路由
  • 每天花两小时刷信息?这个开源项目帮你全自动搞定
  • 如何彻底摆脱Windows浏览器劫持?EdgeDeflector让你的选择权回归
  • 打卡信奥刷题(3226)用C++实现信奥题 P8398 [CCC 2022 S4] Good Triplets
  • 3步实现视频PPT智能提取:extract-video-ppt让课件整理自动化
  • AI模型线上部署的A/B测试设计指南
  • 学之思开源考试系统:3步快速搭建专业在线考试平台的完整指南
  • 基于MCP协议的AI编码助手治理平台:跨模型记忆与自动化API检查
  • 苏州装饰公司哪家靠谱?2026年苏州本地高口碑装修公司推荐排名 - 速递信息
  • 08-MLOps与工程落地——模型注册表与模型服务
  • 如何通过3步解锁QQ群聊天记录的隐藏价值:ChatLog完整指南
  • 重构搜索范式:阿里云 Elasticsearch 开启“Agent 原生”时代,打造企业级 AI 记忆湖
  • 【新人专属】OpenClaw 2.6.6 Windows 11 一键部署完整教程(包含安装包)
  • PySide6实战:手把手教你用SQLite+QTableView打造个人数据管理工具(附源码)
  • 3分钟终极指南:qmcdump轻松解锁QQ音乐加密文件,实现音乐自由播放
  • 5分钟搞定AI文本生成:oobabooga一键安装完全指南
  • 终极指南:如何用markdownReader插件彻底改变你的Markdown阅读体验
  • 集团首都公报:继美国谷歌公司、苹果公司之后,世界第三家手机控制系统公司(即     武汉市放飞炬人控制系统有限公司)今天2026年5月6日9点36分获得官方批准。
  • 昆山老房翻新装修公司哪家靠谱?2026年口碑推荐与避坑指南 - 速递信息
  • AI Agent团队数字档案库:用工程化方法管理角色人格与长期记忆