20140712 总结

今天是钟神出的题,也是他讲的课,简直是,10多张ppt,除了第一张写着“数据结构”之外,没有一片没有提到HJA....

如果这都不是真爱...

哎,果然是钟神最业界良心,还给了数据范围...

想了很久的classic,想起了MiddleNum,然后发现自己连EasyNum都没过....然后我就放弃治疗了

然后第k短路...曾经以为要必须用A*才行...然后捉摸着反正写不来,我就暴力枚举一次边,看看能不能在k==2的时候骗个几分...

最后骗了0分....

-----------------------------------------------------------------------------

Classic!

(classic.pas/c/cpp)

【题目描述】

今天讲的数据结构题在后面。

Classic是一个极富创意的成果。

还记得我曾经给你们讲过的东西吗?

求L到R之间各位数字和在x到y之间的数的和对1,000,000,007取模的值。

【输入格式】

第一行一个整数L。

第二行一个整数R。

第三行两个整数x、y。

【输出格式】

一行一个整数代表答案。

【样例输入】

1

100

4 13

【样例输出】

3575

【数据范围与规定】

对于30%的数据,0≤L≤R≤103

对于50%的数据,0≤L≤R≤109

对于80%的数据,0≤L≤R≤1018

对于100%的数据,0≤L≤R≤1050,0≤x≤y≤500。

题解:就是一个多mod几次的MiddleNum

 1 #define NOMBRE "classic"
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #define LL "%I64d"
 6
 7 const int MOD = 1000000007;
 8 const int MAXL = 60;
 9 const int MAXS = 600;
10
11 long long Pri, num[MAXL][MAXS][2][2], sum[MAXL][MAXS][2][2];
12 char InputC;
13 int x, y, a[MAXL][2], len[2];
14
15 void Init(int cj){
16     while ((InputC=getchar())!=‘\n‘)
17         a[++len[cj]][cj] = InputC-48;
18
19     num[1][0][1][cj] = 1;
20     for (register int i=1; i<=len[cj]; i++)
21         for (register int j=0; j<=i*9; j++){
22             for (register int l=0; l<=9; l++)
23                 (num[i+1][j+l][0][cj] += num[i][j][0][cj]%MOD) %= MOD,
24                 (sum[i+1][j+l][0][cj] += sum[i][j][0][cj]*10%MOD+l*num[i][j][0][cj]%MOD) %= MOD;
25             for (register int l=0; l<=a[i][cj]; l++)
26                 (num[i+1][j+l][l==a[i][cj]][cj] += num[i][j][1][cj]%MOD) %+ MOD,
27                 (sum[i+1][j+l][l==a[i][cj]][cj] += sum[i][j][1][cj]*10%MOD+l*num[i][j][1][cj]%MOD) %= MOD;
28         }
29 }
30
31 int main(){
32     freopen(NOMBRE ".in", "r", stdin);
33     freopen(NOMBRE ".out", "w", stdout);
34
35     memset(a, 0, sizeof(a));
36     memset(len, 0, sizeof(len));
37     memset(num, 0, sizeof(num));
38     memset(sum, 0, sizeof(sum));
39
40     Init(0), Init(1);
41     scanf("%d %d", &x, &y);
42
43     for (register int i=x; i<=y; i++)
44         Pri = (Pri+sum[len[1]+1][i][0][1]+sum[len[1]+1][i][1][1]-sum[len[0]+1][i][0][0]-sum[len[0]+1][i][1][0])%MOD;
45
46     long long Ts = 0, Ta = 0;
47     for (int i=1; i<=len[0]; i++)
48         Ts += a[i][0], Ta = (Ta*10+a[i][0])%MOD;
49     if (x<=Ts && Ts<=y) Pri = (Pri+Ta)%MOD;
50     while (Pri<0) Pri += MOD;
51
52     printf(LL "\n", Pri);
53 }

20140712 总结

时间: 2024-10-11 13:11:23

20140712 总结的相关文章

运维日记-Exchange服务器重新加域后处理-20140712

今天做实验的时候误将第二台exchange2013邮件服务器退域了,重新加域后导致原来的exchange服无法启动,建在该数据库的用户无法登陆,系统日志提示: 处理过程: 在域管理器添加该计算机exchange权限 重启服务器后恢复正常. 运维日记-Exchange服务器重新加域后处理-20140712

20140712 classic 数位DP

其实就是一道蛮简单的数位DP 考试的时候出了点小错导致基本Wa0 还好数据分治有30分- - num[i][j][k]表示前i位数字和为j的数的个数  k=0表示不顶上界  k=1表示顶上界 转移方程见代码 dp[i][j][k]表示前i位数字和为j的数的和 转移方程同见代码 1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 #define mod 1000000007 5 typedef long

Android 时间轴

效果图: 数据是随便填的,显得有点乱,但是不影响效果.实现方面主要是用ListView来实现,主要是根据ListView的item位置与上一条数据进行比较,来控制时间的显示隐藏效果.思路很简单,下面看代码实现: 首先是页面的整体布局,很简单,就一个ListView: res/layout/activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and

查找抄袭文章

“我最怕的就是计算机系的学生被别人说成是个带着厚眼镜的,只能够在电脑前编编程序”   相关文章: 1.2008-10-4 <学习软件工程的收获和体会>  作者:钻石之黎明 2.2008-12-10<学习软件工程的收获和体会> 作者foresee 3.2012.5.2 <学习软件工程心得体会> 作者:ヽoo惠のル  来源;  百度文库 4.2013-2-23<学习光盘总结48>  作者:nucling  来源:豆丁网 5.2014-6-25<软件工程心得

ACdream原创群赛__15

这场感觉题目确实还算可以,不过,说好的每题10s效果上却不理想.这个时限还算比较紧.因为时间不是按绝对的多出几秒来计算,而是几倍来计算的. 比赛做的不好,后面又去做了一下. A:典型的数位DP,一直坑在这里. E:求f(f(f(n)))%p.f()表示斐波那契数.关于求斐波那契数模的循环节是有特定的数学定理和方法的.我也不知道,但是看了结论之后自己会实现了.首先,把p因数分解,ai^pi,显然最终的循环节就等于这些单独因子计算循环节的lcm.同时ai^pi的循环节又是G(ai)*ai^(pi-1

2014年至今的博文目录(更新至2017年06月12日)

拓扑学中凝聚点的几个等价定义(2017-06-12 07:51) 江苏省2017年高等数学竞赛本二试题(含解答)(2017-06-10 20:59) 裴礼文数学分析中的典型问题与方法第4章一元函数积分学练习(2017-06-10 11:04) 2017年厦门大学第十四届景润杯数学竞赛试卷(数学类)评分标准(2017-06-05 15:31) 2017年华东师范大学数学竞赛(数学类)试题(2017-06-05 15:28) 裴礼文数学分析中的典型问题与方法第3章一元微分学练习(2017-05-30

博客资源目录,打开资源帖请先看主目录

有些资源标签无法显示,打开显示不完全.而且资源太多,打开每一页太很麻烦,我在此做一个目录贴.方便大家找到资源.  可以按下键盘[Ctrl+F键]打开查找选项.请看下图  查找关键字,会自动搜索有多少处,接下来按[下一个]就能查找出了. 关闭查找选项再按下键盘[Ctrl+F键]   [赏析类] 耳机少女精美图片 http://867258173.diandian.com/post/2013-07-24/40050548840  伊甸园eden剧情视频合集[地球上最后的恋爱物语]  http://8

Linux基础知识---计划任务

计划任务 所谓的计划任务是在未来某一特定的时间执行一次或多次特定的作业(任务).实现无需人工干预的情况下执行作业. 一.计划任务的分类 根据计划任务在未来被执行的次数,分为一次性计划任务和周期性计划任务. 一次性计划任务:只在未来的某一时间执行一次. 周期性计划任务:在未来某一特定时间内循环执行多次. 二.一次性计划任务 一次性计划任务常用的命令有at,batch. 1.设定一次性计划任务 1)at命令设定一次性计划任务,它是由atd后台进程管理的.要想设置一次性任务需启动atd服务进程.在Ce

【Hadoop基础教程】5、Hadoop之单词计数

单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的src/example目录下找到.单词计数主要完成的功能:统计一系列文本文件中每个单词出现的次数,如下图所示.本blog将通过分析WordCount源码来帮助大家摸清MapReduce程序的基本结构和运行机制. 开发环境 硬件环境:Centos 6.5 服务器4台(一台为Master节点,三台为Slave节点) 软件环境:Jav