博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu5898 odd-even number(数位dp)
阅读量:6331 次
发布时间:2019-06-22

本文共 2098 字,大约阅读时间需要 6 分钟。

题意:

求L到R区间内,连续奇数个数是偶数,连续偶数个数是奇数的数的个数

思路:

裸数位dp,赛场上忘了不合法的break,妈的调了一个多小时简直是日了狗了!

本来就是蒟蒻还感冒了什么题都写不出来

 

/* ***********************************************Author        :devil************************************************ */#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f#define LL long long#define rep(i,a,b) for(int i=a;i<=b;i++)#define dep(i,a,b) for(int i=a;i>=b;i--)#define ou(a) printf("%d\n",a)#define pb push_back#define mkp make_pairtemplate
inline void rd(T &x){ char c=getchar();x=0;while(!isdigit(c))c=getchar();while(isdigit(c)){x=x*10+c-'0';c=getchar();}}#define IN freopen("in.txt","r",stdin);#define OUT freopen("out.txt","w",stdout);using namespace std;const int mod=1e9+7;const int N=310;LL dp[22][4];void init(){ dp[1][0]=1; dp[1][2]=1; for(int i=2;i<20;i++) { dp[i][0]=(dp[i-1][2]+dp[i-1][1])*5; dp[i][1]=dp[i-1][0]*5; dp[i][2]=(dp[i-1][1]+dp[i-1][3])*5; dp[i][3]=dp[i-1][2]*5; }}int bit[21];LL solve(LL n){ int len=0; while(n) { bit[++len]=n%10; n/=10; } bit[len+1]=0; LL ans=0; int tp=bit[len]/2; ans=ans+dp[len][1]*tp; if(bit[len]%2==0) tp--; ans=ans+dp[len][2]*tp; for(int i=len-1;i>=1;i--) { ans=ans+dp[i][1]*5; ans=ans+dp[i][2]*4; } int now=bit[len]%2,ln=1; for(int i=len-1;i>=1;i--) { if(now%2==1) { if(ln%2==1) { ans=ans+dp[i][0]*(bit[i]/2); if(bit[i]%2) ln++; else break; } else { int tp=bit[i]/2; ans=ans+dp[i][1]*tp; if(bit[i]%2!=0) tp++; ans=ans+dp[i][2]*tp; if(bit[i]%2) ln++; else { now=0; ln=1; } } } else { if(ln%2==1) { int tp=bit[i]/2; ans=ans+dp[i][1]*tp; if(bit[i]%2) tp++; ans=ans+dp[i][3]*tp; if(bit[i]%2) { now=1; ln=1; } else ln++; } else { int tp=bit[i]/2; if(bit[i]%2!=0) tp++; ans=ans+dp[i][2]*tp; if(bit[i]%2) break; else ln++; } } } return ans;}int main(){ init(); int t,cas=0; LL n,m; rd(t); while(t--) { scanf("%lld%lld",&n,&m); printf("Case #%d: %lld\n",++cas,solve(m+1)-solve(n)); } return 0;}

 

转载于:https://www.cnblogs.com/d-e-v-i-l/p/5894272.html

你可能感兴趣的文章
无线802.11n 2.4G与5G性能测试
查看>>
子域名信息收集攻略
查看>>
[Android]开发数独游戏思路分析过程
查看>>
SpreadJS 类Excel表格控件 - V12 新特性详解
查看>>
理解并取证:IPv6与IPv4在报文结构上的区别
查看>>
EOS主网上线只是开始,如何运营决定未来
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
(译)如何使用cocos2d和box2d来制作一个Breakout游戏:第一部分
查看>>
计算机图形学(一) 图形系统综述
查看>>
持续集成(CI)- 几种测试的区别(摘录)
查看>>
多用户虚拟Web3D环境Deep MatrixIP9 1.04发布
查看>>
求高手,求解释
查看>>
[MSSQL]NTILE另类分页有么有?!
查看>>
winform datagridview 通过弹出小窗口来隐藏列 和冻结窗口
查看>>
Jquery闪烁提示特效
查看>>
最佳6款用于移动网站开发的 jQuery 图片滑块插件
查看>>
C++ String
查看>>
获取系统托盘图标的坐标及文本
查看>>
log4j Test
查看>>
HDU 1255 覆盖的面积(矩形面积交)
查看>>