2. 黄月英
(huangyueying.cpp/c/pas )
【问题描述】
xpp 每天研究天文学研究哲学,对于人生又有一些我们完全无法理解的思考。
在某天无聊学术之后, xpp 打开了 http://web.sanguosha.com, 准备用他心爱的黄月英
虐人。进入了八人身份局,作为一位主公,xpp 果断选了黄月英,用黄月英挑 7 人。
xpp 为什么喜欢黄月英这个武将呢?因为集智是个很牛逼的技能。
集智——每当你使用一张非延时类锦囊(在它结算之前)你可以立即摸一张牌。
可见集智这个技能如果用得好那么牌是摸不完的。于是 xpp 把 7 个人全部轻松干掉。
虽然 xpp 的集智永远都能摸锦囊, 但是他想到了这样一个问题: 由于黄月英是一个富有
智慧的人,所以 xpp 也要想一个富有智慧的问题,具体说来,他对牌上的数字产生了兴趣,
于是他想知道,牌上每个数字出现过多少次。
当然,要算牌上的数字太简单了。所以 xpp 要扩大范围。
xpp 正在考虑这样一个问题:从一个数字 a 到另一个数字 b 之间,从 0 到 9 的每个数字
出现过多少次。
xpp 智商过于强大,不屑于想此等低端问题,然后你就要把这道题做出来。
【输入】
输入文件名为 huangyueying.in。
共一行,每行两个整数,分别为 a,b。
【输出】
输出文件名为 huangyueying.out。
输出共一行,包含 10 个整数,分别代表从 0 到 9 的数字各出现过多少次。
【输入输出样例】
huangyueying.in

24 69

huangyueying.out

4 4 10 14 15 15 15 5 5 5
【数据范围】
对于 30%的数据,a≤b≤1000000。
对于 100%的数据,a≤b≤10^12。

————————————————题解

一道极为水的数位dp,但我一直没调出来

原先统计的时候没有统计前缀0,单纯算每个数,觉得去前导0太麻烦,然后就再也调不通了,后来看题解发现其实去的话也不是那么麻烦……然后就过了

【老司机的数据十分坑】

就是我们算4997,我们加上000-999(搞掉前缀0),加上1000-1999,加上2000-2999,加上3000-3999,加上998个4,然后我们再搞下一位……第一位4我们可以扔掉不管

正确性写个暴力对拍就知道了

 #include <iostream>
#include <string.h>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <ctime>
#define ivorysi
#define mo 10007
#define siji(i,x,y) for(int i=(x);i<=(y);i++)
#define gongzi(j,x,y) for(int j=(x);j>=(y);j--)
#define xiaosiji(i,x,y) for(int i=(x);i<(y);i++)
#define sigongzi(j,x,y) for(int j=(x);j>(y);j--)
#define ivory(i,x) for(int i=head[x];i;i=edge[i].next)
#define pii pair<int,int>
#define fi first
#define se second
#define inf 10000000
using namespace std;
typedef long long ll;
ll dp[][][];//dp(i,j,k)i位数,j开头,k的个数
ll num[]={//为啥我sb到打了这个表
,
,
,
,
,
,
,
,
,
1000000000LL,
10000000000LL,
100000000000LL
};
void init() {
siji(i,,) {
dp[][i][i]=;
}
siji(i,,) {
siji(j,,) {
siji(k,,) {
siji(h,,) {
dp[i][j][k]+=dp[i-][h][k];
}
}
dp[i][j][j]+=num[i-];
}
}
siji(i,,) {
siji(j,,) {
siji(k,,) {
dp[i][j][k]+=dp[i][j-][k];
}
}
}
}
ll a,b;
ll ansa[],ansb[];
void query(ll c,ll *arr) {
if(c==-) return ;
ll tmp=c;
int len=,x[];
while(tmp) {
x[++len]=tmp%;
tmp/=;
}
gongzi(i,len,) {
if(x[i]!=) {
siji(k,,){
arr[k]+=dp[i-][][k];
}
if(i==len) siji(k,,i-) arr[]-=num[k];
/*
假如我们做的是000-999
我们要搞掉000-009两次0
搞掉010-099一次0
这要合起来我们搞一遍000-099一次0(100个0)
搞000-009一次0(10个0)
*/
if(i!=len)arr[]+=num[i-];
}
xiaosiji(p,,x[i]) {
siji(k,,) {
arr[k]+=dp[i-][][k];
}
arr[p]+=num[i-];
}
arr[x[i]]+=c%num[i-]+;//加上这一位后面数
}
siji(i,,x[]) ++arr[i];
}
int main() {
#ifdef ivorysi
freopen("huangyueying.in","r",stdin);
freopen("huangyueying.out","w",stdout);
#else
freopen("f1.in","r",stdin);
#endif
scanf("%I64d%I64d",&a,&b);
init();
query(a-,ansa);
query(b,ansb);
siji(i,,) {
printf("%I64d%c",ansb[i]-ansa[i]," \n"[i==]);
}
return ;
}

老司机的奇怪noip模拟T2-huangyueying的更多相关文章

  1. 老司机的奇怪noip模拟T1-guanyu

    1. 关羽(guanyu.cpp/c/pas )[问题描述]xpp 每天研究天文学研究哲学,对于人生又有一些我们完全无法理解的思考.在某天无聊学术之后, xpp 打开了 http://web.sang ...

  2. 老司机的奇怪noip模拟T3-zhugeliang

    3. 诸葛亮(zhugeliang.cpp/c/pas )[问题描述]xpp 每天研究天文学研究哲学,对于人生又有一些我们完全无法理解的思考.在某天无聊学术之后, xpp 打开了 http://web ...

  3. NOIP 模拟 $18\; \rm 老司机的狂欢$

    题解 \(by\;zj\varphi\) 一道很有趣的题,我用的动态开点线段树和倍增 首先对于第一问,不难想到要二分,二分时间,因为时间长一定不会比时间短能跑的人多 那么如何 check,先将所有老司 ...

  4. 2019.7.29 NOIP模拟测试10 反思总结【T2补全】

    这次意外考得不错…但是并没有太多厉害的地方,因为我只是打满了暴力[还没去推T3] 第一题折腾了一个小时,看了看时间先去写第二题了.第二题尝试了半天还是只写了三十分的暴力,然后看到第三题是期望,本能排斥 ...

  5. noip模拟6(T2更新

    由于蒟弱目前还没调出T1和T2,所以先写T3和T4.(T1T2更完辣! update in 6.12 07:19 T3 大佬 题目描述: 他发现katarina大佬真是太强了,于是就学习了一下kata ...

  6. [CSP-S模拟测试]:老司机的狂欢(LIS+LCA)

    题目背景 光阴荏苒.不过,两个人还在,两支车队还在,熟悉的道路.熟悉的风景,也都还在.只是,这一次,没有了你死我活的博弈,似乎和谐了许多.然而在机房是不允许游戏的,所以班长$XZY$对游戏界面进行了降 ...

  7. NOIP 模拟4 T2

    本题属于二和一问题 子问题相互对称 考虑对于问题一:知a求b 那么根据b数组定义式 显然能发现问题在于如何求dis(最短路) 有很多算法可供选择 dijsktra,floyed,bfs/dfs,spf ...

  8. NOIP模拟赛-2018.11.7

    NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...

  9. NOIP模拟赛-2018.11.6

    NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...

随机推荐

  1. context.response.end()和return的区别

    最近忽然想起这个问题,上网查了很多,觉得这个网友回答的很给力,从本质上剖析了问题.最后发现这篇文章也是转载自博客园的一位网友.http://www.cnblogs.com/adolphyang/p/4 ...

  2. 【Java每日一题】20170113

    20170112问题解析请点击今日问题下方的"[Java每日一题]20170113"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...

  3. 将前台input中的数据异步传到后台并存入数据库

    将前台input中的数据异步传到后台并存入数据库 先看图: 利用ajax异步交互数据,并不是以json数组的形式将数据传到后台,而是利用字符数组的形式将其传到后台.动态新增每一行数据,将每一列对应的数 ...

  4. Ajax beforeSend和complete 方法与防止重复提交

    $.ajax({ beforeSend: function(){ // Handle the beforeSend event }, complete: function(){ // Handle t ...

  5. 动态网站加速,cdn义不容辞

    "双十一"大战已经落下帷幕,各大电商纷纷拿出了亮眼的成绩单,但在这些成绩单的背后,CDN加速技术是功不可没的.随着互联网的发展,电商.视频直播等网站的火热,以及各个云加速平台的流行 ...

  6. Nuget 学习三

    后期管理: 登录 nuget 官网 https://www.nuget.org/ 可以搜索到自己的包: 点击进入,可进一步操作 如果你需要给自己的类型新增其他功能,或者修改之前的bug(反正就是修改代 ...

  7. Egret --视觉编程,显示对象,事件

    1,在egret中,视觉图形都是由显示对象和显示对象容器组成的: 显示对象:准确的说,就是在舞台上显示出来的,包括能真实看见的图形,文字,图片,视频等:也包括不能看见但真实存在的显示对象容器: 一:显 ...

  8. C# 3.0相比C# 2.0增加的功能

    1.自动属性 (1)自动属性(Auto-Implemented Properties),C#自动属性可以避免原来我们手工的来声明一个私有成员变量以及和属性get,set的书写. public clas ...

  9. 今天学习的裸板驱动之GPIO实验学习心得

    GPIO分成很多组今天学习的这个芯片的GPIO有GPA-GPJ个组.具体可在芯片手册中看到. GPIO有很多寄存器,今天学习的这个芯片,他的寄存器分为以下几种类型: (1)端口控制寄存器 (2)端口数 ...

  10. IOS 加载网络图片2

    //1. NSData dataWithContentsOfURL // [self.icon setImage:[UIImage imageWithData:[NSData dataWithCont ...