bzoj 1026 DP,数位统计
2013-11-20 08:11
原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1026
首先我们用w[i,j]表示最高位是第i位,且是j的windy数个数
那么我们可以写出转移
w[i,j]:=w[i-1,k] abs(k-j)>=2
首先对于询问的a,b区间,我们可以转化成求1-a的个数,1-b的个数,然后差就行了
那么我们要求的就是1-x之间的windy数
假设x一共有len位,那么我们求len-1位以下的windy数可以直接用w算出来,直接
累加w[i,j]就行了
那么我们对于len位的数,只需要改变枚举的上界就好了,相当于固定第i位,求第i+1位的
情况,然后特判下如果abs(c[i]-c[i+1])<2(c[i]为x的第i位)直接退出就行了
/**************************************************************
Problem:
User: BLADEVIL
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ //By BLADEVIL
var
w :array[..,-..] of longint;
c :array[..] of longint;
a, b :longint; function ask(x:longint):longint;
var
len, Sum, i, j :longint; begin
if x= then exit();
len:=;
while x> do
begin
inc(len);
c[len]:=x mod ;
x:=x div ;
end;
ask:=;
for i:= to len- do
for j:= to do
ask:=ask+w[i,j]; for j:= to c[len]- do
ask:=ask+w[len,j]; for i:=len- downto do
begin
for j:= to c[i]- do
if abs(c[i+]-j)>= then ask:=ask+w[i,j];
if abs(c[i+]-c[i])< then break;
end;
end; procedure main;
var
i, j, k :longint; begin
for i:= to do w[,i]:=;
for i:= to do
for j:= to do
for k:= to do
if abs(j-k)>= then w[i,j]:=w[i,j]+w[i-,k];
readln(a,b);
writeln(ask(b+)-ask(a));
end; begin
main;
end.
bzoj 1026 DP,数位统计的更多相关文章
- [BZOJ 1026] [SCOI 2009] Windy数 【数位DP】
题目链接:BZOJ - 1026 题目分析 这道题是一道数位DP的基础题,对于完全不会数位DP的我来说也是难题.. 对于询问 [a,b] 的区间的答案,我们对询问进行差分,求 [0,b] - [0,a ...
- 动态规划——区间DP,计数类DP,数位统计DP
本博客部分内容参考:<算法竞赛进阶指南> 一.区间DP 划重点: 以前所学过的线性DP一般从初始状态开始,沿着阶段的扩张向某个方向递推,直至计算出目标状态. 区间DP也属于线性DP的一种, ...
- Codeforces 55D Beautiful Number (数位统计)
把数位dp写成记忆化搜索的形式,方法很赞,代码量少了很多. 下面为转载内容: a positive integer number is beautiful if and only if it is ...
- [DP]数位DP总结
数位DP总结 By Wine93 2013.7 1.学习链接 [数位DP] Step by Step http://blog.csdn.net/dslovemz/article/details/ ...
- BZOJ 1588: [HNOI2002]营业额统计 双向链表
BZOJ 1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 512 MBSubmit: 9619 Solved: 3287 题目连接 ht ...
- bzoj 3622 DP + 容斥
LINK 题意:给出n,k,有a,b两种值,a和b间互相配对,求$a>b$的配对组数-b>a的配对组数恰好等于k的情况有多少种. 思路:粗看会想这是道容斥组合题,但关键在于如何得到每个a[ ...
- [ACM] ural 1057 Amount of degrees (数位统计)
1057. Amount of Degrees Time limit: 1.0 second Memory limit: 64 MB Create a code to determine the am ...
- bzoj 1026 [SCOI2009]windy数(数位DP)
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4550 Solved: 2039[Submit][Sta ...
- [bzoj 1026]windy数(数位DP)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1026 分析: 简单的数位DP啦 f[i][j]表示数字有i位,最高位的数值为j的windy数总 ...
随机推荐
- 「日常训练」「小专题·图论」Domino Effect(1-5)
题意 分析 这题几乎就是一条dijkstra的问题.但是,如何考虑倒在中间? 要意识到这题求什么:单源最短路的最大值.那么有没有更大的?倒在中间有可能会使它更大. 但是要注意一个问题:不要把不存在的边 ...
- webpack loader之css、scss、less、stylus安装
1.打包css,需要安装css-loader和style-loader yarn add --dev css-loader style-loader 或者 npm install --save-dev ...
- Qt Qwdget 汽车仪表知识点拆解6 自定义控件
先贴上效果图,注意,没有写逻辑,都是乱动的 这里说一下控件自定义 图中标出的部分都是自定义的控件 这里如果我们有批量类似的功能,就可以使用自定义控件的方式,这里我已下面的自定义控件说一下,上面的在上一 ...
- 使用hibernate连接Oracle时的权限问题
在使用hibernate对象关系映射连接和创建表的时候,会涉及到很多权限问题,有些数据库管理会将权限设的很细,我们可以根据后台日志错误和异常信息作出判断. 比如下图所示这个错误(这是我在给银行投产系统 ...
- 容器基础(七): 使用docker compose部署程序
配置 在上一节的基础上, 增加如下的docker-compose.yml文件, 然后用docker-compose up命令启动容器进行部署: version: " services: s ...
- POJ 1015 Jury Compromise (动态规划)
dp[i][j]代表选了i个人,D(J)-P(J)的值为j的状态下,D(J)+P(J)的最大和. #include <cstdio> #include <cstring> #i ...
- NO5——素数筛选
#include <stdio.h> int main() { ]={}; ;i<=;i++) a[i]=; ;i<=;i++) if(a[i]) ;j+=i) a[j]=; ...
- JavaWeb 基于Session的用户登陆注销实现
通过Session来存储用户的部分登陆信息来验证用户是否在线,这应该时最容易实现的一种Web端方案,本文以SSM(Spring.SpringMVC.myBatis)框架为载体,来具体实现这套登陆系统. ...
- 浅析Python中的main函数
Python作为一门较为灵活的解释型脚本语言,其中定义的main()函数只有当该Python脚本直接作为执行程序时才会执行: 当该python脚本被作为模块(module)引入(import)时,其中 ...
- SQL Server Profiler的简单使用,方便查找和发现SQL执行的效率和语句问题
1 打开Server Profiler 2 去掉不必要的干扰,数据库的连接和断开之类的 3. 选择“显示所有列”,之后在列表中,勾选“DatabaseName”项. 4设置筛选器,这里设置只是过滤数据 ...