【百度之星复赛】T5 Valley Numer
Valley Numer
Problem Description
众所周知,度度熊非常喜欢数字。
它最近发明了一种新的数字:Valley Number,像山谷一样的数字。

当一个数字,从左到右依次看过去数字没有出现先递增接着递减的“山峰”现象,就被称作 Valley Number。它可以递增,也可以递减,还可以先递减再递增。在递增或递减的过程中可以出现相等的情况。
比如,1,10,12,212,32122都是 Valley Number。
121,12331,21212则不是。
度度熊想知道不大于N的Valley Number数有多少。
注意,前导0是不合法的。
Input
第一行为T,表示输入数据组数。
每组数据包含一个数N。
● 1≤T≤200
● 1≤length(N)≤100
Output
对每组数据输出不大于N的Valley Number个数,结果对 1 000 000 007 取模。
Sample Input
3
3
14
120
Sample Output
3
14
119
题解:裸的数位DP。用f[i][j][0/1/2]表示i位,最高位为j,当前处于 递减/递增/平 状态的数的个数。然后尽情讨论吧!
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long ll;
const ll mod=1000000007;
ll f[110][12][3];
//0 减 1 增 2 未知
int v[110];
char str[110];
ll ans;
int n,tag,tmp;
void init()
{
int i,j,k;
for(i=0;i<=9;i++) f[1][i][2]=1;
for(i=2;i<=100;i++)
{
for(j=0;j<=9;j++)
{
f[i][j][2]=f[i-1][j][2];
for(k=0;k<=9;k++)
{
if(j<=k) f[i][j][1]=(f[i][j][1]+f[i-1][k][1])%mod;
if(j<k) f[i][j][1]=(f[i][j][1]+f[i-1][k][2])%mod;
if(j>=k) f[i][j][0]=(f[i][j][0]+f[i-1][k][0])%mod;
if(j>k) f[i][j][0]=(f[i][j][0]+f[i-1][k][1]+f[i-1][k][2])%mod;
}
}
}
}
void work()
{
scanf("%s",str),n=strlen(str);
int i,j;
ans=0,tag=2;
for(i=1;i<=n;i++) v[i]=str[n-i]-'0';
for(i=1;i<n;i++) for(j=1;j<=9;j++) ans=(ans+f[i][j][0]+f[i][j][1]+f[i][j][2])%mod;
for(i=n;i>=1;i--)
{
for(j=(i==n)?1:0;j<v[i];j++)
{
tmp=tag;
if(i!=n&&j>v[i+1]) tmp=1;
if(i!=n&&j<v[i+1])
{
if(tag==1) continue;
tmp=0;
}
if(tmp==2)
{
ans=(ans+f[i][j][0]+f[i][j][1]+f[i][j][2])%mod;
}
if(tmp==1)
{
if(j>=v[i+1]) ans=(ans+f[i][j][1]+f[i][j][2])%mod;
}
if(tmp==0)
{
if(j<=v[i+1]) ans=(ans+f[i][j][0]+f[i][j][1]+f[i][j][2])%mod;
if(j>v[i+1]) ans=(ans+f[i][j][1]+f[i][j][2])%mod;
}
}
if(i!=n&&v[i]>v[i+1]) tag=1;
if(i!=n&&v[i]<v[i+1])
{
if(tag==1) break;
tag=0;
}
}
if(!i) ans=(ans+1)%mod;
printf("%lld\n",ans);
}
int main()
{
int T;
init();
scanf("%d",&T);
while(T--) work();
return 0;
}//1 130
【百度之星复赛】T5 Valley Numer的更多相关文章
- 百度之星复赛T5&&hdu6148
Problem Description 众所周知,度度熊非常喜欢数字. 它最近发明了一种新的数字:Valley Number,像山谷一样的数字. 当一个数字,从左到右依次看过去数字没有出现先递增接着递 ...
- 最强密码 (百度之星复赛 T5)
题目大意: 给出一个字符串A,要求最短的字符串B,B不是A的子序列. 求最短长度 和 最短的字符串个数 |A|<=105. 题解: 1.比赛的时候没有想出来,时隔一个多月又看到了这道题,虽 ...
- 百度之星复赛T6&&hd6149 ——Valley Numer II
Problem Description 众所周知,度度熊非常喜欢图. 它最近发现了图中也是可以出现 valley —— 山谷的,像下面这张图. 为了形成山谷,首先要将一个图的顶点标记为高点或者低点.标 ...
- 【2017百度之星程序设计大赛 - 复赛】Valley Numer
[链接]http://acm.hdu.edu.cn/showproblem.php?pid=6148 [题意] 在这里写题意 [题解] 先把1..N里面的山峰数字个数算出来->x 然后用N减去这 ...
- hdu5713 K个联通块[2016百度之星复赛B题]
dp 代码 #include<cstdio> ; ; int n,m,k,cnt[N]; ]; ][],i,j,l,a,b; int check(int x,int y) { int i; ...
- hdu5714 拍照[2016百度之星复赛C题]
由于船移动的速度都一样,那么对于往一个方向的船相对距离其实是不变的,我们可以把往一个方向移动的船都视作静止,并求出在哪些观测位置可以看到,很明显对于船[x,y,z],当x+z>=y-z的时候,可 ...
- hdu5715 XOR 游戏 [2016百度之星复赛D题]
比赛的时候没仔细想,赛后一想这题其实挺简单的,先求出序列的异或前缀和,然后将异或前缀和建出一颗trie树,然后我们可以二分答案,把问题变成判定性问题,判定是否存在一种方案,使得所有的分组的异或和都大 ...
- 百度之星复赛 1004 / hdu5715 二分dp+trie
XOR 游戏 Problem Description 众所周知,度度熊喜欢XOR运算[(XOR百科)](http://baike.baidu.com/view/674171.htm). 今天,它发 ...
- 百度之星复赛Astar Round3
拍照 树状数组(SB了).求出静止状态下,每个点能看到多少个向右开的船c1[i],多少个向左开的船c2[i]. max{c1[i] + c2[j], (满足i <= j) }即为答案.从后往前 ...
随机推荐
- .NET下XML文件的读写
一.前言: XML是微软.Net战略的一个重要组成部分,而且它可谓是XML Web服务的基石,所以掌握.Net框架下的XML技术自然显得非常重要了.本文将指导大家如何运用C#语言完成.Net框架下的X ...
- 爬虫学习笔记(六)PyQuery模块
PyQuery模块也是一个解析html的一个模块,它和Beautiful Soup用起来差不多,它是jquery实现的,和jquery语法差不多,会用jquery的人用起来就比较方便了. Pyquer ...
- RabbitMq解决分布式事物
一.RabbitMQ解决分布式事务思路: 案例: 经典案例,以目前流行点外卖的案例,用户下单后,调用订单服务,让后订单服务调用派单系统通知送外卖人员送单,这时候订单系统与派单系统采用MQ异步通讯. 二 ...
- Bootstrap多层模态框modal嵌套问题
一.问题 在项目里忽然新加了一个需求,在原本弹出的模态框里,点击模态框里面的按钮再弹出一个模态框,出来另个模态框来展示详细信息.此时就存在两个模态框在这个需求没加之前有一个弹出的模态框也是需要继续点击 ...
- Aizu 2300 Calender Colors dfs
原题链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2300 题意: 给你一个图,让你生成一个完全子图.使得这个子图中每个点的最 ...
- SELinux下更改mysql端口
默认情况下 mysql更改端口后是不能通过selinux的 提示启动错误,那么首先就要看mysql的错误日志 可是我不知道mysql错误日志的位置 首先,更改selinux的模式为passive 然后 ...
- Centos下添加用户组
近日,重新整理了下开发环境,重装了,nginx,但是这个时候却是报错了,报错信息如下: [root@hserver1 php-7.0.5]# nginx -t nginx: [emerg] getpw ...
- git错误解决 -- 小结
1.今天 当我 执行 Git add somefile 的时候,出现 如下 错误: If no other git process is currently running, this prob ...
- SEO误区之——静态化页面
你随便去找一个做SEO的人或者一个公司,他百分之百会让你把网页弄成纯静态页面,然后告诉你这样对搜索引擎是如何如何地好,那么我告诉你,这个做 SEO的,肯定不专业. 网页静态化这个东西,纯属以讹传讹的事 ...
- Injection of resource dependencies failed解决办法总结
今天调试项目代码,出现的引resource的报错,查原因查了好长时间才找到,现在这里总结一下,以免以后忘掉以及给大家参考. 报错大致内容入下: org.springframework.beans.fa ...