Description

一个序列,每次可以把相邻的两个数合为一个,价值+1,求最后的最大价值.

Sol

区间DP.

\(f[i][j]\) 表示 \(i-j\) 中合成一个数字为多少,转移就是枚举断点,断点两边的价值一样,就合并.

复杂度 \(O(n^3)\)

Code

/**************************************************************
Problem: 4580
User: BeiYu
Language: C++
Result: Accepted
Time:308 ms
Memory:1544 kb
****************************************************************/ #include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; const int N = 255;
const int M = 50; int n,ans;
int a[N];
int f[N][N]; inline int in(int x=0){ scanf("%d",&x);return x; }
int DFS(int l,int r){
if(l == r) return f[l][r]=a[l];
if(~f[l][r]) return f[l][r];
f[l][r]=0;
for(int i=l;i<r;i++){
int x=DFS(l,i),y=DFS(i+1,r);
if(x!=0 && y!=0 && x == y) f[l][r]=max(f[l][r],x+1);
}ans=max(ans,f[l][r]);return f[l][r];
}
int main(){
n=in();
for(int i=1;i<=n;i++) a[i]=in(),ans=max(ans,a[i]); memset(f,0xff,sizeof(f)); for(int i=1;i<=n;i++) for(int j=i;j<=n;j++) DFS(i,j); // for(int i=1;i<=n;i++) for(int j=i;j<=n;j++) cout<<i<<" "<<j<<" "<<DFS(i,j)<<endl; cout<<ans<<endl;
return 0;
}

  

BZOJ 4580: [Usaco2016 Open]248的更多相关文章

  1. 4580: [Usaco2016 Open]248

    Description Bessie likes downloading games to play on her cell phone, even though she does find the ...

  2. BZOJ 4576: [Usaco2016 Open]262144

    Description 一个序列,每次可以将两个相同的数合成一个数,价值+1,求最后最大价值 \(n \leqslant 262144\) Sol DP. 这道题是 BZOJ 4580: [Usaco ...

  3. bzoj4580: [Usaco2016 Open]248(区间dp)

    4580: [Usaco2016 Open]248 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 255  Solved: 204[Submit][S ...

  4. 【BZOJ 4580】【Usaco2016 Open】248

    http://www.lydsy.com/JudgeOnline/problem.php?id=4580 区间dp,f(i,j)表示区间[i,j]全部合成一个数,这个数是多少. 可以归纳证明[i,j] ...

  5. BZOJ 4742: [Usaco2016 Dec]Team Building

    4742: [Usaco2016 Dec]Team Building Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 21  Solved: 16[Su ...

  6. 【bzoj4580】[Usaco2016 Open]248 区间dp

    题目描述 Bessie likes downloading games to play on her cell phone, even though she does find the small t ...

  7. bzoj 4506: [Usaco2016 Jan]Fort Moo

    4506: [Usaco2016 Jan]Fort Moo Description Bessie is building a fort with her friend Elsie. Like any ...

  8. bzoj 4412: [Usaco2016 Feb]Circular Barn

    4412: [Usaco2016 Feb]Circular Barn Description 有一个N个点的环,相邻两个点距离是1.点顺时针标号为1..N.每一个点有ci头牛,保证∑ci=N.每头牛都 ...

  9. BZOJ4580: [Usaco2016 Open]248

    n<=248个数字,可以进行这样的操作:将相邻两个相同的数字合并成这个数字+1,求最大能合成多少. f(i,j)--区间i到j能合成的最大值,f(i,j)=max(f(i,k)+1),f(i,k ...

随机推荐

  1. Ubuntu——"xxx is not in the sudoers file.This incident will be reported" 错误解决方法

    Ubuntu下普通用户用sudo执行命令时报如题所示错误,解决方法就是在/etc/sudoers文件里给该用户添加权限.如下: 1.切换到root用户下 2./etc/sudoers文件默认是只读的, ...

  2. Visual Studio CLR Profiler

    http://blogs.msdn.com/b/dotnet/archive/2013/04/04/net-memory-allocation-profiling-with-visual-studio ...

  3. js确定要删除吗

    js代码 function confirm_redirect(msg, url) { if (confirm(msg)) { location.href=url; } } html <a hre ...

  4. AppDelegate方法中文记录

    /// 在程序启动之后,重写自定义设置的位置 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOption ...

  5. HTML5播放器实例

    鉴于html5Audio and video的使用,设计了一个自定义风格的播放器,除实现一些基本的默认功能之外,还实现了一些高级功能. 具体功能如下: 实现播放暂停按钮 实现静音按钮 实现音量调节滑动 ...

  6. ElasticSearch之一——索引

    ElasticSearch索引 ElasticSearch 是一个分布式可扩展的实时搜索引擎,它建立在开源搜索引擎框架Apache Lucene基础上.ElasticSearch 不但包括了全文搜索功 ...

  7. 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

    众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...

  8. [asp.net core]project.json(1)

    摘要 前面介绍了使用vs2015新建asp.net core web的内容,这篇文章学习下project.json文件的内容. project.json 原文:https://docs.microso ...

  9. [c#]exchange回复,全部回复,转发所遇到的问题

    摘要 场景: 用户B向A用户发送了一封邮件. 用户A答复邮件时,会默认将B作为接收人. 问题: 在用exchange的回复,全部回复,转发(Reply和Foward方法)邮件的时候,需求是用户可以删除 ...

  10. 代码中access 的使用

     C++代码:if(access(strZip.c_str(), 0) == 0){...}    此处为判断strZip中文件是否存在   .c_str() 是他自身字符串名称,该名称是一个压缩文件 ...