设为首页 加入收藏

TOP

[ACM] hdu 3555 Bomb (数位DP,统计1-N中含有“49”的总数)(二)
2015-07-20 17:57:48 来源: 作者: 【 】 浏览:4
Tags:ACM hdu 3555 Bomb (数位 统计 1-N 含有 总数
;//低位中含有49,高位随便一个1,2,3....bit[i]都可以,bit[i]是代表有几个数字,比如bit[i]=5,那么代表有五个数字,0,1,2,3,4,比5小。 if(!has) { if(bit[i]>4) ans+=dp[i-1][1];//低位中高位是9,前面加上4就可以了 } else ans+=(dp[i-1][0])*bit[i];//如果有49,就随便选了,比如 495的时候,有490 491 492 493 494 //上面这句话困扰了我一天多的时间。为什么不写(d[i-1][0]+dp[i-1][2])*bit[i]呢,前面已经出现过49 //那么低位任意选择都可以,dp[i-1][0]是那些低位不出现49的,dp[i-1][2]是那些低位出现49的,按理说应该 //加上啊,BUT!!!清注意循环里面的第一句ans+=dp[i-1][2]*bit[i]; 前面已经加上了dp[i-1][2]低位有 //49的情况了,哎,欲哭无泪........ if(bit[i+1]==4&&bit[i]==9) has=true; } if(has) ans++; return ans; } //以491为例,先求出所有比400小的数中有多少符合题意的,然后4这一位确定以后,再求所有比490小,再求出所有比491小 //i=3 求出数 049 149 249 349 //i=2 求出数 449 //i=1 求出数 490 //自身包含49 所以求出数491 int main() { init(); int t;cin>>t; while(t--) { cin>>n; cout<


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uva 1500 - Alice and Bob(推理) 下一篇UVA1508-Equipment

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: