$HDOJ5542\ The\ Battle\ of\ Chibi$ 数据结构优化$DP$
$Code$
#include<bits/stdc++.h>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;i++)
#define yes(i,a,b) for(Rg int i=a;i>=b;i--)
#define mem(a,b) memset(a,b,sizeof(a));
#define int long long
using namespace std;
il int read()
{
int x=,y=;char c=getchar();
while(c<''||c>''){if(c=='-')y=-;c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
const int N=,mod=(1e9)+;
int T,n,n1,m,as,a[N],b[N],v[N],c[N],f[N][N];
il int Find(int x){return find(b+,b+n1+,x)-b;}//find(b+1,b+n1+1,x)-b;}
il int lowbit(int x){return x&(-x);}
il void add(int p,int w){while(p<=n1){c[p]=(c[p]+w)%mod;p+=lowbit(p);}}
il int sum(int p){int ret=;while(p){ret=(ret+c[p])%mod;p-=lowbit(p);}return ret%mod;}
main()
{
T=read();
go(TT,,T)//remember to init
{
n=read(),m=read();
go(i,,n)a[i]=b[i]=read();
sort(b+,b+n+);
n1=unique(b+,b+n+)-(b+);
go(i,,n){v[i]=Find(a[i]);}
f[][]=;
go(i,,m)
{
mem(c,);if(i==)add(,);
go(j,,n)f[i][j]=sum(v[j]),add(v[j]+,f[i-][j]);
}
as=;go(i,,n)as=(as+f[m][i])%mod;
printf("Case #%lld: %lld\n",TT,as);
}
return ;
}
随机推荐
- LeetCode54 Spiral Matrix
题目: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spira ...
- python---异常处理与反射
一.异常处理 1.异常基础 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!! try: pass except ...
- 解决ViewState过于庞大的问题
这里是我将ViewState持久化保持在服务器端的代码,这样ViewState不占用网络带宽,因此其存取只是服务器的磁盘读取时间.并且它很 小,可以说是磁盘随便转一圈就能同时读取好多ViewState ...
- HZOJ 方程的解
乍一看还以为是道水题,没想到这玩意这么难搞. 看题显然是exgcd,然而exgcd求的是一个解而不是解的个数(考试的时候不记得通解的式子然后挂了). 对于40%的数据,直接枚举计数即可. 对于另为20 ...
- day7_python之面向对象高级-反射
反射:通过字符串去找到真实的属性,然后去进行操作 python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 1.两种方法访问对象的属性 cl ...
- java一般处理高并发的技术手段
应对高并发的解决方案: 1.将压力放在数据库上面,添加行级锁. select * from table for update; 2.将压力放在应用程序上面,对方法加synchronized同步.
- H3C 命令行编辑功能
- Angular项目目录结构
前言:不支持MakeDown的博客园调格式的话,真的写到快o(╥﹏╥)o了,所以老夫还是转战到CSDN吧,这边就不更新啦啦啦~ CSDN地址:https://blog.csdn.net/Night20 ...
- oracle使用日期
当使用日期是,需要注意如果有超过5位小数加到日期上, 这个日期会进到下一天! 例如: 1. SELECT TO_DATE(‘01-JAN-93’+.99999) FROM DUAL; Returns: ...
- HDU 1026 BSF+优先队列+记录路径、
#include<iostream> #include<cmath> #include<cstring> #include<cstdio> #inclu ...
