51nod 1285 山峰和分段 -查找
来源:互联网 发布:c语言能够做什么 编辑:程序博客网 时间:2024/05/22 13:59
题目链接:1285
简单分析
满足A[P - 1] < A[P] > A[P + 1]的为山峰,则每段跨度至少为3,将满足情况的A[p]定义为山头,求出全部的P以及数量m。
则至多有n/m段,且每段长度能整除n。
枚举全部长度L从小到大逐个验证,查询i*L+1~(i+1)*L中是否存在山头,这里直接使用lower_bound查找大于i*L+1和(i+1)*L的第一个位置,验证是否相等,相等的话则这一段不满足,退出。
所有段都符合,则输出答案。
代码:
#include<bits/stdc++.h>using namespace std;long long all[50500];vector<int> node;vector<int> d;int main(){ int n; cin>>n; for(int i=1;i<=n;i++)cin>>all[i]; for(int i=2;i<n;i++)if(all[i]>all[i-1]&&all[i]>all[i+1])node.push_back(i); if(node.size()==0){cout<<0;return 0;} for(int i=n/node.size();i<=n;i++)if(n%i==0)d.push_back(i); for(int i=0;i<d.size();i++){ bool flag=1; for(int j=0;j<n/d[i];j++){ if(lower_bound(node.begin(),node.end(),j*d[i]+1)==lower_bound(node.begin(),node.end(),(j+1)*d[i])){ flag=0;break; } } if(flag){ cout<<n/d[i]; return 0; } }}
阅读全文
0 0
- 51nod 1285 山峰和分段 -查找
- 51nod 1285 山峰和分段
- 51NOD 1285 山峰和分段
- 51nod 1285 山峰和分段
- 51Nod 1285 山峰和分段
- 51nod 1285 山峰和分段
- 51nod 1285 山峰和分段
- 51nod 1285 山峰和分段
- 51Nod-1285-山峰和分段
- 【Hello 2017】 51nod 1285 山峰和分段【暴力】
- 1285 山峰和分段
- 51nod-1281 山峰和旗子
- 51nod 1281 山峰和旗子
- 51Nod 1281 山峰和旗子
- 51Nod-1281-山峰和旗子
- 51nod 1281 山峰和旗子【二分+dp】好题~
- 51nod oj 1281 山峰和旗子【打表+枚举判断】
- 51NOD1281 山峰和旗子 【二分】
- Unity3D 屏幕比例与摄像机设置
- Linux下find、awk、sed、grep命令的例子
- PullToRefreshListView布局属性及java代码应用
- PullToRefresh界面刷新
- 记一次网易前端实习面试
- 51nod 1285 山峰和分段 -查找
- WC2006水管局长(加强)
- AngularJs 表单
- css3特性和动画
- 基于Unity3D的循环路径的实现
- 17-12-17日
- TensorFlow技术解析与实战 10 人脸识别
- 树莓派 3B入门——系统的安装
- 正则表达式