SCOI2013 数数
题解:
很玄学的一道数位$dp$,看了很多篇题解才懂。
直接挂$l$的题解。
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 100050
#define ll long long
#define MOD 20130427
inline int rd()
{
int f=,c=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){c=*c+ch-'';ch=getchar();}
return f*c;
}
ll b;
ll L[N],l,R[N],r;
ll f[N][],g[N][];
ll h[N],s[N];
ll sol(ll *x,int n)
{
memset(f,,sizeof(f));
memset(g,,sizeof(g));
memset(h,,sizeof(h));
memset(s,,sizeof(s));
h[] = s[] = x[]-;
f[][] = g[][] = x[]*(x[]-)/;
f[][] = g[][] = x[];
for(int i=;i<=n;i++)
{
s[i] = ( s[i-]*b%MOD + x[i] + b - )%MOD;
h[i] = ( (h[i-]+s[i-])*b%MOD + x[i]*i%MOD + b - )%MOD;
f[i][] = (f[i-][]*b%MOD*b%MOD
+(h[i-]+s[i-]+)%MOD*((b*(b-)/)%MOD)%MOD
+f[i-][]*x[i]%MOD*b%MOD
+1ll*i*((x[i]*(x[i]-)/)%MOD)%MOD)%MOD;
f[i][] = ( f[i-][]*b%MOD + x[i]*i%MOD )%MOD;
g[i][] = ( g[i-][]*b%MOD + f[i][] + g[i-][]*x[i]%MOD)%MOD;
g[i][] = ( g[i-][] + f[i][] )%MOD;
// printf("%lld %lld %lld %lld\n",f[i][0],f[i][1],g[i][0],g[i][1]);
}
return ((g[n][]+g[n][])%MOD+MOD)%MOD;
}
int main()
{
b = rd();
l = rd();
for(int i=;i<=l;i++)L[i]=rd();
L[l]--;
for(int i=l;L[i]<;i--)L[i-]--,L[i]+=b;
if(!L[])
{
l--;
for(int i=;i<=l;i++)L[i]=L[i+];
}
r = rd();
for(int i=;i<=r;i++)R[i]=rd();
printf("%lld\n",((sol(R,r)-sol(L,l))%MOD+MOD)%MOD);
return ;
}
SCOI2013 数数的更多相关文章
- 洛谷:P3281 [SCOI2013]数数 (优秀的解法)
刷了这么久的数位 dp ,照样被这题虐,还从早上虐到晚上,对自己无语...(机房里又是只有我一个人,寂寞.) 题目:洛谷P3281 [SCOI2013]数数 题目描述 Fish 是一条生活在海里的鱼, ...
- 2019.03.28 bzoj3326: [Scoi2013]数数(数位dp)
传送门 题意: 一个人数数,规则如下: 确定数数的进制B 确定一个数数的区间[L, R] 对于[L, R] 间的每一个数,把该数视为一个字符串,列出该字符串的所有连续子串对应的B进制数的值. 对所有列 ...
- bzoj3326: [Scoi2013]数数
Description Fish 是一条生活在海里的鱼,有一天他很无聊,就开始数数玩. 他数数玩的具体规则是: 1. 确定数数的进制B 2. 确定一个数数的区间[L, R] 3. 对于[L, R] 间 ...
- 【BZOJ 3326】[Scoi2013]数数
题目描述 Fish 是一条生活在海里的鱼,有一天他很无聊,就开始数数玩.他数数玩的具体规则是: 确定数数的进制B 确定一个数数的区间[L, R] 对于[L, R] 间的每一个数,把该数视为一个字符串, ...
- BZOJ 3326 [SCOI2013]数数 (数位DP)
洛谷传送门 题目: Fish 是一条生活在海里的鱼,有一天他很无聊,就开始数数玩.他数数玩的具体规则是: 确定数数的进制$B$ 确定一个数数的区间$[L, R]$ 对于$[L, R] $间的每一个数, ...
- bzoj 3530: [Sdoi2014]数数 数位dp
题目 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运数. ...
- 【BZOJ】【3530】【SDOI2014】数数
AC自动机/数位DP orz zyf 好题啊= =同时加深了我对AC自动机(这个应该可以叫Trie图了吧……出边补全!)和数位DP的理解……不过不能自己写出来还真是弱…… /************* ...
- BZOJ3530: [Sdoi2014]数数
3530: [Sdoi2014]数数 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 322 Solved: 188[Submit][Status] ...
- 【HDU3530】 [Sdoi2014]数数 (AC自动机+数位DP)
3530: [Sdoi2014]数数 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 682 Solved: 364 Description 我们称一 ...
- COJ 0036 数数happy有多少个?
数数happy有多少个? 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 图图是个爱动脑子.观察能力很强的好学生.近期他正学英语 ...
随机推荐
- 洛谷 - P2045 - 方格取数加强版 - 费用流
原来这种题的解法是费用流. 从一个方格的左上走到右下,最多走k次,每个数最多拿走一次. 每次走动的流量设为1,起始点拆点成限制流量k. 每个点拆成两条路,一条路限制流量1,费用为价值相反数.另一条路无 ...
- HDU5110:Alexandra and COS(分块+容斥)
传送门 题意 给出\(n*m\)的矩阵,'X'代表treasure.\(q\)个询问,每次询问(x,y)且频率为d的潜艇能探索到多少财富.探索范围要求abs(x1-x)>=abs(y1-y),也 ...
- MongoDb 查看用户名列表 , 修改用户密码
修改用户密码: db.addUser("java","java"); 查看一下所有的用户 , 查看当前Db的用户名 db.system.users.find ...
- P1251 递推专练3
递推专练3 描述 Description 圆周上有N个点.连接任意多条(可能是0条)不相交的弦(共用端点也算相交)共有多少种方案? 输入格式 Input Format 读入一个数N.<=N< ...
- selenium中Xpath和CSS Selector的使用方法
一.selenium中Xpath的使用方法 1. 什么是xpath? Xpath是XML的路径语言,通俗一点讲就是通过元素的路径来查找这个标签元素 2. 练习Xpath的工具 火狐浏览器,下载插件Fi ...
- Tcp实现省略编码
import socket class My_socket(socket.socket): def __init__(self, encoding='utf-8'): self.encoding = ...
- Maxim Buys an Apartment CodeForces - 854B
题意:已知一条街上有n幢房子,依次的编号为1~n,其中有k幢已经卖出去了但是不知道是哪k幢.当且仅当一幢房子没有卖出去且其两旁至少有一幢房子卖出去了的时候,认为这幢房子是好的.问这n幢房子中好的房子最 ...
- 2017zstu新生赛
1.b^3 - a^3 = c(zy) zy说要卡nlogn的,然而他实际给的组数只有100组,然后因为在windows下随机的,所以给出的 c <= 100000.然后只要胆子大.... 通过 ...
- 关于BMP
关于BMP位图的资料网上有很多,内容也比较基础.本文实现BMP位图的读取.显示.保存,并对一些重要的问题进行说明(包括字节对齐.内存中的存储顺序.调色板). BMP文件共包括文件头.信息头.调色板(位 ...
- 转 做了两款数据库监控工具(mysql and nosql),打算在近期开源
http://www.cnblogs.com/leefreeman/p/7297549.html 监控指标:https://www.linuxidc.com/Linux/2015-08/122009. ...