未了(endless)([CCF] NOI Online 能力测试2 入门组第一题)
时间限制: 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
————————————————
因为选k个魔法时,选最大的k个Ai所需时间最长,所以先将{A}从大到小排序,
最后二分答案
//PS:虽然nq<231,但vti>231所以要开long long。
代码如下
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
bool cmp(long long a,long long b)
{return a>b;
}
long long n,L,v,q;
long long mag[200010];
long long gs[200010];
int main()
{freopen("endless.in","r",stdin);freopen("endless.out","w",stdout);scanf("%lld%lld%lld",&n,&L,&v);for(long long i=1;i<=n;i++)scanf("%lld",&mag[i]);stable_sort(mag+1,mag+n+1,cmp);for(long long i=2;i<=n;i++)mag[i]+=mag[i-1]; scanf("%lld",&q);for(long long i=1;i<=q;i++){long long t;long long jl;scanf("%lld",&t);jl=t*v;if(gs[t]){printf("%lld\n",gs[t]);continue;}gs[t]=-1;long long l=0,r=n,mid=(l+r)/2;while(l<=r){if(L+mag[mid]>jl){r=mid-1;gs[t]=mid;}else{l=mid+1;}mid=(l+r)/2;}printf("%lld\n",gs[t]);}fclose(stdin);fclose(stdout);return 0;
}
未了(endless)([CCF] NOI Online 能力测试2 入门组第一题)相关推荐
- 未了(endless)(【CCF】NOI Online 能力测试2 入门组第一题 )
时间限制: 1.0 秒 空间限制: 256 MB 题目描述 由于触犯天神,Sisyphus 将要接受惩罚. 宙斯命 Sisyphus 推一块巨石上长度为 L的山坡.Sisyphus 匀速向上推的速度为 ...
- 涂色游戏color(【CCF】NOI Online 能力测试2 提高组第一题 )
子序列问题sequence([CCF]NOI Online能力测试2 提高组第二题 ) 游戏match([CCF]NOI Online能力测试2 提高组第三题 ) 题目背景 1s 256M 题目描述 ...
- 子序列问题sequence(【CCF】NOI Online能力测试2 提高组第二题 )
本题代码稍后加入 题目背景 2s 512M 题目描述 给定一个长度为 n的正整数序列 A1, A2, ⋯, An .定义一个函数 f(l,r) 表示:序列中下标在 [l,r]范围内的子区间中,不同的整 ...
- 建设城市(city)(【CCF】NOI Online 能力测试2 入门组第三题 )
时间限制: 1.0 秒 空间限制: 256 MB 题目描述 球球是一位建筑师.一天,他收到市长的任务:建设城市.球球打算建造 2n 座高楼.为了保证城市美观,球球做出了如下计划: 球球喜欢整齐的事物. ...
- 观星(【CCF】NOI Online能力测试3 入门组)
题目描述 Jimmy 和 Symbol 约好一起看星星,浩瀚的星空可视为一个长为 N.宽为 M 的矩阵,矩阵中共有 N×M 个位置,一个位置可以用坐标 (i,j)(1≤i≤N,1≤j≤M)来表示.每个 ...
- 最急救助(【CCF】NOI Online能力测试3 入门组)
题目描述 救助中心每天都要收到很多求救信号.收到求救信号后,救助中心会分析求救信号,找出最紧急的求救者给予救助. 求救信号是一个由小写英文字母组成的字符串,字符串中连续三个字符依次组成sos的情况越多 ...
- 买表(【CCF】NOI Online能力测试3 入门组)
题目描述 Jimmy 到 Symbol 的手表店买手表,Jimmy 只带了 nn 种钱币,第 ii 种钱币的面额为 ki 元,张数为 ai 张.Symbol 的店里一共有 m 块手表,第 i 块手 ...
- 游戏match(【CCF】NOI Online能力测试2 提高组第三题 )
题目背景 1s 512M 题目描述 小 A 和小 B 正在玩一个游戏:有一棵包含 n=2m个点的有根树(点从1∼n 编号),它的根是 1 号点,初始时两人各拥有 m 个点.游戏的每个回合两人都需要选出 ...
- 文具订购(【CCF】NOI Online能力测试 入门组第一题)
[题目描述] 小明的班上共有 n 元班费,同学们准备使用班费集体购买 3 种物品: 1.圆规,每个 7 元. 2.笔,每支 4 元. 3.笔记本,每本 3 元. 小明负责订购文具,设圆规,笔,笔记本的 ...
- 优秀子序列(【CCF】NOI Online能力测试3 提高组)
题目描述 现在请你求出 A 的所有优秀子序列的价值之和,答案对 10^9+7 取模. 输入格式 第一行一个正整数 n 表示序列长度. 第二行 n 个用空格分隔的非负整数,表示 a1,a2,⋯,an ...
最新文章
- AIDL 和binder 原理
- Strusts2 高危漏洞又来了,老项目自查起来!
- canvas 移动光速特效-
- iphone开发中的一些小技
- 关于Spring batch的学习之CSV2DB
- ios 裁剪圆形头像_iOS开发之裁剪圆形头像
- 713C - 如何进入一个研究领域
- Lesson 07 for Plotting in R for Biologists
- Acme CAD ConverterDWG文件查看器 2021
- QC七大手法之直方图详解
- 工程点点app爬虫和sign算法破解
- shiro 记住我 的实现
- 面试必备:虾皮服务端15连问
- Exception thrown from ApplicationListener handling ContextClosedEvent
- 中国移动SP短信网关接入平台
- 用户的登录及注册功能
- 以 Broadcom Corporation BCM4311、BCM4312、BCM4313、BCM4321 或 BCM4322 为基础的无线网络卡...
- 鸿蒙系统一直重启怎么办,我的电脑能开机随后就是进不了系统一直黑在那边,时间长了就自动重启...
- 直播电商购物消费者满意度在线调查报告(三)
- shell脚本监控网站是否正常