hdu 5568 高精度(重要) DP
来源:互联网 发布:java用户登录界面设计 编辑:程序博客网 时间:2024/05/07 08:32
这个题似乎有问题,题中明明要求每个数组不同,想了很久,不知道怎么判重复,最后却看别人都是不判重 直接过的
dp[i][j] 表示第i个数作为第j个数 的情况
dp[i][f] = sum(dp[j][f-1]) num[i] > num[j]
另外,如果大数使用十进制计算 要么 wrong answe 要么 爆内存 ,所以尽量开大 ,这里用的10^8
#include<stdio.h>#include<string.h>#include<algorithm>#include<math.h>using namespace std;#define MS(x,y) memset(x,y,sizeof(x))#define MOD 100000000void fr(){freopen("t.txt","r",stdin);}typedef long long LL;struct Bignum{ int len,a[101]; Bignum() { len = 0; MS(a,0); }}dp[105][105],ans;void add(Bignum &a,Bignum &b){ int len = max(a.len,b.len); int i,j; for(i = 1; i <= len; i++) { a.a[i] += b.a[i]; a.a[i+1] += a.a[i]/MOD; a.a[i] %= MOD; } if(a.a[len+1]) len++; a.len = len;}void print(Bignum &a){ int i; printf("%d",a.a[a.len]); for(i = a.len-1; i>0; i--) printf("%08d",a.a[i]);}int main(){ // fr(); int i,j,f,n,k,num[105]; while(~scanf("%d%d",&n,&k)) { ans.len = 0; MS(ans.a,0); MS(dp,0); for(i = 0; i < n; i++) { scanf("%d",&num[i]); dp[i][1].a[1] = dp[i][1].len = 1; } for(i = 1; i < n; i++) { for(j = 0; j <= i-1; j++) { if(num[i] > num[j]) { for(f = 2; f <= k; f++) { add(dp[i][f],dp[j][f-1]); } } } } for(i = 0; i < n; i++) { add(ans,dp[i][k]); } print(ans); puts(""); }}
0 0
- hdu 5568 高精度(重要) DP
- HDU 5568 sequence2 DP+高精度
- HDU-5568 sequence2(DP+高精度)
- Hdu 1502 Regular Words (java高精度 + DP)
- hdu 1502 Regular Words_高精度+dp
- hdoj 5568 sequence2 【dp + 高精度】
- HDU 1133 (数论 or DP、高精度;Java版)
- hdu 1502 Regular Words DP + 高精度 第一个java
- hdu 1502 字符串dp与高精度运算(mark)
- URAL - 1012 DP+高精度
- 【高精度+DP】【HDU1223】 OrderCount
- UVA 10069 dp+高精度
- uva10069(DP + 高精度运算)
- HDU 5568 DP大数
- hdu-5568-sequence2-dp
- HDU-1042 高精度乘法
- HDU-1047 高精度加法
- HDU-1042 高精度
- 选择比努力更重要
- 递归-奇数放左边,偶数放右边
- 天声人語 20151130 11月の言葉から
- hibernate重要笔记
- 【OpenCV学习笔记】1.3疑难解决汇总
- hdu 5568 高精度(重要) DP
- 跑批利器--SpringBatch框架
- CentOS 安装 pip
- JAVA之变量引用
- 【odroid-xu3】 ODROID-XU3硬件连接和烧写过程
- HD1001 java版答案
- 性能测试准备——计算TPS
- MyBatis底层基础和拦截器 - 第一部分
- C++网络服务器编程的学习路线?