Increasing Speed Limits
Increasing Speed Limits |
| Time Limit: 2000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
| Total Submission(s): 186 Accepted Submission(s): 86 |
|
Problem Description
You were driving along a highway when you got caught by the road police for speeding. It turns out that they\'ve been following you, and they were amazed by the fact that you were accelerating the whole time without using the brakes! And now you desperately need an excuse to explain that.
You've decided that it would be reasonable to say "all the speed limit signs I saw were in increasing order, that\'s why I've been accelerating". The police officer laughs in reply, and tells you all the signs that are placed along the segment of highway you drove, and says that's unlikely that you were so lucky just to see some part of these signs that were in increasing order. Now you need to estimate that likelihood, or, in other words, find out how many different subsequences of the given sequence are strictly increasing. The empty subsequence does not count since that would imply you didn't look at any speed limits signs at all! For example, (1, 2, 5) is an increasing subsequence of (1, 4, 2, 3, 5, 5), and we count it twice because there are two ways to select (1, 2, 5) from the list. |
|
Input
The first line of input gives the number of cases, N. N test cases follow. The first line of each case contains n, m, X, Y and Z each separated by a space. n will be the length of the sequence of speed limits. m will be the length of the generating array A. The next m lines will contain the m elements of A, one integer per line (from A[0] to A[m-1]).
Using A, X, Y and Z, the following pseudocode will print the speed limit sequence in order. mod indicates the remainder operation. for i = 0 to n-1 Note: The way that the input is generated has nothing to do with the intended solution and exists solely to keep the size of the input files low. 1 ≤ m ≤ n ≤ 500 000 |
|
Output
For each test case you should output one line containing "Case #T: S" (quotes for clarity) where T is the number of the test case and S is the number of non-empty increasing subsequences mod 1 000 000 007.
|
|
Sample Input
2 |
|
Sample Output
Case #1: 15 |
|
Source
2009 Multi-University Training Contest 6 - Host by WHU
|
|
Recommend
gaojie
|
/*
题意:按照题目给出的循环条件:
for i = 0 to n-1
print A[i mod m]
A[i mod m] = (X * A[i mod m] + Y * (i + 1)) mod Z
求出一个长度为n的序列A,然后求数列A的严格递增的子序列的个数
例如第一组样例,按照循环条件求出的序列为 1,2,1,2,3(不要怀疑,这就是按照循环来求出来的)
递增子序列为:
{1},{2},{1},{2},{3},
{1,2},{1,2},{1,3},{2,3},{1,2},
{1,3},{2,3},{1,2,3},{1,2,3},{1,2,3}. 初步思路:树状数组求递增子序列
*/ #include<bits/stdc++.h>
#define N 500010
#define mod 1000000007
#define lowbit(x) x&(-x)
using namespace std;
struct node
{
int id;
long long w;
bool operator< (const node& b)const{
return w<b.w;
} }s[N];
long long n,m,x,y,z;
long long t;
long long A[N];
long long mapn[N];///用于映射数组,标记元素的id
long long c[N];
int len =;///用于标记去重后的序列长度
long long res=;
void update(int x,int val){
while(x<N){
c[x]+=val;
c[x]%=mod;
x+=lowbit(x);
}
}
long long getsum(int x){
long long res=;
while(x>){
res+=c[x];
res%=mod;
x-=lowbit(x);
}
return res;
}
void init(){
memset(c,,sizeof c);
res=;
}
int main(){
// freopen("in.txt","r",stdin);
scanf("%d",&t);
for(int ca=;ca<=t;ca++){
printf("Case #%d: ",ca);
init();
scanf("%lld%lld%lld%lld%lld",&n,&m,&x,&y,&z);
for(int i=;i<m;i++){
scanf("%lld",&A[i]);
}
for(int i=;i<n;i++){///因为树状数组0这位是处理不到的所以坐标整个向右平移以为
s[i+].w=A[i%m]+;
s[i+].id=i+;
A[i%m]=(x*A[i%m]+y*(i+))%z;
} // for(int i=1;i<=n;i++){
// cout<<s[i].w<<" ";
// }cout<<endl; sort(s+,s+n+);///排好序然后用树状数组进行求最长上升子序列
int cur=;
for(int i=;i<=n;i++){
if(s[i].w==s[i-].w)
mapn[s[i].id]=cur;
else
mapn[s[i].id]=++cur;
} // for(int i=1;i<=n;i++){
// cout<<mapn[s[i]]<<" ";
// }cout<<endl; long long ans=;
for(int i=;i<=n;i++){
update(mapn[i],getsum(mapn[i]-)+);
}
printf("%d\n",getsum(n));
}
return ;
}
Increasing Speed Limits的更多相关文章
- hdu 3030 Increasing Speed Limits (离散化+树状数组+DP思想)
Increasing Speed Limits Time Limit: 2000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- HDU 3030 - Increasing Speed Limits
Problem Description You were driving along a highway when you got caught by the road police for spee ...
- HDU题解索引
HDU 1000 A + B Problem I/O HDU 1001 Sum Problem 数学 HDU 1002 A + B Problem II 高精度加法 HDU 1003 Maxsu ...
- poj 2501 Average Speed
Average Speed Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4842 Accepted: 2168 Des ...
- 使用OpenMP加快OpenCV图像处理性能 | speed up opencv image processing with openmp
本文首发于个人博客https://kezunlin.me/post/7a6ba82e/,欢迎阅读! speed up opencv image processing with openmp Serie ...
- poj3311 Hie with the Pie (状态压缩dp,旅行商)
Hie with the Pie Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3160 Accepted: 1613 ...
- 2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest C. CIA Datacenter
C. CIA Datacenter time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- 状态压缩 DP
D - Hie with the Pie Crawling in process... Crawling failed Time Limit:2000MS Memory Limit:65536 ...
- 专题:mdadm Raid & LVM
>FOR FREEDOM!< {A} Introduction Here's a short description of what is supported in the Linux R ...
随机推荐
- crypto加密
/* hash.js */ var crypto = require('crypto'); module.exports = function(){ this.encode = fu ...
- 浅析强连通分量(Tarjan和kosaraju)
理解 在有向图G中,如果两点互相可达,则称这两个点强连通,如果G中任意两点互相可达,则称G是强连通图. 定理: 1.一个有向图是强连通的,当且仅当G中有一个回路,它至少包含每个节点一次. ...
- Linux学习——yum学习和光盘yum源搭建
在rmp安装的时代,rpm包依赖让安装人员头大,而且头疼,有了yum后整个的安装更加简单和方便. yum源文件 1.yum源的介绍: 将所有的软件包放到官方服务器上,当进行yum在线安装时,可以自动解 ...
- VCL组件之TLabel、TStaticText和TLabeledEdit
TLabel.TStaticText.TLabeledEdit类的继承关系如下:
- 洗礼灵魂,修炼python(6)--活起来的代码+列表
活起来的用法: 使用input内置函数 注意python2中和python3中,input函数是不太一样的,python2中,input用户传入什么类型就是什么类型而python3中,不管传入什么类型 ...
- TargetType Mismatch
TargetType Mismatch 环境:windowsphone 8,silerlight toolkit, 页面报TargeType Mismatch错误或者 length 0,是因为Syst ...
- jQuery和js获取select元素的选中项value?
1.jQuery方式获取:$("#test").val(); 2.js方式获取:document.getElementById("test").value;
- IntelliJ IDEA 14.1.4设置关闭自动保存和标志改动文件为星号?
一.设置取消默认的自动保存: 二.设置文件内容改动后为文件标题头部添加*号:
- RewriteMap(apache)
最近在工作中发现一个陌生的语法,apache服务器站点rewrite配置文件里的,开始还以为是apache的一种新语法,以这个词网上搜索,没搜到相关文章,跟老同事请教了一下,说这个是RewriteMa ...
- 有人提了一个问题:一定要RESTful吗?
写在前面的话 这个问题看起来就显得有些萌,或者说类似的问题都有些不靠谱,世上哪有那么多一定的事情,做开发都不一定做多久呢,所以说如果你有这个疑问的话是真真有点儿不着调,不过可能也就是随口一问吧,没有深 ...