博客
关于我
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的CRUD(增、删、改、查)操作
查看>>
MySQL的DATE_FORMAT()函数将Date转为字符串
查看>>
mysql的decimal与Java的BigDecimal用法
查看>>
MySql的Delete、Truncate、Drop分析
查看>>
MySQL的Geometry数据处理之WKB方案
查看>>
MySQL的Geometry数据处理之WKT方案
查看>>
mysql的grant用法
查看>>
Mysql的InnoDB引擎的表锁与行锁
查看>>
mysql的InnoDB引擎索引为什么使用B+Tree
查看>>
MySQL的InnoDB默认隔离级别为 Repeatable read(可重复读)为啥能解决幻读问题?
查看>>
MySQL的insert-on-duplicate语句详解
查看>>
mysql的logrotate脚本
查看>>
MySQL的my.cnf文件(解决5.7.18下没有my-default.cnf)
查看>>
MySQL的on duplicate key update 的使用
查看>>
MySQL的Replace用法详解
查看>>
mysql的root用户无法建库的问题
查看>>
mysql的sql_mode参数
查看>>
MySQL的sql_mode模式说明及设置
查看>>
mysql的sql执行计划详解
查看>>
mysql的sql语句基本练习
查看>>