题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3565

题意:给你一个区间,让你找这个区间内有两个山峰的数的最大和,什么是两个山峰,比如121121  第一个2 和第二个2就是两个峰

题解:求的这个不满足dfs(y)-dfs(x)所以只有用一个上限和一个下限来限制

s=0:前导0的状态;
s=1:第一个山峰的上坡,且不能立马下坡;
s=2:第一个山峰的上坡,且最后一点能看成是最高点,下一个点可以是下坡;
s=3:第一个山峰的下坡;
s=4:第二个山峰的上坡,且不能立马下坡;
s=5:第二个山峰的上坡,且最后一点能看成是最高点,下一个点可以是下坡;
s=6:第二个山峰的下坡;
s=-1:其余不合法的状态。

设dp[i][j][k]为考虑第i位,上一个数字为j,状态s为k的最大数位和

 #include<cstdio>
#define MAX(a,b) ((a)>(b)?(a):(b))
#define F(i,a,b) for(int i=a;i<=b;i++) int dp[][][],ss[],ee[],t,len,an;unsigned __int64 x,y; int dfs(int pos,int pre,int s,int fx,int fy){
if(!pos)return s==?:-;
if(!fx&&!fy&&dp[pos][pre][s]!=-)return dp[pos][pre][s];
int st=fx?ss[pos]:,end=fy?ee[pos]:,ans=-,tp,ns;
F(i,st,end){
ns=s;
if(!s&&i)ns=;
else if(s==){if(i>pre)ns=;else ns=-;}
else if(s==){if(i<pre)ns=;else if(i==pre)ns=-;}
else if(s==&&i>=pre){if(i)ns=;else ns=-;}
else if(s==){if(i>pre)ns=;else ns=-;}
else if(s==){if(i<pre)ns=;else if(i==pre)ns=-;}
else if(s==&&i>=pre)ns=-;
if(ns!=-)tp=dfs(pos-,i,ns,fx&&i==st,fy&&i==end),ans=(tp==-?ans:MAX(ans,i+tp));
}
if(!fx&&!fy)dp[pos][pre][s]=ans;
return ans;
} int main(){
F(i,,)F(j,,)F(k,,)dp[i][j][k]=-;
scanf("%d",&t);
F(i,,t){
scanf("%I64u%I64u",&x,&y);
for(len=;y;x/=,y/=)ss[++len]=x%,ee[len]=y%;
an=dfs(len,,,,),printf("Case %d: %d\n",i,an==-?:an);
}
return ;
}

hdu_3565_Bi-peak Number(数位DP)的更多相关文章

  1. 多校5 HDU5787 K-wolf Number 数位DP

    // 多校5 HDU5787 K-wolf Number 数位DP // dp[pos][a][b][c][d][f] 当前在pos,前四个数分别是a b c d // f 用作标记,当现在枚举的数小 ...

  2. hdu 5898 odd-even number 数位DP

    传送门:hdu 5898 odd-even number 思路:数位DP,套着数位DP的模板搞一发就可以了不过要注意前导0的处理,dp[pos][pre][status][ze] pos:当前处理的位 ...

  3. codeforces Hill Number 数位dp

    http://www.codeforces.com/gym/100827/attachments Hill Number Time Limits:  5000 MS   Memory Limits: ...

  4. HDU 5787 K-wolf Number 数位DP

    K-wolf Number Problem Description   Alice thinks an integer x is a K-wolf number, if every K adjacen ...

  5. Fzu2109 Mountain Number 数位dp

    Accept: 189    Submit: 461Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description One ...

  6. HDU 3709 Balanced Number (数位DP)

    Balanced Number Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  7. beautiful number 数位DP codeforces 55D

    题目链接: http://codeforces.com/problemset/problem/55/D 数位DP 题目描述: 一个数能被它每位上的数字整除(0除外),那么它就是beautiful nu ...

  8. FZU - 2109 Mountain Number 数位dp

    Mountain Number One integer number x is called "Mountain Number" if: (1) x>0 and x is a ...

  9. BNU 13024 . Fi Binary Number 数位dp/fibonacci数列

    B. Fi Binary Number     A Fi-binary number is a number that contains only 0 and 1. It does not conta ...

  10. hdu 5898 odd-even number(数位dp)

    Problem Description For a number,if the length of continuous odd digits is even and the length of co ...

随机推荐

  1. setAction方法 Snackbar 右侧按钮可以被点击并处理一些事件

    从数据库同一记录取得的字段所组装成的对象应该是同一个对象,然后由不同的Session从数据库同一条记录上分别取得对象,它们的内存地址是不一样的. 一般来说,常见的数字加密方式都可以分为两类,即对称加密 ...

  2. mac下配置gdb调试golang

    mac下配置gdb调试golang 原文链接 https://sourceware.org/gdb/wiki/BuildingOnDarwin Building GDB for Darwin Crea ...

  3. 【.NET】字符串处理

    类名:DealString /// 1.截取字符串,最后加3个小数点 /// 2.获得指定Url的参数的string类型值 /// 3.判断数据类型 /// 4.过滤JS标记 /// 5.获取Chec ...

  4. box2d 已知bug

    1.动态刚体与一个与静态刚体重叠的小的感应刚体在contactBegin时,有些时候无法侦测到

  5. oracle 索引 。其中全文检索最变态

    全文检索 位图索引 B 全文检索很少使用,如果产品上使用 大家可以用Lcunce这些应用如果非要在数据库做这个采用就把用一个全文检索索引 检索索引 不会像其他的索引创建一个对象他会创建十个相关的对象. ...

  6. DOM和BOM

    DOM:http://www.cnblogs.com/slfyeye/articles/850247.html BOM : http://www.cnblogs.com/zfc2201/p/34531 ...

  7. bzoj1336: [Balkan2002]Alien最小圆覆盖

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1336 1336: [Balkan2002]Alien最小圆覆盖 Time Limit: 1 ...

  8. 游戏Demo(持续更新中...)

    格斗游戏 主要用于联系Unity的动画系统,并加入了通过检测按键触发不同的技能. WASD控制方向,AD为技能1,SW为技能2,右键跳跃,连续单机普通连招. 本来是要用遮罩实现跑动过程中的攻击动作,但 ...

  9. MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化

    上篇文章中 我们已经创建了EF4.1基于code first的例子  有了数据库 并初始化了一些数据  今天这里写基础的增删改查和持久对象的生命周期变化 学习下原文先把运行好的原图贴来上~~ 一.创建 ...

  10. inno setup 安装个界面提示信息修改

    对于inno setup打包的安装文件,各界面中的提示信息可以在安装编译脚本 xxx.iss 中的 [Messages] 段设置,如果不知道要设置的信息的变量名,可以到 inno setup的安装目录 ...