【BZOJ2425】[HAOI2010]计数(组合数学)
【BZOJ2425】[HAOI2010]计数(组合数学)
题面
题解
很容易的一道题目。
统计一下每个数位出现的次数,然后从前往后依次枚举每一位,表示前面都已经卡在了范围内,从这一位开始比目标小。
对于长度小于当前数的个数,我们可以默认它们有前导零就行了。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define ll long long
ll C[55][55],ans=1;
char s[50];
int n,cnt[10];
int main()
{
scanf("%s",s+1);n=strlen(s+1);C[0][0]=1;
for(int i=1;i<=n;++i)C[i][0]=1;
for(int i=1;i<=n;++i)
for(int j=1;j<=i;++j)
C[i][j]=C[i-1][j]+C[i-1][j-1];
for(int i=1;i<=n;++i)cnt[s[i]-48]+=1;
for(int i=1;i<=n;++i)
{
for(int j=0;j<s[i]-48;++j)
if(cnt[j]>=1)
{
cnt[j]-=1;ll ret=1;
for(int k=1,p=n-i;k<=9;++k)ret*=C[p][cnt[k]],p-=cnt[k];
ans+=ret;cnt[j]+=1;
}
cnt[s[i]-48]-=1;
}
cout<<ans-1<<endl;
return 0;
}
【BZOJ2425】[HAOI2010]计数(组合数学)的更多相关文章
- BZOJ2425: [HAOI2010]计数
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2425 其实能够构成的数就是原数的排列(算前导0),然后组合计数一下就可以了. #include ...
- bzoj千题计划178:bzoj2425: [HAOI2010]计数
http://www.lydsy.com/JudgeOnline/problem.php?id=2425 题意转化: 给定一个集合S,求S的全排列<给定排列 的排列个数 从最高位开始逐位枚举确定 ...
- BZOJ2425:[HAOI2010]计数(数位DP)
Description 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数.比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1 ...
- BZOJ2425 [HAOI2010]计数 【数位dp】
题目 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数.比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. 现 ...
- bzoj 2425 [HAOI2010]计数 dp+组合计数
[HAOI2010]计数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 451 Solved: 289[Submit][Status][Discus ...
- [HAOI2010]计数(组合数学)(数位DP)
原题题意也就是给的数的全排列小于原数的个数. 我们可以很容易的想到重复元素的排列个数的公式. 但是我们发现阶乘的话很快就会爆long long啊(如果您想写高精请便) 之后我就尝试质因数分解....但 ...
- BZOJ2425:[HAOI2010]计数——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=2425 https://www.luogu.org/problemnew/show/P2518 你有 ...
- BZOJ 1211: [HNOI2004]树的计数( 组合数学 )
知道prufer序列就能写...就是求个可重集的排列...先判掉奇怪的情况, 然后答案是(N-2)!/π(d[i]-1)! -------------------------------------- ...
- bzoj-4517 4517: [Sdoi2016]排列计数(组合数学)
题目链接: 4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 846 Solved: 530[Submit][ ...
随机推荐
- 大话设计模式之模板模式 C#
学无止境,精益求精 十年河东,十年河西,莫欺少年穷 今天一起探讨模板模式,如下: 一.概念 上一篇文章讲了大话设计模式:原型模式,原型模式主要是通过Clone()方法<深浅复制>,创建新的 ...
- 在平衡树的海洋中畅游(一)——Treap
记得有一天翔哥毒奶我们: 当你们已经在平衡树的海洋中畅游时,我还在线段树的泥沼中挣扎. 我觉得其实像我这种对平衡树一无所知的蒟蒻也要开一开数据结构了. 然后花了一天啃了下最简单的平衡树Treap,感觉 ...
- [Spark][Python]DataFrame的左右连接例子
[Spark][Python]DataFrame的左右连接例子 $ hdfs dfs -cat people.json {"name":"Alice",&quo ...
- Python 学习 第八篇:函数2(参数、lamdba和函数属性)
函数的参数是参数暴露给外部的接口,向函数传递参数,可以控制函数的流程,函数可以0个.1个或多个参数:在Python中向函数传参,使用的是赋值方式. 一,传递参数 参数是通过赋值来传递的,传递参数的特点 ...
- D. Cutting Out
---恢复内容开始--- 链接 [https://codeforces.com/contest/1077/problem/D] 题意 给你n,k,n个数,找出长度为k,的子串(不需连续),使得该子串数 ...
- swap函数
#include<iostream> using namespace std; void swap(int& a,int& b){ int t=a; a=b; b=t; } ...
- 对MSF八个原则的思考
第一个原则,也是MSF中最基础的一个原则,推动信息共享与沟通.这个原则的一个特点是,对于团队成员的所有工作,都会被记录下来,包括走了弯路的.出现bug但已调试解决的部分.对于新加入团队的成员或者以前没 ...
- 小学四则运算APP 第一个冲刺阶段 第六天
团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第一次冲刺阶段时间:11.17~11.27 本次发布的是重新排列整齐ResultActivity的布局代码activity_result. ...
- [转]Spring通过@Value注解注入属性的几种方式
原文地址:https://blog.csdn.net/csujiangyu/article/details/50945486 ------------------------------------- ...
- Linux安装的分区问题
对于一般的外部SATA存储设备,在ubuntu中会显示在/etc/sd*中,例如: SATA1插槽上的文件名:/dev/sda SATA5插槽上的文件名:/dev/sdb USB磁盘:/dev/sdc ...