首页 > 其他分享 >P2135 方块消除

P2135 方块消除

时间:2024-03-06 20:33:55浏览次数:21  
标签:suf return 方块 int 55 P2135 num 消除 dp

原题链接

题解

代码量小的离谱,思维难度大的离谱
对于两个原本不相邻的同色区域块,历经千辛万苦碰面的场景,我们可以描述成右边的区域块为左边的区域块消除的时候增添了长度
设 \(dp[i][j][suf]\) 代表消除区域 \([i,j]\) 同时该区域的 \(j\) 增添了长度 \(suf\)
但是合并消除不一定是最优的,因为可能破坏中间的可能长度更长的合并块
所以初始化是不合并的情况
然后寻找所有可能合并的区域块,完成上述操作
tai chou xiang le!!!
suf是向下传递的

code

#include<bits/stdc++.h>
using namespace std;
int dp[55][55][1005]={0},a[55]={0},num[55]={0};
int ss(int l,int r,int suf)
{
    if(l>r) return 0;
    if(dp[l][r][suf]) return dp[l][r][suf];
    if(l==r) return (dp[l][r][suf]=(num[r]+suf)*(num[r]+suf));
    dp[l][r][suf]=ss(l,r-1,0)+(num[r]+suf)*(num[r]+suf);
    for(int i=l;i<r;i++) if(a[i]==a[r]) dp[l][r][suf]=max(dp[l][r][suf],ss(l,i,suf+num[r])+ss(i+1,r-1,0));//中间的消除
    return dp[l][r][suf];
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>num[i];
    cout<<ss(1,n,0);
    return 0;
}

标签:suf,return,方块,int,55,P2135,num,消除,dp
From: https://www.cnblogs.com/pure4knowledge/p/18057484

相关文章

  • 消除js计算误差,消除使用减号“-”或加号“+”的计算误差
    做条形图统计计算时,往往js计算“-”后再无法相“+”等于100%或者说等于1,后来发现是js使用减号“-”或加号“+”计算有误差相关代码:this.standard=99.68this.nonstandard=100-this.standardconsole.info("this.nonstandard:",this.nonstandard)//进一法this.nonstandard......
  • 方块掉落
    方块掉落题目描述最近阿宁对一个名叫“方块掉落”的游戏感兴趣,沉迷于此。每局游戏一开始,有一条无限长的水平线、一个箭头、一个操作序列$t$,没有任何方块。操作序列$t$是一个字符串,仅包含"YBR"三种字符,分别代表颜色黄蓝红。依次按照操作序列$s$掉落不同颜色的方块。如果......
  • 2024牛客寒假算法基础集训营4 K.方块掉落
    线段树维护的信息有当前行有多少方块,一共有多少方块拿线段树维护一个矩阵就行,转移更新就是矩阵乘类似题有这个 牛客多校第二场-H-zhujio两题都基本上就是转移矩阵求出来正常建线段树,pushup就是直接矩阵乘 #include<bits/stdc++.h>usingnamespacestd;#defineen......
  • overflow:hidden如何消除浮动的
     当一个元素被浮动(float)时,它会脱离正常的文档流,可能导致其父容器无法正确地计算高度,从而影响布局。使用overflow:hidden;时,它会创建一个块级格式化上下文(BlockFormattingContext,BFC),这会导致父容器包裹浮动元素,而不再受到浮动元素的影响。具体步骤是这样的:当一个元素的......
  • Umov移动方块-scratch编程作品
    程序说明:《Umov移动方块》是一款基于Scratch平台制作的小游戏。在这个游戏中,玩家将面对一个3×3的圆圈棋盘,并通过鼠标控制蓝色方块在这些圆圈中灵活移动。游戏的挑战在于,舞台的四周边缘会不断生成白色小球,它们会向对向移动。玩家的目标是尽量让蓝色方块避免与这些移动的小球发生......
  • 如何消除原生Android网络状态上的惊叹号
    喜欢使用原生Android系统的朋友可能会发现自己的状态栏信号图标上经常有一个惊叹号标志。这是怎么回事呢?原因是Android为了对网络状态进行检测,采用了一种叫做captivedetection的方式进行网络状态检测。其实说起来很简单,每当连接到一个网络,比如移动数据网络或者WIFI的时候,Androi......
  • 【译】算法 vs 人工智能 vs 通用人工智能:为初学者消除误区
    原作:普利瑟姆在计算机科学和人工智能领域,理解从传统算法(Algorithms)到人工智能(AI:ArtificialIntelligence)再到通用人工智能(AGI:ArtificialGeneralIntelligence)的演变至关重要。在这篇综合指南中,我深入研究这些技术的复杂性,通过识别猫的任务来说明每个阶段的关键差异和进步。我......
  • Jenkins超全安装,自动化部署SSM项目,消除你的部署烦恼
    Jenkins超全安装,自动化部署SSM项目,消除你的部署烦恼:https://blog.csdn.net/m0_54349490/article/details/130268867?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170683971316800188582910%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request......
  • 面试官:什么是JIT、逃逸分析、锁消除、栈上分配和标量替换?
    JIT、逃逸分析、锁消除、栈上分配和标量替换等都属于JVM的优化手段,JVM优化手段是指在运行Java程序时,通过对字节码的编译和执行过程进行优化,以提升程序的性能和效率。JVM优化手段主要有以下几个:JIT(Just-In-Time,即时编译):是一种在程序运行时将部分热点代码编译成机器代码的......
  • 使用display:inline-block实现类grid布局时,元素的上下左右之间多了无法消除的间隔,去除
    错误如图 元素左右间隔,上下间隔,都不是手动设置的,布局换行之后自动出现的。 清除上下间隔方法。给每个div设置vertical-align:bottom/top;如果是下边距,就设置为bottom,上边距,就设置为top 清除左右间隔方法。没有尝试,但是网上搜的方法是,给父元素设置font-size:......