poj 3378 Crazy Thairs dp
来源:互联网 发布:云印网络印刷平台 编辑:程序博客网 时间:2024/06/05 02:17
用树状数组优化转移复杂度,结果会超long long,要用高精度。
#include <iostream>#include <cstdio>#include <cstring>#include <set>typedef unsigned long long ll;using namespace std;const int maxn=5e4+9;ll tree[6][maxn],dp[maxn][6];int a[maxn];int n;typedef struct node{ int data,id; bool operator <(const node &xx) const { if(data==xx.data) return(id<xx.id); return(data<xx.data); }};int lowbit(int x){ return(x&-x);}void insert(int x,int t,ll tmp){ for(int i=x;i<=n;i+=lowbit(i)) tree[t][i]+=tmp;}ll getsum(int x,int t){ ll ans=0; for(int i=x;i>=1;i-=lowbit(i)) ans+=tree[t][i]; return(ans);}int main(){ set <node> d;// freopen("in.txt","r",stdin); while(scanf("%d",&n)!=EOF) { d.clear(); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); node x; x.data=a[i]; x.id=i; d.insert(x); } int k=0,tmp; for(set <node>::iterator i=d.begin();i!=d.end();i++) { if(i==d.begin()||i->data!=tmp) k++; a[i->id]=k; tmp=i->data; } memset(dp,0,sizeof(dp)); memset(tree,0,sizeof(tree)); for(int i=1;i<=n;i++) { dp[i][1]=1; insert(a[i],1,dp[i][1]); for(int j=1;j<=4;j++) { dp[i][j+1]=getsum(a[i]-1,j); insert(a[i],j+1,dp[i][j+1]); } } ll ans=0,ans1=0; for(int i=1;i<=n;i++) { ans+=dp[i][5]; ans1+=ans/ll(1000000000000000); ans%=1000000000000000; } if(ans1) { printf("%lld",ans1); printf("%015lld\n",ans); } else printf("%lld\n",ans); } return 0;}
- poj 3378 Crazy Thairs dp
- poj 3378 Crazy Thairs
- poj 3378 Crazy Thairs
- POJ 3378 - Crazy Thairs 树状数组+dp+离散化+高精度..
- POJ 3378 Crazy Thairs(数据集中+DP+树状数组+高精度)
- poj 3378 Crazy Thairs 树状数组+高精度+dp
- POJ 3378 / UESTC 1460 - Crazy Thairs
- poj 3378 Crazy Thairs 动态规划
- POJ 3378——Crazy Thairs(树状数组+dp+高精度)数据结构优化的DP
- 【转】POJ 3378 Crazy Thairs(数据集中+DP+树状数组+高精度)
- [PKU 3378]Crazy Thairs(平衡树)
- poj3378 Crazy Thairs
- Binary Index Tree And Segment Tree for PKU #3378 Crazy Thairs
- PKU3378 Crazy Thairs - 动态规划+树状数组
- poj3378 Crazy Thairs 高精度,树状数组
- POJ3378:Crazy Thairs(动态规划+线段树或树状数组+离散化+高精度)
- POJ 1200 Crazy Search
- poj 1200 Crazy Search
- Java Servlet 获取服务器各种路径信息
- BLCR 基本环境搭建
- Git常用命令解说
- 实验三十五 Windows Server 2012 RDS桌面虚拟化之六VDI虚拟桌面的用户管理和安全防护
- 参数化测试
- poj 3378 Crazy Thairs dp
- java同步工具类--Semaphores
- Java多线程编程总结
- c# 绑定多个数据,取出数组
- Java中解析XML的四种常用方法(3)_JDOM解析
- Java中解析XML的四种常用方法(4)_DOM4J解析
- 7:Yii中的Gii与Url处理(Yii权威指南)
- 8:Yii中的验证与授权(Yii权威指南)
- IOCP的一些总结