news 2026/4/16 12:56:42

《P4587 [FJOI2016] 神秘数》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《P4587 [FJOI2016] 神秘数》

题目描述

一个可重复数字集合 S 的神秘数定义为最小的不能被 S 的子集的和表示的正整数。例如 S={1,1,1,4,13},有:1=1,2=1+1,3=1+1+1,4=4,5=4+1,6=4+1+1,7=4+1+1+1。

8 无法表示为集合 S 的子集的和,故集合 S 的神秘数为 8。

现给定长度为 n 的正整数序列 a,m 次询问,每次询问包含两个参数 l,r,你需要求出由 al​,al+1​,⋯,ar​ 所组成的可重集合的神秘数。

输入格式

第一行一个整数 n,表示数字个数。

第二行 n 个正整数,从 1 编号。

第三行一个整数 m,表示询问个数。

输出格式

对于每个询问,输出一行对应的答案。

输入输出样例

输入 #1复制

5 1 2 4 9 10 5 1 1 1 2 1 3 1 4 1 5

输出 #1复制

2 4 8 8 8

说明/提示

对于 100% 的数据点,1≤n,m≤105,∑a≤109。

代码实现:

#include<bits/stdc++.h> using namespace std; #define il inline #define rg register #define ll long long il int rd() { int res=0,k=1;char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')k=-1;ch=getchar();} while(ch<='9'&&ch>='0'){res=res*10+ch-48;ch=getchar();} return res*k; } il void wt(int x) { if(x<0)return putchar('-'),wt(-x),void(); if(x<=9)return putchar(x+48),void(); return wt(x/10),wt(x%10),void(); } int lg[100005], a[100005], n, m; struct st { int st[100005][17]; ll sum[100005]; void init(int llim, int rlim) { sum[0]=0; for(rg int i=1;i<=n;i++) if(a[i]>=llim&&a[i]<=rlim)st[i][0]=a[i],sum[i]=sum[i-1]+a[i]; else st[i][0]=0x3f3f3f3f,sum[i]=sum[i-1]; for(rg int j=1;(1<<j)<=n;j++) for(rg int i=1;i+(1<<j)<=n+1;i++) st[i][j]=min(st[i][j-1],st[i+(1<<(j-1))][j-1]); } ll qry_min(int l, int r) { int d=lg[r-l]; return min(st[l][d],st[r-(1<<d)+1][d]); } ll qry_sum(int l, int r) { return sum[r]-sum[l-1]; } } b[30]; signed main() { n=rd(); for(rg int i=1;i<=n;i++) a[i]=rd(); m=rd(); for(rg int i=2;i<=n;i++) lg[i]=lg[i>>1]+1; b[0].init(1,1); for(rg int i=1,t=2;i<=29;i++,t<<=1ll) b[i].init(t,t+t-1); for(rg int i=1,l,r;i<=m;i++) { l=rd();r=rd(); ll ans=0; int t=0; while(t<=29) { if(ans+1ll<min(b[t].qry_min(l,r),(1ll<<(t+1))-1)) break; ans+=b[t].qry_sum(l,r); t++; } wt(ans+1ll); puts(""); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 17:43:54

系统软件领域中的BSS段

系统软件领域中的BSS段 文章目录系统软件领域中的BSS段一、基本概念二、主要特点三、设计原理与优势四、内存布局示例五、实际操作与验证六、与数据段的区别七、实际应用场景八、注意事项九、相关技术命令一、基本概念 BSS&#xff08;Block Started by Symbol&#xff09; 是…

作者头像 李华
网站建设 2026/4/16 12:02:05

基于SpringBoot的忘忧传媒直播管理系统设计与实现

文章目录 详细视频演示项目介绍技术介绍功能介绍核心代码系统效果图源码获取 详细视频演示 文章底部名片&#xff0c;获取项目的完整演示视频&#xff0c;免费解答技术疑问 项目介绍 基于 SpringBoot 的忘忧传媒直播管理系统是一款专为传媒机构打造的全流程直播运营平台&…

作者头像 李华
网站建设 2026/4/16 11:56:39

【计算机毕业设计案例】基于springboot+GIS的旅游信息管理系统景点信息查询、酒店管理(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 12:07:09

基于单片机的智能花卉养护系统设计

文章目录 选题一、系统功能二、总体设计源码获取 选题 选题来源&#xff1a; 随着现代技术的不断发展&#xff0c;智能化设备逐渐渗透到生活的各个方面。在园艺领域&#xff0c;传统的人工养护方式已无法满足现代人对效率和精准度的需求。因此&#xff0c;设计一种基于单片机的…

作者头像 李华
网站建设 2026/4/15 23:00:24

【个人成长笔记】VI编辑器完整使用说明书(实操篇)

【个人成长笔记】VI编辑器完整使用说明书&#xff08;实操篇&#xff09; ✨ VI&#xff08;Visual Interface&#xff09;编辑器是Unix/Linux系统中最经典、最强大的文本编辑工具之一。它具有轻量级、高效、稳定的特点&#xff0c;即使在无图形界面的服务器环境中也能完美运行…

作者头像 李华