【NOIP模拟】计数
来源:互联网 发布:苹果还是外星人 程序员 编辑:程序博客网 时间:2024/04/29 23:15
Description
Solution
还以为是数位DP呢,实际上还是数位DP,最简单的数位DP。
设f[i,0]和f[i,1]表示到当前第i位,取0和不取0的方案数,转移很显然f[i,0]=f[i-1,1],f[i,1]=(f[i-1,0]+f[i-1,1])*(k-1)。
但是直接做会爆,要打高精度。
十分的水……
Code
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)#define fod(i,a,b) for(i=a;i>=b;i--)using namespace std;const int maxn=18007;int i,j,k,l,t,n,m,ans,a,b,aa,bb;struct node{ int a[maxn];}c,d,e,f,g,h;node jia(node a,node b){ memset(e.a,0,sizeof(e.a)); int i,j,k=0;e.a[0]=max(a.a[0],b.a[0]); fo(i,1,e.a[0]){ e.a[i]=e.a[i]+k+a.a[i]+b.a[i]; k=e.a[i]/10; e.a[i]%=10; } if(k!=0)e.a[++e.a[0]]=k; return e;}void fu(node &a,node b){ int i; a.a[0]=b.a[0]; fo(i,1,a.a[0])a.a[i]=b.a[i];}int main(){ scanf("%d%d",&n,&k); a=0,b=k-1; while(b!=0){ d.a[++d.a[0]]=b%10; b/=10; } fo(i,2,n){ h=jia(c,d); fu(c,d); fu(g,h); memset(h.a,0,sizeof(h.a)); fo(j,1,k-1) h=jia(h,g); fu(d,h); } h=jia(c,d); fod(i,h.a[0],1)printf("%d",h.a[i]); printf("\n");}
1 0
- 【NOIP模拟】计数
- NOIP模拟题 2016.8.27 [贪心] [DP] [计数问题]
- 【NOIP模拟考三】水资源 day2 first 序列计数
- 【NOIP 模拟题】[山东多校联合模拟赛 day1 T1] 矩形计数(暴力)
- Noip模拟
- 【NOIP模拟】20151004模拟
- 【NOIP模拟】 20151005模拟
- 【NOIP模拟】 20151006模拟
- 【NOIP模拟】 20151007模拟
- 【NOIP模拟】20151014模拟
- 【NOIP模拟】20151015模拟
- <NOIP> 12 . P1980 计数问题
- 【09 NOIP 模拟】light
- [NOIP模拟]Day1
- 8.9CH NOIP模拟
- 8.10FCH NOIP模拟
- 8.13NOIP模拟
- 8.14NOIP模拟
- [个人博客搬运]Method Swizzling的简单应用场景
- KEIL MAP文件分析
- 用递归和非递归的形式实现二叉树的前中后序遍历
- 1069. The Black Hole of Numbers (20)
- 解决QMediaPlayer没有声音的问题
- 【NOIP模拟】计数
- VC6命令行编译DLL
- 学习心得 CCEGLView::sharedOpenGLView()在3.x中的替换问题
- Java Web实战08-Spring、Spring MVC和Hibernate实现收银机系统(XML版本)
- Android框架
- android InstallApk
- c#——Winform DatagridView上显示下拉树
- Android12个重要知识点(01)
- 兼容ie8 rgba()用法