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

p4085

洛谷p4085

题目链接

首先想怎么计算一个区间的风味和辣度;风味是区间内的风味总和,可以用前缀和处理;辣度是区间最大值,可以用ST表处理;
处理完ST表和前缀和之后考虑怎么求答案,可以考虑二分查找前缀和满足风味要求的最小值,然后列举后面的所有情况求最小;
代码:

#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
struct gan{int f,s;
}g[100005];
int n,m,f[100005][20],sum[100005];
inline int read()
{int x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}return x*f;
}
int lmax(int l,int r){//求区间最大值r++;int j=63-__builtin_clzll(r-l);return max(f[l][j],f[r-(1<<j)][j]);
}
signed main(){int ans=0x3f3f3f3f;n=read();m=read();int h=63-__builtin_clzll(n);for(int i=1;i<=n;i++){g[i].f=read();g[i].s=read();}for(int i=1;i<=n;i++) f[i][0]=g[i].s;for(int j=1;j<=h;j++){//预处理ST表int k=n-(1<<j)+1;for(int i=1;i<=k;i++){f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);}}for(int i=1;i<=n;i++) sum[i]=sum[i-1]+g[i].f;int x=lower_bound(sum+1,sum+n+1,m)-sum;for(int i=x;i<=n;i++){int y=upper_bound(sum+1,sum+1+n,sum[i]-m)-sum;if(lmax(y,i)<ans) ans=lmax(y,i);}cout<<ans;return 0;
}
http://www.wxhsa.cn/company.asp?id=2530

相关文章:

  • Excel甘特图 - 教程
  • 基于ArcGIS的通用界址点导入导出工具设计与实现
  • python 函数作用域
  • 基于Python+Vue开发的鲜花商城管理系统源码+运行
  • 文献阅读 | AutoCodeBench
  • 【ARM Cache 及 MMU 系列文章 6.5 -- 如何进行 Cache miss 统计?】
  • Idea win 快捷键大全
  • VSCode+neovim工作环境快速构建
  • 25.9.12随笔联考总结
  • macos
  • Java基础程序设计
  • CF482C Game with Strings
  • 算法复杂度
  • 0912模拟赛总结
  • 相机标定
  • 深度学习隐私测试框架PrivacyRaven全面解析
  • 华硕灵耀双屏不定时死机,开机蓝屏 其一解决方法
  • 完整教程:Java 抽象(abstract)关键字
  • 自建rustdesk服务器,不填写中继地址无法连接的解决
  • Typescript中Type 类型的实现原理
  • 2025.9.13——1黄
  • 数据结构与算法-30.图-拓扑排序
  • 1.进制转化
  • CF1796E Colored Subgraphs
  • 安全加固:启动PostgreSQL 14服务器SSL加密的方法指南在CentOS 7环境中
  • 更美观的网页布局
  • 更灵活易用、延迟超低、更多情感语音支持!地表最强 Voice Agent 开源框架再进化!丨TEN Framework 更新
  • 详细介绍:【干货收藏】Transformer架构深度拆解:大模型入门核心指南
  • 实用指南:Terraform 从入门到实战:历史、原理、功能与阿里云/Azure 上手指南
  • Electron38-Wechat电脑端聊天|vite7+electron38仿微信桌面端聊天系统