sgu 365
来源:互联网 发布:淘宝内裤真人秀 编辑:程序博客网 时间:2024/04/28 22:04
数位DP。假设长度为s的数字,如果是题目中要求的数字时,肯定是每个位置i ,j,1--i非递减,j--s非递增,然后枚举每个点把左右两方相乘,但是想了想,这么简单的统计会造成很多重复,然后再分析,对于i,j无非三种情况i所在位置数字a>j所在位置数字b,a==b,a<b,先算1--s中的每个位置第一种情况的个数的和,然后发现a==b,a<b的所有情况都可化为第一种情况,所以就不用再求这两种情况的数目,因为第一种情况的所有满足题意的数字已经包括了后两种情况满足意一的数字,所以定义状态f[i][j]表示以数字j结尾的长度为i的非递减数字的个数,还有自己感觉数位DP最坑的地方就是细节的考虑
#include <iostream>#include <cstdio>#define LL long longusing namespace std;LL f[21][11];int main(){ int s; int i,j,k; for(i=0;i<10;i++) f[1][i]=1; f[0][0]=1;// for(i=2;i<=20;i++) { for(j=0;j<10;j++) { f[i][j]=0; for(k=0;k<=j;k++) { f[i][j]+=f[i-1][k]; //f2[i][j]+=f2[i-1][k]; } } } while(cin>>s) { LL sum=1;//时这个地方要设为1因为全为0的情况下面没有计算. for(i=1;i<=s;i++) { for(j=0;j<=9;j++) { for(k=0;k<j;k++) sum=sum+f[i][j]*f[s-i][k]; } } printf("%I64d\n",sum); } return 0;}
- sgu 365
- SGU
- SGU
- SGU
- SGU
- SGU
- SGU
- (SGU
- SGU
- SGU
- SGU
- SGU
- SGU
- SGU
- SGU
- SGU 365 Ships of the Desert dp
- SGU 365 Ships of the Desert 简单数位dp
- sgu 120
- Codeforces Round #178 (Div. 2)——A,B
- 如何检查 MDAC 版本
- Instrumentation 两种方法 premain Agent
- 《程序员的第一年》----------多页面要登录时,用继承基类方法
- PHP Simple HTML DOM解析器使用入门
- sgu 365
- linux下分析系统cpu使用率
- CentOS6.2报no acceptable C compiler found in $PATH的解决办法
- JAVA intern()方法学习
- JS 不会的要点
- Oracle Database 11g R2(发行版2)(客户端)安装步骤——图文版(附下载地址)
- iPhone IOS区域截图
- 组装电脑最容易犯的五大错误
- 在已有的ssm项目中添加xfire