BZOJ 1974 [Sdoi2010]auction 代码拍卖会 | 51nod 1261 上升数
来源:互联网 发布:淘宝客服有什么权限 编辑:程序博客网 时间:2024/04/28 15:00
题目:
http://www.lydsy.com/JudgeOnline/problem.php?id=1974
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1261
题意:
一个10进制表示的正整数,如果从左到右,每一位的数字都不小于前一位的数字,则被称为上升数。
给出正整数
题解:
上升数可以拆成不超过9个类似
令
注意
时间复杂度
注意
代码:
#include <cstdio>typedef long long LL;const int maxm = 510, maxd = 10, mod = 999911659;LL n;int m, a[maxm], pos[maxm], s[maxm], val, inv[maxd], f[maxd][maxm], ans;int main(){ scanf("%lld%d", &n, &m); a[1] = 1 % m; pos[a[1]] = 1; for(int i = 2; i <= m + 1; ++i) { a[i] = (a[i - 1] * 10 + 1) % m; if(pos[a[i]]) { int beg = pos[a[i]], end = i, len = end - beg; for(int j = 1; j < beg && j <= n; ++j) ++s[a[j]]; for(int j = 0; j < len && beg + j <= n; ++j) s[a[beg + j]] = (s[a[beg + j]] + (n - beg - j) / len + 1) % mod; val = n < beg ? a[n] : a[beg + (n - beg) % len]; --s[val]; if(s[val] < 0) s[val] += mod; break; } pos[a[i]] = i; } inv[1] = 1; for(int i = 2; i < maxd; ++i) inv[i] = mod - mod / i * (LL)inv[mod % i] % mod; f[0][0] = 1; for(int i = 0; i < m; ++i) { if(!s[i]) continue; for(int j = maxd - 1; j > 0; --j) { int coeff = 1; for(int k = 1; k <= j && coeff; ++k) { coeff = (LL)coeff * (s[i] - 1 + k) % mod * inv[k] % mod; for(int o = 0; o < m; ++o) f[j][(o + k * i) % m] = (f[j][(o + k * i) % m] + (LL)coeff * f[j - k][o]) % mod; } } } for(int i = 1; i < maxd; ++i) { int res = val * i % m; if(res) res = m - res; for(int j = 0; i + j < maxd; ++j) { ans += f[j][res]; if(ans >= mod) ans -= mod; } } printf("%d\n", ans); return 0;}
0 0
- BZOJ 1974 [Sdoi2010]auction 代码拍卖会 | 51nod 1261 上升数
- [DP] BZOJ 1974 [Sdoi2010]auction 代码拍卖会 & 51Nod 1261 上升数
- BZOJ 1974 [Sdoi2010] auction 代码拍卖会
- bzoj1974&jzoj1523 [Sdoi2010]auction 代码拍卖会
- bzoj1974 [Sdoi2010]代码拍卖会 循环+背包
- BZOJ 3930 [CQOI2015]选数 & 51nod 1244 莫比乌斯函数之和 & BZOJ 2301
- 51nod-1134最长上升子序列
- 51nod 1134 【最长上升子序列】
- 51Nod 逆序数
- 51 nod 数数字
- 51nod逆序数
- 51Nod 水仙花数
- 好数 51Nod
- 逆序数 51Nod
- 51 nod 数数字
- 逆序数 51Nod
- 【bzoj 1925】: [Sdoi2010]地精部落
- BZOJ-1923-外星千足虫-SDOI2010
- Java 4种方法实现冒泡排序算法
- [51]GSM短信控制灯的亮灭
- 微信公众号分享
- Linux sed命令
- vi/vim基本使用方法
- BZOJ 1974 [Sdoi2010]auction 代码拍卖会 | 51nod 1261 上升数
- 压缩跟踪代码
- svm支持向量机
- 信与信封问题
- php代码查看邮件是否已被阅读
- java.lang.UnsatisfiedLinkError: Couldn't load xxx from loader dalvik.system.PathClassLoader的终极解决方法
- 用数据结构的视角来分析list set和map
- OGNL表达式对集合的操作
- 设计模式-工厂方法模式