题意:

1≤T≤200

● 1≤length(N)≤100

思路:

设f[i,j,k,l]为第i位为j,前i位是否贴上限(0/1),递减或递增(0/1)方案数

g[i,j,k]为不到n位,第i位为j,递减或递增方案数

 const mo=;
var f:array[..,..,..,..]of longint;
g:array[..,..,..]of longint;
a:array[..]of longint;
v,n,i,j,k,l,jj,kk,ans,cas,ll:longint;
ch:string; begin readln(cas);
for v:= to cas do
begin
readln(ch);
n:=length(ch);
for i:= to n do a[i]:=;
for i:= to n do a[i]:=ord(ch[i])-ord('');
for i:= to n do
for j:= to do
for k:= to do
for l:= to do f[i,j,k,l]:=;
for i:= to a[]- do f[,i,,]:=;
f[,a[],,]:=;
for i:= to n do
for j:= to do
for k:= to do
for l:= to do
for jj:= to do
begin
if k= then kk:=;
if (k=)and(jj<a[i]) then kk:=;
if (k=)and(jj=a[i]) then kk:=;
if (k=)and(jj>a[i]) then break;
for ll:=l to do
begin
if (ll=)and(j<jj) then continue;
if (ll=)and(j>jj) then continue;
if (ll<>l)and(j=jj) then continue;
f[i,jj,kk,ll]:=(f[i,jj,kk,ll]+f[i-,j,k,l]) mod mo;
end;
end;
for i:= to n- do
for j:= to do
for k:= to do g[i,j,k]:=;
for i:= to do g[,i,]:=;
for i:= to n- do
for j:= to do
for k:= to do
for jj:= to do
for kk:=k to do
begin
if (kk=)and(j<jj) then continue;
if (kk=)and(j>jj) then continue;
if (k<>kk)and(j=jj) then continue;
g[i,jj,kk]:=(g[i,jj,kk]+g[i-,j,k]) mod mo;
end;
ans:=;
for j:= to do
for k:= to do
for l:= to do ans:=(ans+f[n,j,k,l]) mod mo;
for i:= to n- do
for j:= to do
for k:= to do ans:=(ans+g[i,j,k]) mod mo;
writeln(ans);
end; end.

【HDOJ6148】Valley Numer(数位DP)的更多相关文章

  1. HDU 6148 Valley Numer (数位DP)

    题意:... 析:好久没写数位DP了,几乎就是不会了.... dp[i][last][s] 表示前 i 位上一位是 last,当前的状态是 s,0表示非上升,1 表示非下降,然后就很简单了,只有 0 ...

  2. 【HDU】6148 Valley Numer 数位DP

    [算法]数位DP [题意]定义V-number为从左到看单位数字未出现先递增后递减现象的数字,求0~N中满足条件的数字个数.T<=200,lenth(n)<=100 [题解]百度之星201 ...

  3. 2017"百度之星"程序设计大赛 - 复赛1005&&HDU 6148 Valley Numer【数位dp】

    Valley Numer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  4. 【hdu6148】Valley Numer【数位dp模板题】

    题意 对于每组数据给出一个整数n(length(n)<=100),找出不大于n的数字中有多少是Valley Numer.对于Valley的定义是它每一位的数字要么是递增,要么是递减,要么是先递减 ...

  5. 【HDU-6148】 Valley Numer(数位dp)

    百度之星2017复赛1005 HDU-6148 Valley Numer 题意 不出现上升后直接下降数位的数,不超过n的有几个.前导零不算. 题解 dfs(当前数位的位置len,这位的数num,是否在 ...

  6. hdu6148 百度之星程序设计竞赛复赛 (数位dp)

    Valley Numer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  7. 【专题】数位DP

    [资料] ★记忆化搜索:数位dp总结 之 从入门到模板 by wust_wenhao 论文:浅谈数位类统计问题 数位计数问题解法研究 [记忆化搜索] 数位:数字从低位到高位依次为0~len-1. 高位 ...

  8. 【百度之星复赛】T5 Valley Numer

    Valley Numer Problem Description 众所周知,度度熊非常喜欢数字. 它最近发明了一种新的数字:Valley Number,像山谷一样的数字. 当一个数字,从左到右依次看过 ...

  9. # 数位DP入坑

    Hdu 2089 不要62 #include<iostream> #include<cstdio> #include<cmath> #include<cstr ...

  10. 数位DP复习笔记

    前言 复习笔记第五篇.(由于某些原因(见下),放到了第六篇后面更新)CSP-S RP++. luogu 的难度评级完全不对,所以换了顺序,换了别的题目.有点乱,见谅.要骂就骂洛谷吧,原因在T2处 由于 ...

随机推荐

  1. 12c pdb expdp use DATA_PUMP_DIR meet ORA-39145

    ORA-39002: invalid operation ORA-39070: Unable to open the log file. ORA-39087: directory name DATA_ ...

  2. Atcoder B - Boxes 玄学 + 数学

    http://agc010.contest.atcoder.jp/tasks/agc010_b 预处理出每两个相邻的数的差值,那么首先知道是一共取了sum / ((1 + n) * n / 2)次,因 ...

  3. Snort里如何将读取的包记录存到二进制tcpdump文件下(图文详解)

    不多说,直接上干货! 如果网络速度很快,或者想使日志更加紧凑以便以后的分析,那么应该使用二进制的日志文件格式.如tcpdump格式或者pcap格式.  这里,我们不需指定本地网络了,因为所以的东西都被 ...

  4. Android开发学习—— 消息机制

    ###主线程不能被阻塞* 在Android中,主线程被阻塞会导致应用不能刷新ui界面,不能响应用户操作,用户体验将非常差* 主线程阻塞时间过长,系统会抛出ANR异常* ANR:Application ...

  5. AngularJS入门 & 分页 & CRUD示例

    一.AngularJS 简介 ​ AngularJS  诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中. ...

  6. [POJ1509]Glass Beads 后缀自动机 最小循环串

    题目链接:http://poj.org/problem?id=1509 题目意思就是求循环字符串的最小表示. 我们用字符串S+S建立SAM,然后从root开始走n步,每次尽量选最小的. 由于 SAM ...

  7. jmeter 连接 sqlite 进行压力测试

  8. Farseer.net轻量级开源框架 中级篇:SQL执行报告

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 数据库切换 下一篇:Farseer.net轻量级开源框架 中级篇: 探究ORM(M ...

  9. 博客之旅 gogogo!

    听说写博客的人都很牛~ 上班一年多了,想记录点什么,so,就写博客吧,整理一些技术点与工作生活心得 欢迎各位道友交流学习 :)

  10. 学习嵌入式开发板的Android平台体系结构和源码结构

    本文转自迅为论坛资料:http://www.topeetboard.com 推荐学习嵌入式开发板平台:iTOP-4412开发板 下面这张图出自Google官方,展示了Android系统的主要组成部分. ...