题目链接:

Codeforces261D

题目大意:$k$次询问,每次给出一个长度为$n$的序列$b$及$b$中的最大值$maxb$,构造出序列$a$为$t$个序列$b$连接而成,求$a$的最长上升子序列。$n,maxb\le10^5,maxb*n\le2*10^7,t\le10^9$。

设$b$中不同数的个数为$sum$。如果$sum\le t$,那么答案就是$sum$(只需要从第$i$个序列$b$中取第$i$小的数即可)。现在只需要考虑$t<sum$的情况,因为$sum\le maxb$,所以$t<maxb$,这也就说明$n*t<n*maxb=2*10^7$,那么序列长度最大为$2*10^7$,我们只需要$O(nlog_{n})$求序列的最长上升子序列即可。直接$DP$,$f[i]$表示前$i$个数的最长上升子序列长度,用树状数组存前缀最大值然后扫一遍整个序列$DP$即可。

#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<bitset>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int sum;
int n,t,k;
int b[100010];
int a[20000010];
int v[100010];
int ans;
int maxb;
int f[20000010];
map<int,int>mp;
void add(int x,int k)
{
for(int i=x;i<=maxb;i+=i&-i)
{
v[i]=max(v[i],k);
}
}
int ask(int x)
{
int res=0;
for(int i=x;i;i-=i&-i)
{
res=max(res,v[i]);
}
return res;
}
int main()
{
scanf("%d%d%d%d",&k,&n,&maxb,&t);
while(k--)
{
memset(v,0,sizeof(v));
mp.clear();
sum=0;
ans=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&b[i]);
if(!mp[b[i]])
{
sum++;
mp[b[i]]=1;
}
}
if(t>=sum)
{
printf("%d\n",sum);
continue;
}
for(int i=1;i<=n*t;i++)
{
a[i]=b[(i-1)%n+1];
}
for(int i=1;i<=n*t;i++)
{
f[i]=ask(a[i]-1)+1;
ans=max(ans,f[i]);
add(a[i],f[i]);
}
printf("%d\n",ans);
}
}

最新文章

  1. matlab画图函数plot()/set/legend
  2. MVC前台页面做登录验证
  3. SQL Server的高级知识
  4. neutron的基本原理
  5. Java学习笔记(六)——google java编程风格指南(下)
  6. 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载四(使用程序载入事件)
  7. Android_硬编码设置TextView字体大小
  8. SPOJ PGCD (mobius反演 + 分块)
  9. Hadoop安全机制之令牌
  10. CSS中设置border:none和border:0的区别
  11. Mysql 数据库常用配置命令
  12. 问题 Duplicate entry &#39;0&#39; for key &#39;PRIMARY&#39;
  13. java对redis的基本操作(初识)
  14. hdu 5461(2015沈阳网赛 简单暴力) Largest Point
  15. Java基础——网络编程(三)
  16. Java中Volatile详解
  17. MyEclipse无法创建servers视图:Could not create the view: An unexpected exception was thrown
  18. Vmware 安装CentOS 6.5
  19. pandas对excel处理过程中的总结
  20. C基础《一》

热门文章

  1. lambda从入门到精通
  2. disconf原理 “入坑”指南
  3. JVM加载类冲突,导致Mybatis查数据库返回NULL的一个小问题
  4. koa2实现session的两种方式(基于Redis 和MySQL)
  5. PS打造油画般的风景人像
  6. NSAssert和NSParameterAssert
  7. Python云端系统开发入门 pycharm代码
  8. mybatis之批量插入
  9. 【问题解决方案】之 关于某江加密视频swf专用播放器仍无法播放的问题
  10. CodeForces Round #529 Div.3