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

2026.2.9 模拟赛

https://oj.gxyzh.com/d/hzoj/contest/696606a2c01e1c1c7ca584dd

美食家

题解(法一)

不妨将每桶包子最多能吃的次数处理出来,存在 \(a_i\)
每次吃一趟包子,可以求出共吃了多少包子,之后全局减法。
有这样的神秘递推式:

\[d_i=d_{i-1}+[d_{i-1}<a_i] \]

\(d_n\) 即是的包子数。

直接模拟是 \(O(nm)\) 的,需要优化。
注意到当第 \(i\) 个包子不能吃后,之后的轮次也不能吃。
考虑用 势能线段树 维护。
节点记录 \(min(a_i-d_{i-1})\),检测到 \(minn+val\le 0\) 就暴力更新子树。
均摊复杂度为 \(O((n+m)logn)\)

代码

#include<iostream>
#define  int  long long
#define  lch  (x<<1)
#define  rch  (x<<1|1) 
using namespace std;
constexpr int N=1e5+5;
int n,m,X,w[N],a[N],ans;
struct Segment_Tree{int sum[N<<2],tag[N<<2],minn[N<<2];void push_down(int x){if(!tag[x])return;tag[lch]+=tag[x],minn[lch]+=tag[x];tag[rch]+=tag[x],minn[rch]+=tag[x];tag[x]=0;}int query(int x,int l,int r,int L,int R){if(l>r)return 0;if(l==L&&r==R)return sum[x];int mid=(L+R)>>1; push_down(x);if(r<=mid)return query(lch,l,r,L,mid);else if(mid+1<=l)return query(rch,l,r,mid+1,R);else return query(lch,l,mid,L,mid)+query(rch,mid+1,r,mid+1,R);}void build(int x,int L,int R){if(L==R){minn[x]=a[L]-query(1,1,L-1,1,n);if(minn[x]<=0)minn[x]=1e17;sum[x]=(minn[x]!=1e17); return;}int mid=(L+R)>>1; build(lch,L,mid),build(rch,mid+1,R);sum[x]=sum[lch]+sum[rch];minn[x]=min(minn[lch],minn[rch]);}void update(int x,int val,int L,int R){if(minn[x]==1e17)return;if(minn[x]+val>0){ minn[x]+=val,tag[x]+=val; return; }if(L==R){minn[x]=1e17,sum[x]=0; add(1,L+1,n,1,1,n);return;}int mid=(L+R)>>1; push_down(x);update(lch,val,L,mid),update(rch,val,mid+1,R);sum[x]=sum[lch]+sum[rch],minn[x]=min(minn[lch],minn[rch]);}void add(int x,int l,int r,int val,int L,int R){if(l>r||minn[x]==1e17)return;if(l==L&&r==R){if(minn[x]+val<=0)update(x,val,L,R);else minn[x]+=val,tag[x]+=val;return;}int mid=(L+R)>>1; push_down(x);if(r<=mid)add(lch,l,r,val,L,mid);else if(mid+1<=l)add(rch,l,r,val,mid+1,R);else add(lch,l,mid,val,L,mid),add(rch,mid+1,r,val,mid+1,R);sum[x]=sum[lch]+sum[rch];minn[x]=min(minn[lch],minn[rch]);}
}tr;
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>m>>X;for(int i=1;i<=n;i++)cin>>w[i];for(int i=1,x;i<=n;i++){cin>>x,a[i]=i;if(w[i]>X)a[i]=0;else a[i]=(X-w[i])/x+1;}tr.build(1,1,n);for(int i=1;i<=m;i++){int x=tr.sum[1]; ans+=x;tr.add(1,1,n,-x,1,n);}cout<<ans<<'\n';return 0;
} 

题解(法二)

还没看懂题解。

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

相关文章:

  • FPGA实现双线性插值缩放:代码与实现详解
  • SpringBoot配置终极指南:从入门到精通
  • Command Injection(命令注入)漏洞及其防御策略
  • 2026年2月气体分析仪厂商推荐,工业气体检测设备厂家口碑榜 - 品牌鉴赏师
  • BISHI29 小红的排列构造①
  • 2026年红木家具回收公司权威推荐:紫檀家具回收、红木家具上门回收、红木家具回收价格、红木家具回收平台选择指南 - 优质品牌商家
  • FastAPI系列(24):ORM操作之删除接口开发
  • 强监管行业如何确保项目合规?2025年-2026年项目集管理系统推荐与评价,解决审计追溯与安全管控核心难题 - 品牌推荐
  • 2025年-2026年瀑布管理系统推荐:大型复杂项目场景深度评测,解决流程割裂与合规痛点并附排名 - 品牌推荐
  • 如何为跨组织协同选型?2025年-2026年项目管理平台全面评价与推荐,直击效率与合规核心痛点 - 品牌推荐
  • 基于深度学习的AI原生决策支持模型构建指南
  • 2026智慧校园管理平台推荐榜 适配园所开学缴费场景 - 优质品牌商家
  • 微服务通信优化:AI原生应用的gRPC集成指南
  • 【排版救星】如何优雅地将图片插入 Word 表格?——拒绝图片乱跑与显示不全
  • 安卓离线打包
  • 春节不返乡可以做什么?写于2026年2月9日(第七周第I天)
  • 大数据领域ClickHouse的索引优化策略
  • 基于SpringBoot+Vue的求职招聘平台设计与实现
  • Java高频面试题:Java中变量和常量有什么区别?
  • 实用指南:好消息,.NET 10 正式发布,更智能、更安全、更高性能的统一开发平台!
  • 我常用的爬虫利器,无脑采集Tiktok shop视频数据
  • Spark的大数据电商推荐系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 2026年隔声涂料厂家推荐:建筑隔声材料、成都楼板隔声材料厂家、成都隔声材料哪家好、楼板隔声保温系统选择指南 - 优质品牌商家
  • 【Spark+Hive+hadoop】基于Spark+hadoop大数据空气质量数据分析预测系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 2026年度评测:顶尖免费GEO与AI搜索优化监测工具
  • 2025年-2026年项目管理系统推荐:基于技术特性横向评价,应对复杂项目与合规痛点 - 品牌推荐
  • Python实现电影数据可视化分析系统(数据集+源码+论文)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 豆瓣电影大数据分析系统定制(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 基于TensorFlow的AI原生图像生成应用开发教程
  • [Python]如何用uv套件建置python專案與虛擬環境? - 详解