最大连续子序列 (HDU - 1231,MCS)

最大公共子序列求和问题(MCSS) 最近开始复习数据结构,准备把《数据结构与算法分析:C语言描述》这本书重刷一遍,顺便做点笔记。GitHub地址:https://github.com/Chaomin702/Algorithm.git问题描述最大公共子序列求和(Maximum Contiguous Subsequence Sum): 给定整数A1,A2,...,ANA_{1},A_{2},...,A_{N}(可能有负数),求∑jk=i 阅读详情

一.题目链接:

HDU-1231

二.题目大意:

求连续子序列的最大和,并输出其首位元素.

三.分析:

MCS 模板题

MCS 学习:转载

四.代码实现:

#include <set>
#include <map>
#include <ctime>
#include <queue>
#include <cmath>
#include <stack>
#include <vector>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define eps 1e-6
#define PI acos(-1.0)
#define ll long long int
using namespace std;

const int M = 10010;
int a[M];
int dp[M];

int main()
{
    int n;
    while(scanf("%d", &n) && n)
    {
        bool flag = 1;
        for(int i = 0; i < n; ++i)
        {
            scanf("%d", &a[i]);
            if(a[i] >= 0)
                flag = 0;
        }
        if(flag)
        {
            printf("0 %d %d\n", a[0], a[n - 1]);
            continue;
        }
        int ans = -1;
        int s = 0;
        int e = 0;
        for(int i = 0; i < n; ++i)
        {
            dp[i] = max(dp[i - 1] + a[i], a[i]);
            if(dp[i] > ans)
            {
                ans = dp[i];
                e = i;
            }
        }
        int sum = 0;
        for(int i = e; i >= 0; --i)
        {
            sum += a[i];
            if(sum == ans)
                s = i;
        }
        printf("%d %d %d\n", ans, a[s], a[e]);
    }
    return 0;
}

 

《算法导论》第4章 分治策略(递归,最大子数组问题,矩阵的Strassen乘法) (最近在自己学习《算法导论》一本书,之前本来喜欢手写笔记,但是随即发现自己总是把笔记弄丢,所以打算做一个电子版的笔记) (另外书中用的都是伪代码,笔记中如果需要尝试的地方都是python代码) 分治策略:递归地求解问题,往往可以分为三个步骤: 分解(Divide)将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小。 解决(Conquer)递归地求解出子问题,如果子问题的规模足够小就直接求解 合并(Combie)将子问题的解组合成原问题的解。 ... 阅读详情

相关推荐

RDKit | 基于最大公共子结构(MCS)的分子比对

导入库 from rdkit import Chem, rdBase from rdkit.Chem import AllChem from rdkit.Chem.Draw import IPythonConsole from rdkit.Chem import Draw from rdkit.Chem import rdDepictor from rdkit.Chem import rdFMCS from rdkit.Chem import TemplateAlign IPythonConsole.i

DrugOne 2241

hdu 1231 最大连续子序列

Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...,  Nj },其中 1   例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和  为20。  在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需

M阳光的专栏 688

告别倍福开发板:手把手教你用SSC工具为STM32生成EtherCAT从站代码

本文详细介绍了如何使用SSC工具为STM32生成EtherCAT从站代码,帮助开发者在不依赖倍福开发板的情况下实现高效的工业以太网通信。通过SSC工具的配置、XML文件设计、代码移植与硬件适配等步骤,开发者可以轻松构建自定义的EtherCAT通信系统,提升工业自动化项目的灵活性和效率。

weixin_33925615的博客 410

LeetCode1534. 统计好三元组

一. 题目 题目 示例 二. 方法一: 暴力法 解题思路 解题代码 def countGoodTriplets(self, arr: List[int], a: int, b: int, c: int) -> int: size = len(arr) count = 0 for i in range(0, size - 2): for j in range(i + 1, size - 1): for k in ra

bingque6535的博客 358

带挂牵引车前向运动模型推导及仿真实现

牵引车-半挂车的车辆结构与普通的车辆相比增加了一个半挂车,它们之间通过鞍座相连接,为了分析半挂牵引车运动过程中的位姿和状态,本文将基于车辆的机械结构建立对应的运动学模型,该模型基于以下假设: 车辆行驶过程中,道路平坦且无凸凹; 车辆低速行驶,且运行过程中车身无侧倾和俯仰运动; 车辆行驶过程中,轮胎无形变,无侧向滑动,且无侧向力; 牵引车和半挂车均满足阿克曼转向几何原理; 牵引车与半挂车不会发现折叠。

jianmo的博客 3182

基于Matlab与Gurobi的园区微电网风光储协同规划:从独立运营到联合优化的建模实战

本文详细介绍了如何利用Matlab与Gurobi进行园区微电网的风光储协同规划建模实战。通过构建从独立运营到联合优化的数学模型,结合Yalmip工具箱,旨在解决源荷不匹配问题,实现储能系统的最优配置与运行,从而降低总供电成本并提升新能源利用率。

weixin_29053073的博客 140

最大子序列和的详解

一.问题 例:求数列的最大子段和。 给定n个元素的整数列(可以能为负整数),a1,a2,…,an。求数列的字段,使其和最大。 例如:当(a1, a2, a3, a4, a5, a6)=(-2, 11, -4, 13, -5, -2)时,最大子段和为sum(11-4+13)=20。 二.解决方法 我这里采用两种方法:①遍历的方法 ②分治法 ①遍历法 原理分析:遍历该数组,每遍历一个i元素就判断temp+a[i]是否大于a[i],如果大于就更新temp=temp+a[i],否则temp=a[i],.

笼中鸟 3242

LaMAR数据集下载和使用流程

LaMAR数据集

qq_51745206的博客 971

算法导论(二)-------分治(D&C)思想之最大子数组问题

分治思想 在算法设计中分治思想在是一个十分重要的算法设计思想,我们可以在实际中多思考这种算法。这种算法主要时用函数的递归来进行实现的。主要的过程如下: 分: 将问题分为两个或者多个子问题 治 解决每一个子问题 合 最后自要将我们分开的子问题进行合并为我们需要解决的问题 比较官方的话就先写道这里了下面用实例来体会下这种思想 最大子(MCS)数组 定义:给我们一个数组 我们求出连续几个数和的最大值 ...

小远的博客 399

2026年3月GESP真题及题解(C++七级): 选择题和判断题(题解)

2026年3月GESP真题及题解(C++七级): 选择题和判断题(题解)

王老师青少年编程 987

使用Qt Creator自带的Qt Designer构造UI界面流程总结

在本文中,我们将总结使用Qt Creator自带的Qt Designer构造UI界面的流程。在对话框中,您可以选择一个控件的信号,然后将其连接到另一个控件的槽。例如,您可以将按钮的点击信号连接到一个槽函数,以响应按钮的点击事件。右键单击窗口设计器中的空白区域,选择适当的布局管理器,如水平布局、垂直布局或网格布局。在Qt Designer中,您可以使用各种预定义的UI控件来设计应用程序的界面。现在,您可以在应用程序的源代码中使用生成的UI界面。在您的源文件中,包含相应的头文件,然后创建一个UI界面的实例。

cl6789的博客 1392

求最大连续子段和 的 dp算法

问题描述: 有n个数(以下都视为整数,浮点的也一样),每个数有正有负,现在要在n个数中选取相邻的一段,使其和最大,输出最大的和。 问题分析: 对于这样的问题,我们可以直接用暴力,一个双重循环,虽说可以,但也没有更高明的方法? 我们再分析这个问题,如果我们知道了某个数前面一段数的和,我们就该考虑把这个数加入到前一段,还是重新开始一段。这个地...

391

最适合入门的100个深度学习项目

本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 12万+

Number Puzzle (ZOJ - 2836 ,容斥原理)

一.题目链接: ZOJ-2836 二.题目大意: 第一行给出 n, m 第二行有 n 个数 求在不大于 M 的非负整数中,有多少个数可以被这 n 个数中的任意一个整除. 三.分析: 容斥原理模板题存一下(偷笑.jpg) 四.代码实现: #include <set> #include <map> #include <ctime> #incl...

The___Flash的博客 861

Python 爬虫进阶:淘宝热卖商品价格走势抓取、反爬与分析全流程

在大数据时代,数据是商业决策的重要依据。电商平台上的商品价格走势,对于商家调整经营策略、消费者选择购买时机都有着关键的参考价值。本篇文章将深入解析如何利用 Python 爬虫抓取淘宝热卖商品的价格走势数据,并应对其中的反爬机制,最后对数据进行分析,带领大家领略 Python 爬虫在电商领域的强大应用。

yansideyucsdn的博客 1057

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

最大子矩阵(HDU - 1559,前缀和)

一.题目链接: HDU-1559 二.题目大意: 给出一个 m × n 的矩阵,和一个大小为 x × y 的子矩阵,求子矩阵的最大值为多少? 三.分析: 利用前缀和求出 顶点 到 每个点 矩阵的和,然后枚举子矩阵顶点的位置即可. 如图: 四.代码实现: #include <set> #include <map> #include <ctime&g...

The___Flash的博客 608

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Plants vs. Zombies (ZOJ - 4062,二分答案 + 细节)

一.题目链接: ZOJ-4062 二.题目大意: n 个植物排成一排. 水壶只能移动 m 步. 水壶一步移动一个单位长度,所到达的位置,该植物的防御值会相应增加. 求浇水之后,所有植物防御值中最小值最大可以为多少. 三.分析: 二分答案即可. 不过要加限制条件,在 check(mid) 函数中 cnt 可能会暴 long long. 这是因为,假设n == 1e5,mid =...

The___Flash的博客 606

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

例题 3-4 猜数字游戏的提示(Master-Mind Hints,UVA 340)

一. 题目链接 : Master-Mind Hints UVA-340 二. 题目大意 : 多组数据,每组数据中有一个标准数字序列,之后多组数字序列,输出 A 和 B. A : 在每组数字序列中,与标准数字序列中数字且位置相同的数字个数. B :在每组数字序列中,有多少个数字在两组数字序列里都出现过,但位置不同. 三.分析 : A : A很好求,直接同时遍历 标准数字序列 和 ...

The___Flash的博客 493

Eight II (HDU - 3567,BFS 打表 + 思维)

一.题目链接: HDU-3567 二.题目大意: Eight的升级版,游戏规则相同. 每次给出两个字符串 A, B,问 从 A 到 B 的最少步数 并 打印最小字典序的路径. 三.分析: 看了大神的分析才懂。。。 在这里阐述一下. 只考虑 X 的位置,由于 1 ~ 8 数字无特殊性 所以可将所给的 A 重新编号. 例如 A1:8 7X 6 5 4 3 2 1 编号为 A...

The___Flash的博客 485

Kth Minimum Clique(2019牛客暑期多校训练营(第二场)D,K 大完全子图)

一.题目链接: Kth Minimum Clique 二.题目大意: 有 n 个点,有着各自的点权. 给出连通的边. 求权值 k 大的完全子图. 三.分析: 由于 n ≤ 1e3,所以直接暴搜即可. 这里和状压 DP 有点像,搜索的是状态以及对应的权值. 考虑状态的转移,比如在什么情况下,i 点可以加入. 因为是求完全子图,所以现状态应真包含于 i 点的连接点,否则就不是完全图...

The___Flash的博客 465

Books (ZOJ - 4067,思维 + 理解题意)

一.题目链接: ZOJ-4067 二.题目大意: DreamGrid 去买书,有 n 本书排成一行,价格记为 a[0],a[1] .... a[n - 1]. 若DreamGrid 所带的钱不少于 第 i 本书的价格,则买这本书. 最后DreamGrid 共买了 m 本书. if 不可能买了 m 本书,则输出Imp...

The___Flash的博客 462

Matrix (POJ - 3685,二分答案 + 二分)

一.题目链接: POJ-3685 二.题目大意: 给 n 和 m. 表示有一个 n × n 的矩阵,求第 m 小的元素的值. 矩阵元素的计算公式: 三.分析: 易得矩阵的元素在同一列上单增. 第一层二分答案. 因为是求第 m 小的数,所以必有 m 个数 ≤答案(数有重复). check(mid) 函数里先枚举列,对于每一列再二分有多少个数 ≤ mid即可. ps: 控制边界...

The___Flash的博客 450

Fairy tale(BFS + 大模拟)

一.题目链接: Fairy tale 二.题目大意: 给你一个N × N 的地图,图上的每个点有四种方向(E W S N),代表着移动方向. 在 t = 0 时,saya 在 (1, 1),treasure 在 (n, n). 在每个单位时间内,分为 3 步. ①saya 先按照地图移动一个单位. ② saya 可以向四个方向移动一个单位,saya 会移动到距离 treasure ...

The___Flash的博客 445

Fliptile (POJ - 3279, 思维 + 二进制枚举)

一.题目链接: POJ-3279 二.题目大意: 给你一个图,只有 0 和 1. 0 表示白色,1 表示黑色. 每敲击一块砖,这块砖以及它周围四个方向的砖都会转变颜色. 问是否能够将砖块都变为白色 如果可以,输出在最小步数情况下,操作的最小字典序. 否则,输出 "IMPOSSIBLE" 三.分析: 二进制枚举对第一行的操作. 再又第 1 行的状态,确定第 2 行的操作 比如 ...

The___Flash的博客 439

习题 3-5 谜题(Puzzle, ACM/ICPC World Finals 1993, UVA227)

一. 题目链接: Puzzle UVA-227 二.题目大意: 有一个 5 × 5 的字母矩阵,其中有一个是空格。 共有 4 中指令,分别为 A, B, L, R. A:将空格上的相邻字母移到空格中. B:将空格下的相邻字母移到空格中. L:将空格左的相邻字母移到空格中. R:将空格右的相邻字母移到空格中. 输入指令后 若有非法指令输出“This puzzle has no fi...

The___Flash的博客 430

Pearls in a Row( CodeForces - 620C,贪心)

一.题目链接: CodeForces-620C 二.题目大意: 给出一个数字序列,若有数字重复出现则称这一段序列为 “好”,求这个序列中最多有多少个 “好” 序列. 三.分析: 把序列中的元素放入 set 里,并进行查找,若找到,则 ans++,set 清空,记录首尾位置. 详见代码. 四.代码实现: #include <set> #include <map&g...

The___Flash的博客 422
上一篇: A/B(HDU - 1576,费马小定理 + 乘法逆元)
下一篇: Replace To Make Regular Bracket Sequence (CodeForces - 612C ,栈实现括号配对)
The___Flash
博客等级 码龄8年 79粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值