时间限制: 1.0 秒

空间限制: 256 MB

题目描述

由于触犯天神,Sisyphus 将要接受惩罚。

宙斯命 Sisyphus 推一块巨石上长度为 L的山坡。Sisyphus 匀速向上推的速度为每年 v 的长度(由于是匀速,故经过1/2年将能向上推 1/2的长度)。然而,宙斯并不希望 Sisyphus 太快到达山顶。宙斯可以施展 n 个魔法,若宙斯施展第 i个魔法(1≤i≤n),则当 Sisyphus 第一次到达位置 a i时,他将会同巨石一起滚落下山底,并从头推起。(滚落的时间忽略不计,即可看作第一次到达位置 ai后 Sisyphus 立即从山底重新出发)

例如宙斯施用了 ai =3 与 ai=5 的两个魔法。Sisyphus 的速度 v = 1,山坡的长度 L = 6,则他推石上山过程如下:

1.用 3 年走到位置 3。
2.受 ai=3 的魔法影响,回到了山底出发。
3.再用 3 年走到位置 3,然而因为是第二次到达,ai=3 的魔法不起作用。
4.用 2 年走到位置 5。
5.受 ai=5 的魔法影响,回到了山底出发。
6.用 66 年从山底走到了山顶。花费的总时间为 1414 年。

现在,宙斯有 q 个询问。对于第 i 个询问 ti,宙斯想知道,他最少需要施展多少个魔法才能使 Sisyphus 到达山顶所用的年数大于 ti 。

输入格式

第一行三个整数 n, L,v 分别表示魔法的种类数,山坡的长度,Sisyphus 的速度。

第二行 n 个整数。第 i 个整数 ai表示第 i 个魔法作用的位置。(1≤i≤n)

第三行一个整数 q 表示宙斯的询问个数。

接下来 q 行每行一个整数,第 i 行的整数 ti表示宙斯的第 ii 个询问。(1≤i≤q)

输出格式

输出 q 行,每行恰好一个整数,第 i 行的整数对应第 i 个询问的答案。(1≤i≤q)

如果宙斯无论如何都不能使 Sisyphus 使用的年数大于 ti,请输出 -1。

样例1输入

3 6 3
3 5 1
4
1
3
4
5

样例1输出

0
1
2
-1

正解一:

思路1:

1.首先可以发现的是高度越高耗费的时间越多,那么我们优先使用a[i]​高的魔法可以耗费更多的时间。所以就先对ai 排序。
2.数组tm[0]代表不是魔法的时间,此后tm[i]代表施i次魔法的最大时间
3.再用与tm[i]比较询问ti比较
4.最后用普通的搜索会得80分,AC的话必须用二分搜索(传送门:二分搜索)

AC的C++代码如下

#include<iostream>
#include<algorithm>
using namespace std;
int n,l,v,q,a[200010],t[200010];
double tm[200010];
int main()
{cin>>n>>l>>v;for(int i=1;i<=n;i++)cin>>a[i];    sort(a+1,a+n+1);//从小到大排序 tm[0]=1.0*l/v;//不受阻碍爬到山顶时间 for(int i=1;i<=n;i++)tm[i]=1.0*a[n-i+1]/v+tm[i-1];//从最大开始加    cin>>q;//宙斯的询问个数  for(int i=0;i<q;i++)cin>>t[i];      for(int i=0;i<q;i++)//每一次询问   {int j;int num=upper_bound(tm,tm+n+1,t[i])-tm;//二分搜索if(num==n+1)//达不到目的cout<<-1<<endl;else cout<<num<<endl;}return 0;}

正解二:

#include<iostream>
#include<algorithm>
using namespace std;
long long n,l,v,q,t,a[200010],sum[200010];
int main()
{cin>>n>>l>>v;for(long long i=0;i<n;i++)cin>>a[i];sum[0]=l;sort(a,a+n);reverse(a,a+n);//使从大到小排列 for(long long i=0;i<n;i++)sum[i+1]=sum[i]+a[i];cin>>q;for(long long i=0;i<q;i++){cin>>t;//每一次询问 long long s=1ll*t*v;long long ans=upper_bound(sum,sum+n+1,s)-sum;//二分查找 if(ans==n+1)cout<<"-1"<<endl;else cout<<ans<<endl;}    return 0;}
NOI Online能力测试视频版,让我们看看出题人们怎么说!

未了(endless)(【CCF】NOI Online 能力测试2 入门组第一题 )相关推荐

  1. 涂色游戏color(【CCF】NOI Online 能力测试2 提高组第一题 )

    子序列问题sequence([CCF]NOI Online能力测试2 提高组第二题 ) 游戏match([CCF]NOI Online能力测试2 提高组第三题 ) 题目背景 1s 256M 题目描述 ...

  2. 子序列问题sequence(【CCF】NOI Online能力测试2 提高组第二题 )

    本题代码稍后加入 题目背景 2s 512M 题目描述 给定一个长度为 n的正整数序列 A1, A2, ⋯, An .定义一个函数 f(l,r) 表示:序列中下标在 [l,r]范围内的子区间中,不同的整 ...

  3. 建设城市(city)(【CCF】NOI Online 能力测试2 入门组第三题 )

    时间限制: 1.0 秒 空间限制: 256 MB 题目描述 球球是一位建筑师.一天,他收到市长的任务:建设城市.球球打算建造 2n 座高楼.为了保证城市美观,球球做出了如下计划: 球球喜欢整齐的事物. ...

  4. 观星(【CCF】NOI Online能力测试3 入门组)

    题目描述 Jimmy 和 Symbol 约好一起看星星,浩瀚的星空可视为一个长为 N.宽为 M 的矩阵,矩阵中共有 N×M 个位置,一个位置可以用坐标 (i,j)(1≤i≤N,1≤j≤M)来表示.每个 ...

  5. 最急救助(【CCF】NOI Online能力测试3 入门组)

    题目描述 救助中心每天都要收到很多求救信号.收到求救信号后,救助中心会分析求救信号,找出最紧急的求救者给予救助. 求救信号是一个由小写英文字母组成的字符串,字符串中连续三个字符依次组成sos的情况越多 ...

  6. 买表(【CCF】NOI Online能力测试3 入门组)

    题目描述 Jimmy 到 Symbol 的手表店买手表,Jimmy 只带了 nn 种钱币,第 ii 种钱币的面额为 ki​ 元,张数为 ai​ 张.Symbol 的店里一共有 m 块手表,第 i 块手 ...

  7. 游戏match(【CCF】NOI Online能力测试2 提高组第三题 )

    题目背景 1s 512M 题目描述 小 A 和小 B 正在玩一个游戏:有一棵包含 n=2m个点的有根树(点从1∼n 编号),它的根是 1 号点,初始时两人各拥有 m 个点.游戏的每个回合两人都需要选出 ...

  8. 文具订购(【CCF】NOI Online能力测试 入门组第一题)

    [题目描述] 小明的班上共有 n 元班费,同学们准备使用班费集体购买 3 种物品: 1.圆规,每个 7 元. 2.笔,每支 4 元. 3.笔记本,每本 3 元. 小明负责订购文具,设圆规,笔,笔记本的 ...

  9. 优秀子序列(【CCF】NOI Online能力测试3 提高组)

    题目描述 现在请你求出 A 的所有优秀子序列的价值之和,答案对 10^9+7 取模. 输入格式 第一行一个正整数 n 表示序列长度. 第二行 n 个用空格分隔的非负整数,表示 a1​,a2​,⋯,an ...

最新文章

  1. python中pop函数_Python中的Pop函数
  2. java 1.7 liunx_在linux下安装Jdk1.7
  3. android canvas绘制圆角_Android自定义View撸一个渐变的温度指示器(TmepView)
  4. 概率论与数理统计中的算子半群 第一讲 Banach-Steinhaus定理2 Banach-Steinhaus定理的应用
  5. 谷歌、雅虎支持中文域名搜索 有助提升SEO
  6. Python控制台英汉-汉英电子词典
  7. 动态规划——数塔问题
  8. rdkafka线程过多_Kafka/RocketMQ 多线程消费时如何保证消费顺序?
  9. 数学习题:求解不定方程a^2 + b^2 = 3025
  10. 智慧城市开放数据的发展趋势分析及探讨
  11. div+css 固定宽度且居中 文字左对齐
  12. 怎么安装python2.7_python2.7环境如何安装
  13. lua定时器与定时任务的接口设计
  14. 从零开始搭建EasyDarwin环境——Windows系统开发环境Golang的搭建
  15. python绘制散点图和折线图_Python散点图与折线图绘制过程解析
  16. 计算机445 135 139端口,关闭445 135 137 138 139端口方法图文教程
  17. 基于药效团模型和分子动力学模拟对PTP-LAR抑制剂的研究
  18. SQL Sever 2014 使用sql sever身份验证登录
  19. 删除docker registry镜像脚本报错No repositories directory found inside REGISTRY_DATA_DIR
  20. 工厂生产管理系统如何解决车间生产管理难题?

热门文章

  1. hdu 1507(最大匹配)
  2. Windows桌面切换VC代码
  3. Sql Server 2000 无法打开用户默认数据库。登录失败
  4. maven中scope属性
  5. SpringBoot项目报错Cannot determine embedded database driver class for database type NONE
  6. MYSQL定时创建表分区
  7. SQL Server创建视图
  8. intellij idea rearrange code
  9. 2013年1月7日学习内容
  10. 江苏大学矩阵论、数理统计期末考试复习