202112-1 序列查询
题目背景
西西艾弗岛的购物中心里店铺林立,商品琳琅满目。为了帮助游客根据自己的预算快速选择心仪的商品,IT 部门决定研发一套商品检索系统,支持对任意给定的预算 x,查询在该预算范围内(≤x)价格最高的商品。如果没有商品符合该预算要求,便向游客推荐可以免费领取的西西艾弗岛定制纪念品。
假设购物中心里有 n 件商品,价格从低到高依次为 A1,A2⋯An,则根据预算 x 检索商品的过程可以抽象为如下序列查询问题。
题目描述
A=[A0,A1,A2,⋯,An] 是一个由 n+1 个 [0,N) 范围内整数组成的序列,满足 0=A0<A1<A2<⋯<An<N。(这个定义中蕴含了 n 一定小于 N。)
基于序列 A,对于 [0,N) 范围内任意的整数 x,查询 f(x) 定义为:序列 A 中小于等于 x 的整数里最大的数的下标。具体来说有以下两种情况:
- 存在下标 0≤i<n 满足 Ai≤x<Ai+1
此时序列 A 中从 A0 到 Ai 均小于等于 x,其中最大的数为 Ai,其下标为 i,故 f(x)=i。
- An≤x
此时序列 A 中所有的数都小于等于 x,其中最大的数为 An,故 f(x)=n。
令 sum(A) 表示 f(0) 到 f(N−1) 的总和,即:
sum(A)=∑i=0N−1f(i)=f(0)+f(1)+f(2)+⋯+f(N−1)
对于给定的序列 A,试计算 sum(A)。
输入格式
从标准输入读入数据。
输入的第一行包含空格分隔的两个正整数 n 和 N。
输入的第二行包含 n 个用空格分隔的整数 A1,A2,⋯,An。
注意 A0 固定为 0,因此输入数据中不包括 A0。
输出格式
输出到标准输出。
仅输出一个整数,表示 sum(A) 的值。
样例1输入
3 10
2 5 8
样例1输出
15
样例1解释
A=[0,2,5,8]
i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
f(i) | 0 | 0 | 1 | 1 | 1 | 2 | 2 | 2 | 3 | 3 |
如上表所示,sum(A)=f(0)+f(1)+⋯+f(9)=15。
考虑到 f(0)=f(1)、f(2)=f(3)=f(4)、f(5)=f(6)=f(7) 以及 f(8)=f(9),亦可通过如下算式计算 sum(A):
sum(A)=f(0)×2+f(2)×3+f(5)×3+f(8)×2
样例2输入
9 10
1 2 3 4 5 6 7 8 9
样例2输出
45
子任务
50% 的测试数据满足 1≤n≤200 且 n<N≤1000;
全部的测试数据满足 1≤n≤200 且 n<N≤10^7。
提示
若存在区间 [i,j) 满足 f(i)=f(i+1)=⋯=f(j−1),使用乘法运算 f(i)×(j−i) 代替将 f(i) 到 f(j−1) 逐个相加,或可大幅提高算法效率。
题目分析
根据提示的信息我们可以找到解答题目的规律,比如样例1中A数组为[0,2,5,8],对应的下标i为(0,1,2,3),所给定的N为10,那么必定有a[i+1]-a[i]个f(i)相等,f(i)的值就等于下标i,以此类推可以计算到N-a[n]个f(n-1)相等且值为n。以下附上具体代码供参考:
AC代码
#include<iostream>
using namespace std;
int n,N;
int a[202];
int main(){int sum=0,l;cin>>n>>N;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){l=a[i]-a[i-1];sum+=l*(i-1);}l=N-a[n];sum+=l*n;cout<<sum<<endl;return 0;
}
202112-1 序列查询相关推荐
- CCF 202112-2 序列查询新解 python 满分
CCF 202112-2 序列查询新解 python 满分 题目叙述 问题描述:略 输入格式:略 输出格式:略 样例 满分证明 解题思路 01Python超时70分 02满分python思路 第一,计 ...
- CCF202112-1 序列查询
试题编号: 202112-1 试题名称: 序列查询 时间限制: 300ms 内存限制: 512.0MB 问题描述: 解题思路: 顺序暴力枚举,因为对于数组a,a[i] < a[i+1] ,且 ...
- CCF CSP202112-2 序列查询新解
CCF CSP202112-2 序列查询新解 题目背景 上一题"序列查询"中说道: A=[A0,A1,A2,⋯,An]A=[A_0,A_1,A_2,⋯,A_n]A=[A0,A1 ...
- CCF CSP202112-1 序列查询
CCF CSP202112-1 序列查询 题目背景 西西艾弗岛的购物中心里店铺林立,商品琳琅满目.为了帮助游客根据自己的预算快速选择心仪的商品,IT 部门决定研发一套商品检索系统,支持对任意给定的预算 ...
- CSP 202112-1 序列查询 python
CSP 202112-1 序列查询 python 题目描述 思路 其实这道题,我觉得提示给的非常清楚了,这个提示啊,直接送分了哈哈哈,所以我们只要根据提示,利用乘法运算,计算就可以得到结果 代码 # ...
- csp序列查询(C语言)
csp序列查询 #include<stdio.h>int main(){int n, N, i, sum, j;int A[200];A[0] = 0;sum = 0;scanf(&quo ...
- ~5 ccf 2021-12-2 序列查询新解
序列查询新解 题目描述 输入 输出 样例输入 样例输出 子任务 源代码 关于这题 题目描述 输入 输出 样例输入 样例1 3 10 2 5 8 样例2 9 10 1 2 3 4 5 6 7 8 9 样 ...
- ~4.2 ccf 2021-12-1 序列查询
序列查询 题目描述 输入 输出 样例输入 样例输出 子任务 源代码 题目描述 输入 输出 样例输入 样例一 3 10 2 5 8 样例二 9 10 1 2 3 4 5 6 7 8 9 样例输出 样例一 ...
- CCF CSP 序列查询新解
CCF CSP 序列查询新解(C语言) 题目背景 上一题"序列查询"中说道: A=[A0,A1,A2,⋯,An] 是一个由 n+1 个 [0,N) 范围内整数组成的序列,满足 0= ...
- CSP CCF: 202112-2 序列查询新解 (C++)
题目链接:计算机软件能力认证考试系统 试题编号: 202112-2 试题名称: 序列查询新解 时间限制: 1.0s 内存限制: 512.0MB 题目背景 上一题"序列查询"中说道: ...
最新文章
- Linux添加用户组和添加用户
- “Assign Random Colors” is not working in 3ds Max 2015
- Ubuntu下ibus在firefox浏览器中选中即删除的解决办法
- CloudStack设计思想
- 数据库,唯一索引,重复数据处理
- thinkphp集成系列之phpmailer批量发送邮件
- QT的QScriptValue类的使用
- Web 绘图—服务器端绘图
- Win XP2实用的修复工具
- 对cookie和子cookie操作的封装
- springboot 配置多个请求服务代理
- mysql的安装以及开启远程访问
- AWS DeepRacer 强化学习RL,工作流程
- opcode加密php代码,总结Opcode缓存和PHP代码的加密
- ECharts 示例——双Y轴
- 达观数据爱心公益再出发,走进广西桥业小学开展捐书助学活动
- 蛋白结构分析实操教程
- Oracle所有错误类型
- Xshell 免密连接云主机(以Vultr云服务为例)
- TypeScript:Aho–Corasick算法实现敏感词过滤
热门文章
- 【图像识别】基于BP神经网络实现手写体大写字母识别附matlab代码
- 菜刀怎么接mysql_chopper菜刀一句话操作mysql数据库乱码问题 -电脑资料
- linux内存硬件检测工具,13种在 Linux 系统上检测 CPU 信息的工具
- 【赠书】阿里云天池大赛赛题解析,深度学习篇!
- PHP应用加速工具软件
- 2021年化工自动化控制仪表考试资料及化工自动化控制仪表考试试题
- 18岁生日所经过的总天数
- Python 查看文件列表
- 电脑中的图片怎么加密?
- HTML5游戏引擎(十五)-时间控制——Timer计时器 Ticker心跳-startTick-stopTick 帧事件-ENTER_FRAME