题目链接
题意:给你一组数,如果前一个数等于后一个数,这两个数就可以合成一个新数,并且新数的值为原数加1,问得到数组的最小长度

区间dp题,难度在于连续多个相同的数任意两两合并怎么区别表示。

#include <iostream>
#include <cstring>
using namespace std;
#define mann 0x3f3f3f3f
long long int n,t,k,x,m,i,j;
long long int mod=998244353;
long long int a[1005][1005],d[1005][1005];
using namespace std;
string s;int main()
{cin>>n;for(i=1; i<=n; i++){cin>>a[i][i];//为了区分连续的多个相同的数(如:333)之间任意的两两和成情况,二维数组第一个表示初位置,第二个表示末位置。}for(i=1; i<=n; i++){for(j=1; j<=n; j++)d[i][j]=j-i+1;//记录区间长度}for(int len=2; len<=n; len++){for(int i=1,j=len+i-1; j<=n; j++,i++){for(int k=i; k<j; k++){if(d[i][k]==1&&d[k+1][j]==1&&a[i][k]==a[k+1][j])//判断是否是相邻的两个数,两个数是否相等{d[i][j]=1;//i,j两个数合并成了一个a[i][j]=a[i][k]+1;//原位置i,j两个数合并后的新值}d[i][j]=min(d[i][j],d[i][k]+d[k+1][j]);//更新长度,如果有合并情况就取小的}}}cout<<d[1][n]<<endl;return 0;
}

Array Shrinking(CodeForces - 1312E )相关推荐

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

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

  2. codeforces 1312E. Array Shrinking

    https://codeforces.com/problemset/problem/1312/E 傻逼DP又写了快40分钟,迟早药丸 这题之前总是按传统的区间dp想维护i,j的最多合并次数,怎么维护左 ...

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

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

  4. codeforces E. Array Shrinking

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

  5. Array Splitting CodeForces - 1197C

    You are given a sorted array a_1, a_2, \dots, a_na1​,a2​,-,an​ (for each index i > 1i>1 condit ...

  6. Array Sharpening CodeForces - 1291B(思维)

    You're given an array a1,-,ana1,-,an of nn non-negative integers. Let's call it sharpened if and onl ...

  7. F. Strange Array(Codeforces Round #727 (Div. 2))(主席树)

    F. Strange Array 给定一个长度为nnn的数组aaa,1≤ai≤n1 \leq a_i \leq n1≤ai​≤n,对于每个aia_iai​,我们要找到一个l≤i,r≥il \leq i ...

  8. [CF1312E]Array Shrinking

    题目 传送门 to luogu 题意概要 一维线段上的 2048 \tt 2048 2048 游戏:每次两个相邻 x x x 可以合并成 x + 1 x+1 x+1 .求最少能剩下几个数字. 数据范围 ...

  9. CodeForces - 1539F Strange Array(线段树区间合并)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,规定位置 iii 的贡献是:设 x=a[i]x=a[i]x=a[i],选择一个包含 iii 的区间 [l,r][l,r][l,r],将其中 ...

  10. CodeForces - 1534E Lost Array(bfs+交互)

    题目链接:点击查看 题目大意:初始时给出一个长度为 nnn 的序列,每次可以询问 kkk 个位置的异或和,现在需要以最少的询问获得整个序列的异或和 题目分析:因为是异或,我们只关心每个位置被询问的次数 ...

最新文章

  1. linux 从仓库拉取镜像,k8s 从私有仓库拉取镜像
  2. ESD二极管,替代国际品牌型号汇总
  3. 腾达fh307没有显示服务器名,腾达(Tenda)FH307路由器上网设置 | 192路由网
  4. [论文阅读] Cross-level Contrastive Learning and Consistency Constraint for Medical Image Segmentation
  5. 经典排序算法(十七)--计数排序Counting Sort
  6. Android ADT 无法在线安装,离线下载ADT压缩包方法。SDK Manager无法更新
  7. 个人健康管理系统1.0(微信小程序+java(ssm框架)+layui+爬虫+mysql)(新手学习之路,带源码,仅供学习)
  8. webrtc学习--websocket服务器(二) (web端播放h264)
  9. android 4.4.2截屏方法,Android截屏截图的几种方法总结
  10. 理论小知识:获取AUTO_INCREMENT值
  11. Microsoft Edge 嗯...无法访问此页面解决办法
  12. Tableau技巧(五)帕累托分布(二八原则)
  13. osgEarth指北针
  14. 求助应用Netlogo做交通出行方式选择仿真
  15. PyTorch官方中文文档上线啦!
  16. 从孙子兵法理解围棋大龙攻杀的要诀: 攻守双方口诀
  17. Windows Forms 2.0 Programming 花边(002)——失算!第一章的下马威
  18. nginx防火墙端口配置
  19. 重学计算机组成原理(三)- 进击,更强的性能!
  20. [编程入门]自定义函数求一元二次方程

热门文章

  1. 自定义Drawable 实现图片圆角、圆形、椭圆形
  2. java电子贺卡_用java写一个新春贺卡,可转exe的
  3. C++STL常用算法adjacent_find
  4. 人大金仓删除字段_人大金仓数据库V7升级V8遇到的一些问题
  5. QQ号被盗有什么方法能找回
  6. MXNet中take函数的用法
  7. linux温湿度传感器SHTC3驱动开发
  8. 量化金融入门笔记(一)
  9. 计算机毕业设计SSM常见病辅助食疗系统【附源码数据库】
  10. 免费支持顺丰、四通一达、EMS等快递物流单号查询的开放接口?