BZOJ 1974 [Sdoi2010]auction 代码拍卖会 ——动态规划
把每一位上不递减的数拆成1+11+11111+11111+.....
然后就可以把巨大的N从复杂度中消掉,因为随着长度的增加1...111%p出现了循环节。
然后就是从n个数中选出几个使他们结果为0(mod p)
然后就可以DP了,因为不能有前导零,需要最后再加上以一个数。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (ll i=j;i<=k;++i)
#define D(i,j,k) for (ll i=j;i>=k;--i)
#define ll long long
#define mod 999911659LL
ll x,n,p,cnt[505],tot,sz,now=0,pre=1,add,flag[505],pp=0;
ll dp[2][510][10],fac[20],fac_inv[20];
ll C(ll n,ll m)
{
ll ret=fac_inv[m];
for (n%=mod;m--;ret=1LL*ret*n%mod,n--);
return ret;
} ll qpow(ll a,ll b)
{
ll ret=1;
while (b)
{
if (b&1) (ret*=a)%=mod;
(a*=a)%=mod;
b>>=1;
}
return ret;
} int main()
{
scanf("%lld%lld",&n,&p); add=x=1;tot=0; x%=p;
for (tot=0;tot<n;++tot)
{
if (cnt[x]) break;
flag[x]=++pp;
cnt[x]++; add=x;
x=(x*10+1)%p;
}
sz=(n-tot)/(pp+1-flag[x]);
tot=(n-tot)%(pp+1-flag[x]);
F(i,0,p-1) if (flag[i]>=flag[x]&&flag[i]<=pp)cnt[i]=cnt[i]*(sz+1);
for (ll i=0;i<tot;++i) cnt[x]++,add=x,x=(x*10+1)%p;
F(i,0,p-1) cnt[i]%=mod;
fac[0]=1;F(i,1,15) fac[i]=(fac[i-1]*i)%mod;
add=(p-add)%p;
F(i,0,15) fac_inv[i]=qpow(fac[i],mod-2);
now=1; pre=0;
memset(dp[now],0,sizeof dp[now]);
dp[now][0][0]=1; if (cnt[0]) F(i,1,8) dp[now][0][i]=C(cnt[0]+i-1,i);
F(i,1,p-1) if (cnt[i]){
now^=1;pre^=1;
memset(dp[now],0,sizeof dp[now]);
F(j,0,p-1) F(k,0,8) if (dp[pre][j][k])
F(l,0,9LL-k-1)
dp[now][(j+i*l)%p][k+l]=(dp[now][(j+i*l)%p][k+l]+1LL*dp[pre][j][k]*C(cnt[i]+l-1,l))%mod;
}
ll ans=0;
F(i,0,8) (ans+=dp[now][add][i])%=mod;
printf("%lld\n",ans);
}
BZOJ 1974 [Sdoi2010]auction 代码拍卖会 ——动态规划的更多相关文章
- BZOJ 1974: [Sdoi2010]auction 代码拍卖会( dp )
在1, 11, 111……中选<=8个, + 11..(n个1)拼出所有可能...这些数mod p至多有p中可能, 找出循环的处理一下. 那么dp就很显然了...dp(i, j, k)表示前i种 ...
- BZOJ 1974 [Sdoi2010] auction 代码拍卖会(数位dp)
题目描述 随着iPig在P++语言上的造诣日益提升,他形成了自己一套完整的代码库.猪王国想参加POI的童鞋们都争先恐后问iPig索要代码库.iPig不想把代码库给所有想要的小猪,只想给其中的一部分既关 ...
- Bzoj1974 [Sdoi2010]auction 代码拍卖会
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 375 Solved: 151 Description 随着iPig在P++语言上的造诣日益提升,他形成 ...
- 【BZOJ-1974】auction代码拍卖会 DP + 排列组合
1974: [Sdoi2010]auction 代码拍卖会 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 305 Solved: 122[Submit ...
- bzoj 1974: [Sdoi2010]代码拍卖会
Description 随着iPig在P++语言上的造诣日益提升,他形成了自己一套完整的代 码库.猪王国想参加POI的童鞋们都争先恐后问iPig索要代码库.iPi g不想把代码库给所有想要的小猪,只想 ...
- SDOI2010代码拍卖会 (计数类DP)
P2481 SDOI2010代码拍卖会 $ solution: $ 这道题调了好久好久,久到都要放弃了.洛谷的第五个点是真的强,简简单单一个1,调了快4个小时! 这道题第一眼怎么都是数位DP,奈何数据 ...
- 【BZOJ1925】[SDOI2010]地精部落(动态规划)
[BZOJ1925][SDOI2010]地精部落(动态规划) 题面 BZOJ 洛谷 题解 一道性质\(dp\)题.(所以当然是照搬学长PPT了啊 先来罗列性质,我们称题目所求的序列为抖动序列: 一个抖 ...
- [SDOI2010]代码拍卖会
题目描述 随着iPig在P++语言上的造诣日益提升,他形成了自己一套完整的代码库.猪王国想参加POI的童鞋们都争先恐后问iPig索要代码库.iPig不想把代码库给所有想要的小猪,只想给其中的一部分既关 ...
- [BZOJ1974][SDOI2010]代码拍卖会[插板法]
题意 询问有多少个数位为 \(n\) 的形如 \(11223333444589\) 的数位值不下降的数字在\(\mod p\) 的意义下同余 \(0\). $n\leq 10^{18} ,p\leq ...
随机推荐
- ios 自定义加载动画效果
在开发过程中,可能会遇到各种不同的场景需要等待加载成功后才能显示数据.以下是自定义的一个动画加载view效果. 在UIViewController的中加载等到效果,如下 - (void)vi ...
- 使用POI创建word表格-在表格单元格中创建子表格
要实现的功能如下:表格中的单元格中有子表格 实现代码如下: XWPFParagraph cellPara = row.getCell(j).getParagraphArray(0); //row.ge ...
- Linux中yum、rpm、configure使用介绍
安装程序命令介绍 安装包选择策略:能上外网:yum方式.绿色方式->不能上外网:rpm方式.configure方式 1.yum命令yum安装包时,会包所依赖的包也会安装到系统,将源换成163的源 ...
- python打开文件可以有多种模式
一.python打开文件可以有多种模式,读模式.写模式.追加模式,同时读写的模式等等,这里主要介绍同时进行读写的模式r+ python通过open方法打开文件 file_handler = open( ...
- Django ORM 一对一,一对多,多对多, 添加,批量插入和查询
模型类 class Book(models.Model): nid = models.AutoField(primary_key=True) title = models.CharField(max_ ...
- python 基础之运算符
运算符 a=10 ,b=20 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘 ...
- vue计算属性无法监听到数组内部变化
计算属性可以帮助我们简化代码,做到实时更新,不用再自己添加function去修改data. 首先看一下计算属性的基本写法(摘自官网) var vm = new Vue({ el: '#demo', d ...
- quartz测试类
package demo.mytest; import java.text.ParseException; import org.quartz.CronTrigger;import org.quart ...
- Vue构建项目
构建Vue项目 按照官网教程安装 //先安装脚手架 cnpm i -g vue-cli //查看项目目标列表: webpack browserify pwa 等项目模板 vue list //使用we ...
- javascript设计模式(张容铭) 第14章 超值午餐-组合模式 学习笔记
JS 组合模式更常用于创建表单上,比如注册页面可能有不同的表单提交模块.对于这些需求我们只需要有基本的个体,然后通过一定的组合即可实现,比如下面这个页面样式(如图14-2所示),我们来用组合模式实现. ...