首页 > 其他分享 >减操作

减操作

时间:2024-01-18 22:33:26浏览次数:20  
标签:这个 一个 元素 减号 操作 去掉 我们

最开始很容易想到设\(f[i][j][k]\)表示区间\([i,j]\)合并出\(k\)是否可以,显然复杂度爆炸

这样做的问题是什么?

冗余状态太多了!题目只关心给的那一个\(t\),我们只用想如何达到这个\(t\)即可

既然这样,我们考虑最终这个数是怎么来的,手动模拟一下

设有五个数A B C D E

最开始合并CD,有A B C-D E

然后再让B减去后面这一个数,有A B-C+D E

然后我们就可以发现,在某一个时刻,如果有一个元素的值等于$$\sum_{k=i}^{j}±a_k$$,此时我们让这个元素的前面一个元素减去这个元素,那么这个元素里面所有的正负号全部取反

于是我们就可以知道,最终这个数很可能长成这个样子:$$a_1-a_2+\sum_{k=3}^{n}±a_k$$

为什么\(a_1\)前面一定是加号,\(a_2\)前面一定是减号,由上面的分析是很显然的

于是我们做一个01背包就可以判断是否能够合并出给定数字了

题目要求输出方案,我们假设现在已经拿到了一个方案,我们看看能不能一定找到一个步骤,使得这些步骤是合法的

对于任意一个方案,从左往右最开始一定是由若干个减号组成的,我们找到这一段的最后一个减号(即这个方案的第一个加号的前面一个减号),然后我们去掉这个减号表示最后一步操作是这个减号,然后这个减号后面的所有符号全部取反,再把这个减号前面的所有减号从左到右依次去掉,注意此时去掉的时候就是先去掉的先操作了,操作完后剩下的符号一定是由一段连续的减号开头的,就又回到上面的情况了

写成数学归纳法就是:

标签:这个,一个,元素,减号,操作,去掉,我们
From: https://www.cnblogs.com/dingxingdi/p/17973555

相关文章

  • 一些多项式常用操作的公式推导
    怕我以后忘记了看不懂自己的板子(((牛顿迭代用于求解函数零点的近似值。设函数\(f(x)\)的零点近似值为\(x_0\),过点\((x_0,f(x_0))\)作\(f(x)\)的切线,切线与\(x\)轴交点的横坐标即为新的近似值。切线解析式为\(y=f'(x_0)(x-x_0)+f(x_0)\),当\(y=0\)时\(x=x_0-\dfrac{f......
  • 29_二叉搜索树中的插入操作
    701.二叉搜索树中的插入操作给定二叉搜索树(BST)的根节点root和要插入树中的值value,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。......
  • 嵌入式操作系统的一些基本概念
    1、前后台系统一些对实时性要求不那么严格的基于芯片的开发会采用前后台系统架构来进行开发,前后台系统前台由中断构成,后台由一个顺序处理任务的无限循环构成。//中断服务程序voidkeyHandle();voiduartHandle();//主函数intmain(intargc,char**argv){BSP......
  • (十一):ES的编程操作
    1、ESAPI的两种方式Elasticsearch的API分为RESTClientAPI(http请求形式)以及transportClientAPI两种。相比来说transportClientAPI效率更高,transportClient是通过Elasticsearch内部RPC的形式进行请求的,连接可以是一个长连接,相当于是把客户端的请求当成Elasticsearch集......
  • (七):ElasticSearch客户端操作
    ElasticSearch服务的客户端,有以下三种方式:·elasticsearch-head插件·elasticsearch提供的Restful接口直接访问·elasticsearch提供的API进行访问1、elasticsearch-head插件启动插件后,访问http://localhost:9100/地址,详情如下:1.1、概览信息概览信息......
  • WidgetsBinding.instance.addPostFrameCallback widget首次渲染完成执行其他操作
    使用场景Flutter中的界面组件(控件)只要一帧就能绘制渲染在屏幕上,当然,这一帧Flutter做了很多事,包括Build、Layout和Painting阶段。而 addPostFrameCallback 就是在每一帧绘制完成后再回调执行一些自己的方法。这个机制的使用场景非常多。比如组件渲染完后做一些操作,像开......
  • SpringBoot中操作Bean的生命周期的方法
    SpringBoot中操作Bean的生命周期的方法路人路人甲Java2024-01-1719:17发表于上海引言在SpringBoot应用中,管理和操作Bean的生命周期是一项关键的任务。这不仅涉及到如何创建和销毁Bean,还包括如何在应用的生命周期中对Bean进行精细控制。Spring框架提供了多种机制来......
  • 差示扫描量热仪器操作步骤
    差示扫描量热仪器(DSC)是热分析中常用的仪器之一,广泛应用于材料科学、药物研究、高分子材料、地质学和石油化工等领域。DSC能够测量物质在加热或冷却过程中的热量变化,从而揭示物质的热性质和化学性质。本文将介绍差示扫描量热仪器的操作步骤。上海和晟HS-DSC-101差示扫描量热仪操作......
  • 【Git】:git 常用操作速查
    前言工作之后无法避免和git打交道,所以专门记录一些常用的git操作。1.克隆指定分支gitclone-b<branchname><remote-repo-url>2.删除指定分支gitbranch-d<localBranchName>#删除本地分支gitpushorigin--delete<remoteBranchName>#删除远程分支3.......
  • C++内存分配揭秘:new操作符::operator new和Placement new的区别
     在C++中,new 操作符、::operatornew 和placementnew是用于动态内存分配的工具,但它们有不同的用法和行为。以下是它们的区别和用法的详细实例:1.new操作符new 操作符用于在堆上动态分配内存,并调用对象的构造函数初始化对象。#include<iostream>classMyClass{p......