https://codeforces.com/problemset/problem/1312/E

傻逼DP又写了快40分钟,迟早药丸

这题之前总是按传统的区间dp想维护i,j的最多合并次数,怎么维护左右是否能合并去了

然而事实上是要想到一个结论,那就是如果一个区间可以合并成一个数字,那么这个数字是定值,然后这个东西可以预处理

那么就维护num[i][j]=k表示i,j合并以后能得到一个k,如果k=0,表示不能合并到一起

接下来维护dp[i]表示前i个数字能合并成最少多少个数字

#include<bits/stdc++.h>
using namespace std;const int maxl=510;int n,m,ans;
int a[maxl],dp[maxl];
int num[maxl][maxl];
char s[maxl];inline void prework()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]),num[i][i]=a[i];
}inline void mainwork()
{int j;for(int len=1;len<=n;len++)for(int i=1;i+len<=n;i++){j=i+len;for(int k=i;k<j;k++)if(num[i][k]==num[k+1][j] && num[i][k]>0)num[i][j]=num[i][k]+1;}for(int i=1;i<=n;i++){dp[i]=dp[i-1]+1;for(int j=1;j<=i;j++)if(num[j][i]>0)dp[i]=min(dp[i],dp[j-1]+1);}
}inline void print()
{printf("%d",dp[n]);
}int main()
{int t=1;//scanf("%d",&t);for(int i=1;i<=t;i++){prework();mainwork();print();}return 0;
}

codeforces 1312E. Array Shrinking相关推荐

  1. CodeForces - 1312E Array Shrinking(区间dp)(通俗易懂)

    CodeForces - 1312E Array Shrinking(区间dp) 题目链接: 没做出来,看了一下别人的题解,才A掉.但网上没发现一篇讲得比较易懂的题解,所以就准备写一篇再加上我自己的理 ...

  2. CodeForces - 1312E Array Shrinking(区间dp)

    题目链接:点击查看 题目大意:给出 n 个数,现在可执行的操作是: 找到相邻且数值相等的两个数,即 abs( i - j ) == 1 && a[ i ] == a[ j ] 使得两个 ...

  3. codeforces E. Array Shrinking

    题目 题意: 给你一组序列,序列中相邻的两个一样的值可以合并成一个值+1的数,问最后剩下的最少的元素有多少个. 思路: 本来我的思路是用栈或者队列的方式去合并,然后输出元素的个数,但是发现假如1 1 ...

  4. CodeForces - 1547F Array Stabilization (GCD version)(ST表+二分)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数组 aaa,下标从 000 开始,每次操作分为两个步骤: 构建出数组 bbb,有 bi=gcd(ai,a(i+1)modn)b_i=gcd(a ...

  5. 网络流(最大流):CodeForces 499E Array and Operations

    You have written on a piece of paper an array of n positive integers a[1], a[2], ..., a[n] and m goo ...

  6. CodeForces - 1454F Array Partition(线段树+二分)

    题目链接:点击查看 题目大意:给出一个长度为 n 的序列,现在要求求出任意一组 x , y , z,满足下列条件: x + y + z = n max( 1 , x ) = min( x + 1 , ...

  7. Codeforces 57C Array dp暴力找到规律

    主题链接:点击打开链接 的非增量程序首先,计算, 如果不增加的节目数量x, 非减少一些方案是x 答案就是 2*x - n 仅仅需求得x就可以. 能够先写个n3的dp,然后发现规律是 C(n-1, 2* ...

  8. Codeforces 623B Array GCD 数论,dp

    文章目录 题意 题解 题意 一个序列每个数都大于111,要使整个数列的最大公约数大于111,可以最多删除一个子串,每一个数花费aaa元,也可以给一个数增添111或者减少111,每个数最多操作一次.求达 ...

  9. Codeforces 1474C.Array Destruction

    题目链接 题意: 给出一个2n个数的序列,一开始你可以任选一个x值,然后在序列中找到两个数,使得这两个数的和等于x.然后删除这两个数,并让x等于这两个数中的最大值.直到整个序列全部被删除为止. 问:求 ...

最新文章

  1. 086.冒泡排序的缺点及解决方案
  2. android从放弃到精通 第五天 excellent
  3. IMX6ULL的GPIO操作方法
  4. Java 线程池框架核心代码分析--转
  5. 浅谈企业MES与ERP系统集成
  6. 设计模式之_Iterator_05
  7. “docker-app”实用工具分享,大大提高 Compose 文件复用率
  8. 最全面的MySQL面试题大全-一
  9. Spark的测量系统MetricsSystem
  10. C++常见面试题-30道
  11. php求两个数组的差值,数组计算差值及项的小计,该如何处理
  12. 日常邮件用语(一)网摘学习
  13. 查看工作日志Linux,工作日志,Linux的表现还是不错的
  14. 变形金刚图纸_变形金刚救援
  15. Ubuntu安装Windows字体
  16. Python -- 网络爬虫:爬取花瓣网站图片
  17. lede usb启动_OpenWrt LEDE 自动挂载USB U盘的方法
  18. Excel 单元格 自定义格式详解
  19. 基于堆叠双向LSTM的中文诗歌生成
  20. 再见,MySQL !

热门文章

  1. web开发之CSS知识点总结
  2. 6.钢笔工具精确抠图和绘制路径
  3. RealPlayer瑞网青年计划第二季获奖名单公布
  4. netsh配置网络失败
  5. sort排序函数用法
  6. 列表小游戏----用户系统
  7. 我的青春里有你的爱 ——《将爱》影评
  8. DrawDIBDraw显示图像颠倒的解决方法
  9. 网页设计-第四天-个人(个性)网站设计
  10. 【214情人节】低调奢华有内涵的python程序猿撒狗粮的正确姿势(附源码)