hdu1502 Regular Words 【dp+高精度加法】
来源:互联网 发布:以太网地址和mac地址 编辑:程序博客网 时间:2024/06/01 10:44
解题思路:
f[a][b][c]表示用a个A,b个B,c个C的方案数,其转移方程为:
if(b==0)f[a][b][c]=1;
else if(c==0)f[a][b][c]=f[a-1][b][c]+f[a][b-1][c];
else f[a][b][c]=f[a-1][b][c]+f[a][b-1][c]+f[a][b][c-1];
其中1
时间复杂度为O(
但结果会很大,要用高精度加法,且要压位,详见代码。
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cmath>#include<queue>#include<vector>#define ll long longusing namespace std;int getint() { int i=0,f=1;char c; for(c=getchar();(c<'0'||c>'9')&&c!='-';c=getchar()); if(c=='-')c=getchar(),f=-1; for(;c>='0'&&c<='9';c=getchar())i=(i<<3)+(i<<1)+c-'0'; return i*f;}const int N=61,p=10000;int n,f[N][N][N][30]; void Add(int f1[],int f2[]){ int l1,l2; for(l1=29;l1;l1--)if(f1[l1])break; for(l2=29;l2;l2--)if(f2[l2])break; if(l1<l2)l1=l2; for(int i=1;i<=l1;i++)f1[i]+=f2[i]; for(int i=1;i<=l1;i++) if(f1[i]>=p)f1[i+1]+=f1[i]/p,f1[i]%=p;}void W(int f1[]){ int l1; for(l1=29;l1;l1--)if(f1[l1])break; cout<<f1[l1--]; for(int i=l1;i;i--) { if(f1[i]<10)putchar('0'),putchar('0'),putchar('0'); else if(f1[i]<100)putchar('0'),putchar('0'); else if(f1[i]<1000)putchar('0'); cout<<f1[i]; } cout<<'\n'<<'\n';}void pre(){ int a,b,c; for(a=1;a<=60;a++) for(b=0;b<=a;b++) for(c=0;c<=b;c++) { if(b==0)f[a][b][c][1]=1; else if(c==0) { Add(f[a][b][c],f[a-1][b][c]); Add(f[a][b][c],f[a][b-1][c]); } else { Add(f[a][b][c],f[a-1][b][c]); Add(f[a][b][c],f[a][b-1][c]); Add(f[a][b][c],f[a][b][c-1]); } }}int main(){ //freopen("lx.in","r",stdin); pre(); while(scanf("%d",&n)!=EOF) W(f[n][n][n]); return 0;}
阅读全文
0 0
- hdu1502 Regular Words 【dp+高精度加法】
- HDU1502:Regular Words(大数DP)
- hdu1502 Regular Words 【dp+java】
- [练习][HDU1502]DP Regular Words
- hdu1502 Regular Words(树型dp+大数)
- hdu1502 Regular Words--DP&大数问题
- HDU1502 Regular Words(DP+大数模拟)
- hdu1502 Regular Words 动态规划 高精度 打表
- Hdu 1502 Regular Words (java高精度 + DP)
- hdu 1502 Regular Words(java大数加法+dp)
- hdu 1502 Regular Words DP + 高精度 第一个java
- 暑期dp46道(28) hdoj 1502 Regular Words dp+高精度额
- 【DP】HDU-1502 Regular Words
- HDU1502 动态规划计数 高精度
- HDU 1502 Regular Words(DP + JAVA)
- HDU 1502 Regular Words(大数+dp)
- hdu1502 大数dp
- hdu 1502 Regular Words_高精度+dp
- Java 字节流 复制MP3
- hibernate基本框架及配置
- 正则表达式匹配(Regular Expression Matching)
- 建立Win32 Console Project/MFC项目时会出现"LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏"的错误。
- 147. Insertion Sort List(链表的插入排序)
- hdu1502 Regular Words 【dp+高精度加法】
- 中国铁路率先实现刷脸进站 化妆戴美瞳都能认出来
- 百度西雅图开设AI实验室 总裁张亚勤称AI是时代变革之能
- 速度快1000倍!DeepMind更新WaveNet用于Google助手
- String类以及常用的方法
- android实现 5.0 6.0手机自动接听电话功能
- 关于Servlet总结
- Socket网络编程--小小网盘程序(1)
- 2.CG_Shader基本属性以及语义