最大的划分

整数划分问题之最大乘积 题目链接: https://www.nowcoder.com/acm/contest/110/A 分析: (1)对于任意大于等于4的正整数m, 存在一个划分m = m1+m2, 使 m1*m2 >= m证: 令m1 = int(m/2), 则 m1 >= 2 , m2 = m-m1; 那么m2 > 2,并且 m2 >= m/2 >= m1;    m1*m2... 阅读详情

题目详情:

有一排高度依次为H1,H2,H3,....,Hn的树木,一共n棵树,如果某棵树(不含两端的树)比相邻的两棵树都要高,则这样的树就称为景点树,现在管理员要将这n棵树划分成连续等长的部分进行管理,并且每部分之中至少含有一棵景点树。管理员希望划分的部分个数最大,你能帮助他吗?

输入描述:

有多组测数数据,每组数据有两行,第一行包含一个正整数n(0<n<100000),第二行包含n个正整数,分别表示H1,H2,H3,....,Hn,(0<Hi<2^30)。

输入以文件结束。

输出描述:

对于每组数据,输出相应的答案。



答题说明:

输入样例:

12

1 2 3 4 3 4 1 2 3 4 6 2

3

1 2 1

3

1 1 1

输出样例:

3

1

0


又一次犯了冒进的错误,打了一半的代码发现自己没有完全理解题目,于是又瞎了。。。

到了下午更是在自己正在看的一本书中发现这是一道类型题,更是泪流满面。活用二分法,记住了!

#include<iostream>
#include<fstream>
using namespace std;

const int N = 100100;

int hs[N];
int n;

bool test(int x){
    bool sign = false;
    int len = n / x;
    for(int i = 1; i < n - 1; i++){
        if(i % len == 0){
            if(sign == false){
                return false;
            } else {
                sign = false;
            }
        }
        if(hs[i] > hs[i - 1] && hs[i] > hs[i + 1]){
            sign = true;
        }
    }
    return sign;
}

int main(void){
    int tc = 0;
    while(!cin.eof()){
        cin >> n;
        char c;
        for(int i = 0; i < n; i++){
            cin >> hs[i];
        }
        int l = 0, r = n;
        while(l < r - 1){
            int mid = (l + r) / 2;
            int backup = mid;
            while(mid < r && n % mid > 0){
                mid++;
            }
            if(mid == r){
                r = backup;
            } else if(test(mid)){
                l = mid;
            } else {
                r = mid;
            }
        }
        cout << l << endl;
    }
    return 0;
}

【日常学习】【划分DP】codevs1017 乘积最大题解 题目来源 2000NOIP 题目描述 Description 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:   设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+ 阅读详情

相关推荐

11、最大零和划分问题的深入剖析

本文深入剖析了最大零和划分问题(MZSP)的算法复杂度特性,涵盖了问题的不可近似性证明以及多个参数的复杂度分析。通过归约方法,文章探讨了参数k、m、n*和B对问题复杂性的影响,并得出了一系列重要结论,如一元MZSP关于参数k和m的W[1]-困难性、以n*为参数的XP类复杂度、以及以B为参数的FPT性质。此外,文章还展望了未来的研究方向,包括证明n*的W[1]-困难性猜想、设计更高效的算法以及拓展应用领域。

r7s8t的博客 89

离散数学第三章 集合与关系(8~12)

第三章(8~12) 3-8关系的闭包运算 定义:设R是X上的二元关系,如果有另一个关系R’满足: ​ 1.R‘是自反的(对称的,可传递的) ​ 2.R’⊇R ​ 3.对于任何自反的(对称的,可传递的)关系R‘’,如果有R‘’⊇R,就有R‘’⊇R‘。 ​ 则称关系R’为R的自反(对称,传递)闭包。记作r(R ),(s(R

m0_56150664的博客 1万+

霍尔安装歪了也能用?揭秘无感FOC中的‘霍尔自学习’黑科技,实现信号线自适应

本文揭秘了无感FOC中的‘霍尔自学习’黑科技,即使霍尔安装歪了或信号线接错,电机仍能平稳运转。该技术通过算法创新解决了传统霍尔方案的安装公差、接线容错和校准成本问题,显著提升了电机控制的可靠性和效率。文章详细解析了自学习算法的实现架构、关键技术及工程实践中的优化方案,展示了其在工业应用中的卓越性能。

weixin_28309571的博客 464

离散数学考前攻略

第三章 集合与关系 集合的概念:把具有相同性质的不同对象的全体称为集合。 集合的特性:互异性,无序性 集合间的关系:包含,相等, 全集,空集 幂集:有一个集合所有子集构成的集合 真子集个数为2^n-1个 第二题有2个元,即有2^2个子集 集合的运算 交,并,补,对称差 补集A-B,就是把A中属于B的部分挖去。 对称差,就是把A和B的交集挖去剩下的集合 tips 序偶 概念:具有固定次序的客体ab组成的有序序列, 次序不同序偶也是不同的 笛卡尔积,两个集合中的元素分别作为序偶的第

qq_45845771的博客 5013

NFS服务器配置与autofs自动挂载

NFS服务器配置autofs自动挂载 环境: hostname ip OS server 192.168.220.138 centos7 client 192.168.220.139 centos7 一、NFS概述 NFS(Network File System)网络文件系统。最大功能就是通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 二、端口 [root@se...

DoloresOOO的博客 1027

腾讯会议+OBS虚拟摄像头:解决多人屏幕共享的终极指南(附常见问题排查)

本文详细介绍了如何利用OBS虚拟摄像头技术,解决腾讯会议中多人屏幕共享的痛点。通过将OBS作为视频混流中心,可以突破腾讯会议单屏共享的限制,实现多屏幕、多窗口内容的同步展示,并提升演示的专业度。文章涵盖了Windows与Linux双平台的配置步骤、高阶场景搭建以及常见问题(如黑屏、画中画)的排查方法,是团队协作与专业演示的实用指南。

i8j9k0l1的博客 931

树状结构学习(1)、最大-最小划分树

树状结构学习(1)、最大-最小划分树有这样一类题: 给一棵n个点的树,要求将它分成k个子树,使权值和最小的子树权值和尽量大。 解法一:二分答案 我们知道,如果已知权值下限,我们可以从下往上搜以O(n)的复杂度判断是否可以分成k个权值大于权值下限的子树。 缺点:没有真正解出这道题,如果权值是实数或很大将会使这种方法失效。#include <iostream> #include <cmath>

weixin_40433319的博客 1067

Ubuntu20.04下Docker无缝升级实战指南

本文提供了一份在Ubuntu20.04系统上安全、无缝升级Docker的实战指南。文章详细阐述了升级前的版本检查、数据备份等准备工作,逐步演示了通过APT包管理器进行升级或指定版本安装的操作步骤,并强调了升级后的验证与常见问题回滚方案,确保业务容器平稳过渡。

postgres8guard的博客 481

序列划分(二分法)——最大值最小化

一个序列的子序列,他的最大值可能的区间为——最小情况:序列的单个元素的最大值(即只把一个元素划分为一个子序列),最大情况:序列的所有元素的总和(即把所有元素划分为一个子序列)。返回的cut值为2,表明只分成了两个子序列,比三个子序列小,说明最大值选择过大,将右区间缩小为11,再次寻找新区间的中间的值。我们还是以序列{2,2,3,4,5,1}为例,当传入的最大值为11时,故区间就为 : [max,sum];二分查找的目的,就是为了更快的查找到。(这里很绕,多去理解一下)。

m0_74375748的博客 2600

ArtMate —— 美术公开课智能体开发全记录

本文档详细描述了一款专为中小学美术公开课设计的智能教学助手的开发过程。该智能体融合了多模态感知、自然语言交互、风格迁移与智能评价等技术,旨在辅助教师开展生动、高效的美术鉴赏与创作课程。全文包含需求分析、系统架构设计、核心模块代码实现、交互界面搭建及完整运行示例,并配有详尽的行内注释和设计思想阐述,为教育技术开发者提供一份可落地、可扩展的参考方案。

huanghm88的专栏 153

基于JeecgBoot 3.9.0 开源项目的企业管理平台

基于JeecgBoot 3.9.0 开源项目的企业管理平台

宁波阿成的博客 375

【洛谷P1925】最大划分乘积

题目链接:洛谷P1925 解法:数学 先考虑何时PPP最大。 对于NNN,设划分为xxx个数,令P=f(x)=(Nx)xP=f(x)=(\frac{N}{x})^xP=f(x)=(xN​)x 两边取对数得ln⁡f(x)=ln⁡(Nx)x=xln⁡(Nx)\ln f(x)=\ln (\frac{N}{x})^x=x\ln (\frac{N}{x})lnf(x)=ln(xN​)x=xln(xN​) 两...

ezoixx174的博客 261

RK3568笔记十七:LVGL v8.2移植

若该文为原创文章,转载请注明原文出处。本文介绍嵌入式图形库移植到Linux开发板ATK-RK3568上的步骤。

4232

序列划分-使其最大值最小化

序列划分-使其最大值最小化

我的英文站点:https://iorilan.medium.com/ 2659

【二】MADDPG多智能体算法实现(parl)【追逐游戏复现】

论文全称:Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments 论文原文:https://download.youkuaiyun.com/download/sinat_39620217/16203960 论文翻译:https://blog.youkuaiyun.com/qiusuoxiaozi/article/details/79066612 ...

丨汀、的博客 2万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

最大生成树算法matlab,基于最大生成树的社团划分算法

王林,王海新(西安理工大学 自动化与信息工程学院,陕西 西安 710048)摘要:针对层次聚类算法存在复杂度高、准确度低等问题,提出了一种基于最大生成树的社团划分算法。该算法重新定义了节点间相似度,并利用最大生成树进行初始聚类,然后根据社团相似度合并局部社团得到最终划分结果。算法不仅降低了时间复杂度,而且在划分社团的准确度方面有所提高。将该方法在真实网络与人工网络上进行验证和比对,实验结果表明基于...

weixin_33584986的博客 1184

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

求划分因子乘积最大的一个划分及此乘积

求划分因子乘积最大的一个划分及此乘积   问题简述:给定一个正整数n, 则在n所有的划分中, 求因子乘积最大的一个划分及此乘积。例如:8 = {8}, {7, 1}, {6, 2}, {5, 3}, {4, 4}, {3, 3, 2}, {2, 2, 2, 2} 等,那么在这些当中,3 * 3 * 2 的乘积最大,所以输出整个划分 和这个乘积 18。   算法分析:这是我在某个论坛上看到的问题,...

weixin_34277853的博客 263

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【LeetCode2294】划分数组使最大差为 K(C++)

排序后我们对数组进行从前向后遍历,用move_head表示当前划分数组的最小值,因为原数组已经有序,所以如果当前位置减move_head大于了要求的最大差K,说明当前位置以及之后位置的数字已经不能和move_head放在同一个数组里,我们在当前位置之前进行划分。此时当前位置变为新的数组头部,并继续遍历,寻找下一个划分位置。题目大意为给定一个数组,要求将其划分为多个数组,使得划分后每个数组最大和最小数的差不超过K,求最少需要划分多少组。

wsidom_jie的博客 222

划分DP 将一个n位数划分为m部分使得各部分乘积最大

#include <bits/stdc++.h> const int INF = 0x3f3f3f3f; using namespace std; int n,m; long long a[210][210]; //a[i][j] 表示从i到j位的这个数 long long dp[210][210]; //dp[i][j] 表示从前i位...

weixin_30263073的博客 450

将数组进行划分,并求两个数组最大值之间的差值

将数组进行划分,并求两个数组最大值之间的差值 思路: 因为要将数组进行划分为两个,并计算两个数组之间最大值的差值。 很容易想到用预处理数组,分别计算从左到右所记录的当前最大值和从右到左所记录的当前最大值 然后再进行遍历,计算两者差值的最大值 代码: #include<iostream> #include<cstdio> #include<cst...

Willen_的博客 1197

求正整数n划分因子乘积最大的一个划分及此乘积

问题描述:    给定一个正整数n, 则在n所有的划分中, 求因子乘积最大的一个划分及此乘积。    例如:8 = {8}, {7, 1}, {6, 2}, {5, 3}, {4, 4}, {3, 3, 2}, {2, 2, 2, 2} 等,那么在这些当中,3 * 3 * 2 的乘积最大,所以输出整个划分{3,3,2}和这个乘积18. 算法分析:  一个结论:对于一

taoqick的专栏 2614

2294. 划分数组使最大差为 K

2294. 划分数组使最大差为 K

weixin_45256307的博客 201

LeetCode 2294. 划分数组使最大差为 K

给你一个整数数组 nums 和一个整数 k 。你可以将 nums 划分成一个或多个 子序列 ,使 nums 中的每个元素都 恰好 出现在一个子序列中。在满足每个子序列中最大值和最小值之间的差值 的前提下,返回需要划分的 最少 子序列数目。子序列 本质是一个序列,可以通过删除另一个序列中的某些元素(或者不删除)但不改变剩下元素的顺序得到。 2. 解题 题目说是子序列,那可以随意组合元素 排序后,把最大最小的数 满足差距不超过k 的放在一起 168 ms 25 MB Python3我的优快云博客地址

Michael是个半路程序员 775
上一篇: 最大角度
下一篇: [Code Jam] Crazy Rows
type_q
博客等级 码龄14年 13粉丝 52原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值