E. Array Shrinking

题目大意:

给你一个大小是n的序列,相邻的序列如果相等,则可以合并,合并之后的值等于原来的值加1.

求:合并之后最小的序列的和。

题解:

这个数据范围和这个相邻的合并一看就知道是一个区间 \(dp\)

说难也难,说不难也不难,如果知道区间 \(dp\) 的基本解法,那就会写了。

\(dp[i][j]\) 表示的是从 \(i\) 到 \(j\) 这个区间合并之后的最小的值。

再用一个 \(val[i][j]\) 表示 \(i\) 到 \(j\) 这个区间合并后的值,当然这个仅仅只在 \(dp[i][j]==1\) 的时候成立。

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=550;
typedef long long ll;
int dp[maxn][maxn],val[maxn][maxn]; int main(){
int n;
scanf("%d",&n);
memset(dp,inf,sizeof(dp));
for(int i=1,x;i<=n;i++){
scanf("%d",&x);
dp[i][i]=1,val[i][i]=x;
}
for(int len=1;len<=n;len++){
for(int j=1;j+len<=n+1;j++){
int ends=j+len-1;
for(int i=j;i<ends;i++){
if(dp[j][i]==1&&dp[i+1][ends]==1&&val[j][i]==val[i+1][ends]){
dp[j][ends]=1;val[j][ends]=val[j][i]+1;
}
else dp[j][ends]=min(dp[j][ends],dp[j][i]+dp[i+1][ends]);
}
}
}
printf("%d\n",dp[1][n]);
return 0;
}

Educational Codeforces Round 83 E. Array Shrinking的更多相关文章

  1. Educational Codeforces Round 21 D.Array Division(二分)

    D. Array Division time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...

  2. Educational Codeforces Round 11A. Co-prime Array 数学

    地址:http://codeforces.com/contest/660/problem/A 题目: A. Co-prime Array time limit per test 1 second me ...

  3. Educational Codeforces Round 52D(ARRAY,模拟最短路)

    #include<bits/stdc++.h>using namespace std;int n,x;int chess[17*17];//记录棋盘上的numberarray<int ...

  4. Educational Codeforces Round 83 (Rated for Div. 2)A--C

    题意:给出一个边数为n的等边多边形,问是否可以变成m的等边多边形.条件是同一个中心,共用原顶点. 解析:直接n%m==0即可,这样就是平分了.签到题没得说了. #include<iostream ...

  5. Educational Codeforces Round 21 D - Array Division (前缀和+二分)

    传送门 题意 将n个数划分为两块,最多改变一个数的位置, 问能否使两块和相等 分析 因为我们最多只能移动一个数x,那么要么将该数往前移动,要么往后移动,一开始处理不需要移动的情况 那么遍历sum[i] ...

  6. Educational Codeforces Round 19 E. Array Queries(暴力)(DP)

    传送门 题意 给出n个数,q个询问,每个询问有两个数p,k,询问p+k+a[p]操作几次后超过n 分析 分块处理,在k<sqrt(n)时,用dp,大于sqrt(n)用暴力 trick 代码 #i ...

  7. Educational Codeforces Round 83 (Rated for Div. 2)

    A. Two Regular Polygons 题意:给你一个 正n边形,问你能否以这个 n 的其中一些顶点组成一个 m边形, 思路 :如果 n % m == 0 ,就可 收获:边均分 B. Bogo ...

  8. Educational Codeforces Round 83 D. Count the Arrays(组合,逆元,快速幂)

    题意: 从 m 个数中选 n - 1 个数组成先增后减的长为 n 的数组. 思路: 因为 n 个数中有两个数相同,所以每种情况实际上只有 n - 1 个不同的数--$c_m^{n - 1}$, 除去最 ...

  9. [Educational Codeforces Round 63 ] D. Beautiful Array (思维+DP)

    Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array time limit per test 2 seconds ...

随机推荐

  1. AJ学IOS 之小知识之xcode6自动提示图片插件 KSImageNamed的安装

    AJ分享,必须精品 一:首先看效果 KSImageNamed是让XCode能预览项目中图片的插件 很牛逼,据说写这个插件的牛人在日本~ 主要针对imageNamed:方法 效果如图: 安装: 首先需要 ...

  2. Jquery+php鼠标滚动到页面底部自动加载更多内容,使用分页

    1.index.php <style type="text/css"> #container{margin:10px auto;width: 660px; border ...

  3. SpringBoot系列(八)分分钟学会Springboot多种解决跨域方式

    SpringBoot系列(八) 分分钟学会SpringBoot多种跨域解决方式 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 s ...

  4. 1. ajax递归并发处理

    在某些情况下可能会需要循环ajax请求,可以利用递归发送 function recursion( index,array ) { if ( index < array.length ) { // ...

  5. window 下 jmeter+ant 自动生成html报告并发送邮件

    一.安装ant 1.ant 下载地址:https://ant.apache.org/bindownload.cgi 2.下载完成解压到指定目录下 3.配置ant 环境变量 新建系统变量 -ANT_HO ...

  6. vim环境下空格和tab键互换

    对于已保存的文件,可以使用下面的方法进行空格和TAB的替换 TAB替换为空格::set ts=4:set expandtab:%retab! 空格替换为TAB::set ts=4:set noexpa ...

  7. 常见分布式全局唯一ID生成策略

    全局唯一的 ID 几乎是所有系统都会遇到的刚需.这个 id 在搜索, 存储数据, 加快检索速度 等等很多方面都有着重要的意义.工业上有多种策略来获取这个全局唯一的id,针对常见的几种场景,我在这里进行 ...

  8. javascript: Object对象生成URL参数

    code: function makeQuery(queryObject) { const query = Object.entries(queryObject) .reduce((result, e ...

  9. thinkPHP--关于域名指向的问题

    一般项目的域名指向都是可以直接配置的,在默认的情况下.一般都是指向index.php文件.我就直接上图吧,这里是用我的公司项目名称www.xcj.com为域名. 一般的进入项目,调用默认的控制器: h ...

  10. 闲聊http1.1的6个方法

    GET :获取资源GET 方法用来请求访问已被 URI 识别的资源.指定的资源经服务器端解析后返回响应内容. POST :传输实体主体POST 方法用来传输实体的主体.虽然用 GET 方法也可以传输实 ...