博客
关于我
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/

你可能感兴趣的文章
MySQL_西安11月销售昨日未上架的产品_20161212
查看>>
Mysql——深入浅出InnoDB底层原理
查看>>
MySQL“被动”性能优化汇总
查看>>
MySQL、HBase 和 Elasticsearch:特点与区别详解
查看>>
MySQL、Redis高频面试题汇总
查看>>
MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
查看>>
mysql一个字段为空时使用另一个字段排序
查看>>
MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
查看>>
MYSQL一直显示正在启动
查看>>
MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
查看>>
MySQL万字总结!超详细!
查看>>
Mysql下载以及安装(新手入门,超详细)
查看>>
MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
查看>>
MySQL不同字符集及排序规则详解:业务场景下的最佳选
查看>>
Mysql不同官方版本对比
查看>>
MySQL与Informix数据库中的同义表创建:深入解析与比较
查看>>
mysql与mem_细说 MySQL 之 MEM_ROOT
查看>>
MySQL与Oracle的数据迁移注意事项,另附转换工具链接
查看>>
mysql丢失更新问题
查看>>
MySQL两千万数据优化&迁移
查看>>