数据结构_sfdg(小F打怪)
问题描述
小 F 很爱打怪, 今天因为系统 bug, 他提前得知了 n 只怪的出现顺序以及击
倒每只怪得到的成就值 ai。 设第一只怪出现的时间为第 1 秒,这个游戏每过 1 秒
钟出现一只新怪且没被击倒的旧怪消失。 小 F 决定发动一次技能, 他的技能最多
维持 k 秒, 他希望获得最大的成就值,请你帮他计算他发动技能的时间 l 和技能
结束时间 r(r-l+1<=k)。 当存在多种方案使得成就值最大时,选择技能发动时间 l
最小的方案, 再选择技能持续时间 r-l+1 最小的方案。
★数据输入
输入第一行为两个正整数 n(1<=n<=100000), k(0<k<=n),表示出现 n 只怪,
小 F 的技能最多维持 k 秒。
输入第二行为 n 个整数,表示小 F 击倒第 i 秒钟出现的怪能给有获得的成就
值 ai(-1000<=a[i]<=1000)。
★数据输出
输出为一行三个数。第一个数为可获得的最大成就值,第二个数为技能发动
时间 l,第三个数为技能结束时间 r。
输入示例 | 输出示例 |
6 3 -1 2 -6 5 -5 6 |
6 4 6 |
输入示例 | 输出示例 |
5 5 -1 -1 -1 -1 -1 |
-1 1 1 |
思路
双端队列
code
#include <stdio.h>
#include <stdlib.h> struct Node
{
int data;
int index;
}; int main()
{
int i;
int n, k;
scanf("%d %d", &n, &k);
int *p = (int *)malloc(sizeof(int)*(n + ));
p[] = ;
for (i = ; i <= n; i++)
{
scanf("%d", p + i);
p[i] += p[i - ];
} int max_l = , max_r = , max_hap = p[];
Node *que = (Node *)malloc(sizeof(Node)*(n+));
int l=,r=;
que[r].data = p[];
que[r].index = ; for (i = ; i <= n; i++)
{
while (l<=r && i - que[l].index > k)
{
l++;
} int val = p[i] - que[l].data;
if (val > max_hap)
{
max_hap = val;
max_l = que[l].index + ;
max_r = i;
} while (l<=r && p[i]<que[r].data)
{
r--;
}
r++;
que[r].data = p[i];
que[r].index = i;
}
printf("%d %d %d\n", max_hap, max_l, max_r); free(p);
free(que); return ;
}
数据结构_sfdg(小F打怪)的更多相关文章
- 算法与数据结构实验题 4.2 小 F 打怪
★实验任务 小 F 很爱打怪,今天因为系统 bug,他提前得知了 n 只怪的出现顺序以及击 倒每只怪得到的成就值 ai.设第一只怪出现的时间为第 1 秒,这个游戏每过 1 秒 钟出现一只新怪且没被击倒 ...
- 「题解」小 R 打怪兽 monster
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目描述 小 R 最近在玩一款游戏.在游戏中,小 R 要依次打 \(n\) 个怪兽,他需要打败至少 \(k\) 个怪兽才能通关.小 ...
- LuoguP5139 z小f的函数 题解
Content 给定 \(T\) 个二次函数 \(y=ax^2+bx+c\),有若干次操作,有一个操作编号 \(p\),保证仅为以下这五种: 操作 \(1\):给定 \(k\),将函数图像向上移动 \ ...
- [数据结构与算法-15]单源最短路径(Dijkstra+SPFA)
单源最短路径 问题描述 分别求出从起点到其他所有点的最短路径,这次主要介绍两种算法,Dijkstra和SPFA.若无负权优先Dijkstra算法,存在负权选择SPFA算法. Dijkstra算法 非负 ...
- 清北学堂2017NOIP冬令营入学测试P4749 F’s problem(f)
时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 这个故事是关于小F的,它有一个怎么样的故事呢. 小F是一个田径爱好者,这天它们城市里正在 ...
- [转]lua数据结构--闭包
前面几篇文章已经说明了Lua里面很常用的几个数据结构,这次要分享的也是常用的数据结构之一 – 函数的结构.函数在Lua里也是一种变量,但是它却很特殊,能存储执行语句和被执行,本章主要描述Lua是怎么实 ...
- 泛函编程(22)-泛函数据类型-Monoid In Action
在上一节我们讨论了Monoid的结合性和恒等值的作用以及Monoid如何与串类元素折叠算法相匹配.不过我们只示范了一下基础类型(primitive type)Monoid实例的应用,所以上一节的讨论目 ...
- memcached缓存知识简单梳理
memcached工作原理基本概念:slab,page,chunk.slab,是一个逻辑概念.它是在启动memcached实例的时候预处理好的,每个slab对应一个chunk size,也就是说不同s ...
- memcached工作原理与优化建议
申明,本文为转载文:http://my.oschina.net/liuxd/blog/63129 工作原理 基本概念:slab,page,chunk. slab,是一个逻辑概念.它是在启动memcac ...
随机推荐
- CodeForces - 156C:Cipher (不错的DP)
Sherlock Holmes found a mysterious correspondence of two VIPs and made up his mind to read it. But t ...
- HihoCoder1403 后缀数组一·重复旋律1
后缀数组一·重复旋律 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列. 小Hi ...
- kafka集群下线broker节点实践方法(broker topic 迁移)
[root@es03 ~]# cd /usr/hdp//kafka/bin [root@es03 kafka]# cd bi -bash: cd: bi: No such file or direct ...
- 谈谈Linux内核驱动的coding style
最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代码离Linux内核的coding style要求还是差很多.当初自己对内核文档里的CodingStyle一文只是粗略的浏览,真正写代 ...
- PHP怎么把经过UTF-8编码的中文字符转换成正常的中文
问题的场景: html 为utf-8编码<meta http-equiv="Content-Type" content="text/html; charset=UT ...
- mysql的备份恢复等操作
备份数据库 shell> mysqldump -h host -u root -p dbname >dbname_backup.sql 恢复数据库 shell> mysqladmin ...
- 蓝桥杯 基础练习 BASIC-24 龟兔赛跑预测
基础练习 龟兔赛跑预测 时间限制:1.0s 内存限制:512.0MB 问题描述 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑.于是世界上各 ...
- C语言 字符串中数字的运算
主函数中输入字符串"32486"和"12345",在主函数中输出的函数值为44831. #include <stdio.h> #include &l ...
- 反射+属性标签 通用Excel导入导
在做通用导入导出的时候,最关键的应该就是实体导出导入的顺序了,但是编译器在编译的时候又无法自定义属性编译的顺序,所以需要一个自定义的特性标签来指定实体类导出的顺序,然后通过自定义的比较器将属性排序 因 ...
- 破解Mac版MyEclipse-2017-ci3 2017、11、21亲测有效
一.前提 要有安装好的jdk,没有的Mac用户看这篇博客:给Mac安装最新版本的jdk(戳此) Windows用户先去官网(戳此)下载jdk,然后百度”jdk配置环境变量”(戳此),很简单的,加油你 ...