当前位置: 首页 > news >繁体>51nod 1285山峰和分段

51nod 1285山峰和分段

1285 山峰和分段 
题目来源: Codility
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
 收藏
 关注
用一个长度为N的整数数组A,描述山峰和山谷的高度。山峰需要满足如下条件, 0 < P < N - 1 且 A[P - 1] < A[P] > A[P + 1]。
以上图为例,高度为:1 5 3 4 3 4 1 2 3 4 6 2。
现在要将整个山分为K段,要求每段的点数都一样,且每段中都至少存在一个山峰,问最多可以分为多少段。
Input
第1行:一个数N,表示数组的长度(1 <= N <= 50000)。
第2 - N + 1行:每行1个数Ai(1 <= Ai <= 10^9)。
Output
输出最多可以将山分为多少段。
Input示例
12
1
5
3
4
3
4
1
2
3
4
6
2
Output示例
3

先求n的因子,由于不是很多,可以全算下,看哪个大就输出哪个。
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 5e4+10;
 4 int a[N], n, b[N];
 5 vector<int> vs;
 6 bool ok(int x) {
 7     if(b[n] < x) return false;
 8     int len = n/x;
 9     for(int i = 0; i < x; i ++) {
10         if(b[(i+1)*len]-b[i*len+1] == 0) return false;
11     }
12     return true;
13 }
14 int main() {
15     cin >> n;
16     for(int i = 1; i <= n; i ++) cin >> a[i];
17     for(int i = 2; i < n; i ++) {
18         b[i+1] = (a[i]>a[i-1]&&a[i]>a[i+1]) + b[i];
19     }
20     if(!b[n])return 0*printf("0\n");
21     // for(int i = 1; i<= n; i ++) printf("%d ",b[i] );printf("\n" );
22     for(int i = 2; i <= sqrt(n); i ++) {
23         if(n%i==0) {
24             vs.push_back(i);
25             vs.push_back(n/i);
26         }
27     }
28     sort(vs.begin(),vs.end());
29     for(int i = vs.size()-1; i >= 0; i --) {
30         if(ok(vs[i])) return 0*printf("%d\n",vs[i]);
31     }
32     printf("1\n");
33     return 0;
34 }

 

转载于:https://www.cnblogs.com/xingkongyihao/p/8976881.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-18002.html

如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网进行投诉反馈,一经查实,立即删除!


相关文章:

  • expected at least 1 bean which qualifies as autowire candidate for this depe (spring无法注入)...
  • 20172330 2017-2018-1 《Java程序设计》第八周学习总结
  • node socketlog
  • JavaWeb学习笔记7--JSP脚本元素、指令元素、动作元素
  • BZOJ2395 [Balkan 2011]Timeismoney 【最小乘积生成树】
  • 测试小白的实习
  • js:防抖动与节流【转载】
  • Groovy闭包
  • pandas如何去掉时间列的小时只保留日期
  • 上周热点回顾(4.30-5.6)
  • spring-session实现分布式集群session的共享(转)
  • Ubuntu16.04LTS +Qt+boost1.66编译错误:consuming_buffers.hpp: parse error in template argument list...
  • Spring 下 MyBatis 的基本使用
  • 处事笔记
  • SSM框架搭建问题
  • 一次http请求中的信息
  • 浅谈css常用伪类用法
  • SSM集成activiti6.0错误集锦(二)
  • SaltStack 拉取和推送文件
  • B VUE系列 三:vuex,vue全局变量管理和状态更新的利器
  • 一个简单的进程池版的爬虫程序
  • SSL-ZYC 2416 条形图
  • 0513-2
  • php中的转义字符(用反斜杠\来输出,和C语言一样)
  • mysql存表情出错的解决方案(类似\xF0\x9F\x98\x86\xF0\x9F)
  • 拒绝卡顿——在WPF中使用多线程更新UI
  • 【洛谷】【线段树】P1047 校门外的树
  • Jupyter 同时支持python2、python3 kernel
  • 多变量微积分笔记19——直角坐标系和柱坐标系下的三重积分
  • js:变量,作用域以及内存问题
  • [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis
  • Centos-显示文件类型-file
  • JavaBean的实用工具Lombok(省去get、set等方法)
  • Java生鲜电商平台-提现模块的设计与架构
  • 洛谷 3951 小凯的疑惑
  • linux下运行jar
  • VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——AlbumView相册控件的使用方式...
  • valgrind- 内存泄漏-how to install and use
  • C++新闻检索类
  • @property、@staticmethod、@classmethod装饰器
  • SQL Server 2016新特性: 对JSON的支持
  • Python Day 19 面向对象(初识面向对象)
  • Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇
  • 初识面向对象(钻石继承,super,多态,封装,method,property,classmethod,staticmethod)...
  • LeetCode算法扫题系列19
  • MPLS-TP OAM各个层次
  • c++ auto 属性
  • python使用sax实现xml解析
  • 新手建站图文教程
  • BZOJ4653 [NOI2016] 区间 【线段树】