博客
关于我
Codeforces B. Nastya and Door (前缀和优化) (Round #637 Div.2)
阅读量:170 次
发布时间:2019-02-28

本文共 1538 字,大约阅读时间需要 5 分钟。

题意: 给出一个n个数的序列表示连续山迫的高度。形式上,您需要选择具有最大峰数(峰指a[i] > a[i - 1] 且 a[i] > a[i + 1] 中的a[i])的山脉子段[l,l + k-1]。在所有这些段中,您需要找到具有最小可能值l的段。

在这里插入图片描述
思路:

  • 先遍历一遍记录所有山峰的位置,再遍历每一个(i,i+k-1)区间中山峰的个数(不算端点!!),从而算出最大峰段。
    *当然这里还需要用一个前缀和优化一下变成O(n)。

代码实现:

#include
#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair
#define lowbit(x) (x &(-x))#define ls(x) x<<1#define rs(x) (x<<1+1)#define me(ar) memset(ar, 0, sizeof ar)#define mem(ar,num) memset(ar, num, sizeof ar)#define rp(i, n) for(int i = 0, i < n; i ++)#define rep(i, a, n) for(int i = a; i <= n; i ++)#define pre(i, n, a) for(int i = n; i >= a; i --)#define IOS ios::sync_with_stdio(0); cin.tie(0);cout.tie(0);const int way[4][2] = { { 1, 0}, { -1, 0}, { 0, 1}, { 0, -1}};using namespace std;const int inf = 0x7fffffff;const double PI = acos(-1.0);const double eps = 1e-6;const ll mod = 1e9 + 7;const int N = 2e5 + 5;//pos用来前缀和统计山峰数int t, n, k, a[N], pos[N];signed main(){ IOS; cin >> t; while(t --){ cin >> n >> k; for(int i = 1; i <= n; i ++){ cin >> a[i]; pos[i] = 0; } for(int i = 2; i < n; i ++){ if(a[i] > a[i-1] && a[i] > a[i+1]) pos[i] = 1; pos[i] += pos[i-1]; //统计峰数的前缀和 } int ans = 0, l = -1; for(int i = 1; i + k - 1 <= n; i ++){ int cnt = pos[i + k - 2] - pos[i] + 1; if(cnt > ans){ //记录当前i开头的k长度区段的峰数,并不断更新ans ans = cnt; l = i; } } cout << ans << " " << l << endl; } return 0;}

转载地址:http://osdj.baihongyu.com/

你可能感兴趣的文章
NervanaGPU 项目使用教程
查看>>
Nerves 项目教程
查看>>
nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML.
查看>>
nestesd exception is java .lang.NoSuchMethodError:com.goolge.common.collect
查看>>
nestJS学习
查看>>
net core 环境部署的坑
查看>>
NET Framework安装失败的麻烦
查看>>
Net 应用程序如何在32位操作系统下申请超过2G的内存
查看>>
Net.Framework概述
查看>>
NET3.0+中使软件发出声音[整理篇]<转>
查看>>
net::err_aborted 错误码 404
查看>>
NetApp凭借领先的混合云数据与服务把握数字化转型机遇
查看>>
NetAssist网络调试工具使用指南 (附NetAssist工具包)
查看>>
Netbeans 8.1启动参数配置
查看>>
NetBeans IDE8.0需要JDK1.7及以上版本
查看>>
NetBeans之JSP开发环境的搭建...
查看>>
NetBeans之改变难看的JSP脚本标签的背景色...
查看>>