UVa 10520

哇!简直恶心的递推,生推了半天。。感觉题不难,但是恶心,不推出来又难受。。一不小心还A了[]~( ̄▽ ̄)~*,AC的猝不及防。。。

先递推求出f[i][1](1<=i<=n-1),f[n][i](2<=i<=n)和f[i][j](2<=i<=n-1,1<=j<=i),再递推一次求f[1][j](2<=j<=n),f[1][n]即为答案。其实不太肯定这样是否一定正确,因为我没有特别考虑j=0的边界情况,感觉好像也用不到这个情况。而且要用long long,刚开始用int会WA。

Reference Code:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
ll f[][]={}; int main()
{
int n,an1;
while(scanf("%d%d",&n,&an1)==)
{
memset(f,,sizeof(f));
f[n][]=an1;
for (int i=n-;i>=;i--){
f[i][]=f[i+][]*;
}
for(int i=;i<=n;i++){
f[n][i]=f[n][i-]*;
}
for(int i=n-;i>=;i--){
for(int j=;j<=i;j++){
for(int k1=i+;k1<=n;k1++){
f[i][j]=max(f[i][j],f[k1][]+f[k1][j]);
}
ll t=;
for(int k2=;k2<j;k2++){
t=max(t,f[i][k2]+f[n][k2]);
}
f[i][j]+=t;
}
}
for(int j=;j<=n;j++){
for(int k=;k<j;k++){
f[][j]=max(f[][j],f[][k]+f[k+][j]);
}
}
cout<<f[][n]<<endl;
}
return ;
}

UVa 10520 递推

后来又看到了有人用深搜写,感觉其实好理解点而且不用想他们之间的递推关系,按照要求往下搜就好,省点脑子,比赛的时候适合这种写法。

Reference Code:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
ll f[][]={};
ll n,a; ll calc(int i,int j)
{
if(f[i][j]!=-)
return f[i][j];
if(i<j){
ll Max=;
for(int k=i;k<j;k++){
ll tmp=calc(i,k)+calc(k+,j);
Max=max(Max,tmp);
}
return f[i][j]=Max;
}
ll Max1=,Max2=;
if(i<n){
for(int k=i+;k<=n;k++){
ll tmp=calc(k,)+calc(k,j);
Max1=max(Max1,tmp);
}
}
if(j>){
for(int k=;k<j;k++){
ll tmp=calc(i,k)+calc(n,k);
Max2=max(Max2,tmp);
}
}
return f[i][j]=Max1+Max2;
}
int main()
{
while(cin>>n>>a)
{
memset(f,-,sizeof(f));
f[n][]=a;
f[][n]=calc(,n);
cout<<f[][n]<<endl;
}
return ;
}

UVa 10520 深搜

UVa 10520【递推 搜索】的更多相关文章

  1. UVa 12034 (递推) Race

    题意: 有n个人赛马,名次可能并列,求一共有多少种可能. 分析: 设所求为f(n),假设并列第一名有i个人,则共有C(n, i)种可能,接下来确定后面的名次,共有f(n-1)种可能 所以递推关系为: ...

  2. UVa 580 (递推) Critical Mass

    题意: 有两种盒子分别装有铀(U)和铅(L),现在把n个盒子排成一列(两种盒子均足够多),而且要求至少有3个铀放在一起,问有多少种排放方法. 分析: n个盒子排成一列,共有2n中方案,设其中符合要求的 ...

  3. hdu1078 dp(递推)+搜索

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1078 题意:老鼠从(1.1)点出发,每次最多只能走K步,而且下一步走的位置的值必须必当前值 ...

  4. UVa 1452 递推 Jump

    约瑟夫变形,先计算出3个数时,最后三个数字的编号. 然后以这三个数为起点,就可以递推出n个数对应的最后三个数字的编号. 递推公式都是一样的. #include <iostream> #in ...

  5. UVa 1647 (递推) Computer Transformation

    题意: 有一个01串,每一步都会将所有的0变为10,将所有的1变为01,串最开始为1. 求第n步之后,00的个数 分析: 刚开始想的时候还是比较乱的,我还纠结了一下000中算是有1个00还是2个00 ...

  6. UVa 1646 (递推 JAVA大数) Edge Case

    题意: 有n个点围成一圈,这n个点的匹配就是没有公共点的边集(这些边只能连接一圈中相邻的两点),求所有匹配的个数. 额,我不会分析..=_=|| 算了几个数,找找规律发现它满足斐波那契数列的递推关系, ...

  7. UVa 1638 (递推) Pole Arrangement

    很遗憾,这么好的一道题,自己没想出来,也许太心急了吧. 题意: 有长度为1.2.3...n的n个杆子排成一行.问从左到右看能看到l个杆子,从右往左看能看到r个杆子,有多少种排列方法. 分析: 设状态d ...

  8. UVa 1645 (递推) Count

    题意: 有多少个n个节点的有根树,满足每层节点的子节点个数相同,输出该数目除以1e9+7的余数. 分析: 这种题目就属于那种,看起来很高冷,读完题更高冷.想了N久想不出来,一搜题解,卧槽,这么sb的题 ...

  9. UVA 11000- Bee 递推

    In Africa there is a very special species of bee. Every year, the female bees of such species give b ...

随机推荐

  1. CF605A Sorting Railway Cars

    传送门 题目大意 给出一个 1 到 n 的排列,每次操作可以将某个位置的数字移动到最前面或最后面,求将排列从小到大排序的最小操作次数 如:4 1 2 5 3 操作1:将5和3换一下变成4 1 2 3 ...

  2. TZ_13_Eureka的高可用

    1.Eureka Server即服务的注册中心,在刚才上一篇中,我们只有一个EurekaServer,事实上EurekaServer也可以是一个集群,形成高可用的Eureka中心. 目的:多个Eure ...

  3. TZ_11_Spring-Boot的属性注入方式(jdbc为例)

    1.以上一篇文档为基础 2.创建jdbc外部属性文件 application.properties此名字为默认文件名在使用是不需要使用 @Propertysource("classpath: ...

  4. Linux 拷贝有更改的文件

    cp -Ruv /home/username/trunk_new/app/* /data/httpdocs/wwwroot/app/

  5. Java review-basic2

    1.Implement a thread-safe (blocking) queue: Class Producer implements Runable{ Private final Blockin ...

  6. 各种语言web性能简单对比测试

    忽然想比较一下  python  nodejs  go 的web 响应,就简单的写了个性能对比测试. 测试目标:1 . i5 4核 32G  同一机器   linux 2.  用python(flas ...

  7. 关于golang中某些包无法下载的解决方法

    由于某些不可描述的原因,我们 在go module 环境下(啥?这个不知道是啥?赶紧恶补下)进行go get xxxx时,会发现一些依赖库无法访问(不要问为什么无法访问). 解决办法 戳这里:http ...

  8. 关于springmvc 只能在index.jsp页面显示图片的处理办法jsp页面无法显示图片

    首先,已经配置好了mvc对静态资源的处理 只有index,jsp可以显示图片 其他页面同样的代码则不显示 后来折腾了半天,发现 index是static的父目录的级别文件 可以向下访问 但是其他的js ...

  9. 使用Spring Data Redis时,遇到的几个问题

    需求: 1,保存一个key-value形式的结构到redis 2,把一个对象保存成hash形式的结构到redis 代码如下: // 保存key-value值         pushFrequency ...

  10. php 抽奖概率算法

    lottery.php <?php //转自https://segmentfault.com/a/1190000007431893 /* * 不同概率的抽奖原理就是把0到*(比重总数)的区间分块 ...