voj1378 矩阵取数游戏 高精度+dp
来源:互联网 发布:海外阿里云服务器租用 编辑:程序博客网 时间:2024/06/05 22:46
安心虐杀。
#include <cstring>#include <cstdio>#include <algorithm>#include <iostream>using namespace std;#define mod 10000struct bignumber{ int n; int a[20]; void clear() { n=0; memset(a,0,sizeof(a)); } void init(char *s) { clear(); int len=strlen(s); for(int i=0;i<len;i++) { int num=(len+3-i)/4; a[num]=a[num]*10+(s[i]-'0'); } n=(len+3)/4; } void init(int s) { clear(); if(s==0) { n=1; return; } while (s) { a[++n]=s%mod; s/=mod; } } void output() { printf("%d",a[n]);for(int i=n-1;i>=1;i--) printf("%04d",a[i]); printf("\n"); }};bignumber operator + (bignumber a,bignumber b){ a.n=max(a.n,b.n); for(int i=1;i<=a.n;i++) { a.a[i]+=b.a[i]; a.a[i+1]+=a.a[i]/mod; a.a[i]%=mod; } if(a.a[a.n+1]>0) a.n++; return a;}bignumber operator * (bignumber a,bignumber b){ bignumber c; c.clear(); c.n=a.n+b.n; for(int i=1;i<=a.n;++i) for(int j=1;j<=b.n;++j) c.a[i+j-1]+=a.a[i]*b.a[j]; for(int i=1;i<=c.n;++i) { c.a[i+1]+=c.a[i]/mod; c.a[i]%=mod; } while(c.n>1 && c.a[c.n]==0) --c.n; return c;}bignumber operator * (bignumber a,int b){ for(int i=1;i<=a.n;i++) { a.a[i]=a.a[i]*b+a.a[i-1]/mod; a.a[i-1]%=mod; } while (a.a[a.n]>=mod) { a.n++; a.a[a.n]=a.a[a.n-1]/mod; a.a[a.n-1]%=mod; } return a;}bignumber cmp(bignumber aa,bignumber bb){ if(aa.n<bb.n) return bb; if(aa.n>bb.n) return aa; for(int i=aa.n;i>0;i--) { if(aa.a[i]<bb.a[i]) return bb; if(aa.a[i]>bb.a[i]) return aa; } return aa;}bignumber maxn,k1,k2,f[100][100],a[100];int m,n;char st[100];void solve(){ for(int i=1;i<=m;i++) { for(int j=1;j<=m;j++) { f[i][j].clear(); } } for(int i=1;i<=m;i++) { a[i].clear(); } for(int i=1;i<=m;i++) { scanf("%s",st); a[i].init(st); } for(int i=1;i<=m;i++) { f[i][i]=a[i]+a[i]; } for(int i=m;i>=1;i--) { for(int j=i+1;j<=m;j++) { k1=f[i+1][j]+a[i]; k2=f[i][j-1]+a[j]; f[i][j]=cmp(k1,k2); f[i][j]=f[i][j]*2; } } maxn=f[1][m]+maxn;}int main(){ scanf("%d%d",&n,&m); maxn.clear(); for(int i=1;i<=n;i++) { solve(); } maxn.output(); return 0;}
0 0
- voj1378 矩阵取数游戏 高精度+dp
- NOIP2007 矩阵取数游戏 [dp] [高精度]
- ACM 96. [NOIP2007] 矩阵取数游戏(dp+高精度)
- CodeVS 1166 矩阵取数游戏(区间DP+高精度)
- luogu 1005——矩阵取数游戏【dp】【高精度】
- 【luogu1005】矩阵取数游戏(高精度+dp)
- NOIP2007 矩阵取数 DP+高精度
- [动态规划+高精度] 矩阵取数游戏
- codevs天梯 矩阵取数游戏(昨天太忙没放题上来。。。)高精度+dp
- dp+高精度(洛谷1005 矩阵取数游戏NOIP 2007 提高第三题)
- dp+高精度 (洛谷1005 矩阵取数游戏 NOIP 2007 提高第三题)
- codevs1166 矩阵取数游戏(区间DP)
- 区间DPの矩阵取数游戏
- noip2007 矩阵取数游戏 (动态规划+高精度)
- 矩阵取数游戏
- 矩阵取数游戏
- 矩阵取数游戏
- 矩阵取数游戏
- lua学习
- 电话号码的学问
- 电话api
- 关于hibernate的LazyInitializationException异常
- UVALive 6432 —— Influence(记忆化搜索 + 状态压缩)
- voj1378 矩阵取数游戏 高精度+dp
- 致我们终将忘记的算法(千变万化字符串)
- linux下部署和执行kettle——(配置文件、动态获取、后台执行)
- 《去哪儿网》使用的糟糕体验
- Java 异常处理的误区和经验总结
- 后缀数组例题2(旭哥用了都说好)
- 我对UVa OJ已经彻底失去信心了
- 关于String的final类型
- Metatable lua