Once Again...

题目链接

题意

给n个数,然后T次循环后组成一个新的数列,求这个数列的最长不递减子序列。

思路

因为最多就100个元素,所以当m<=100的时候直接暴力求最长不递减子序列,然后当m>=100的时候,因为每个循环节最少可以取1个元素,所以只要100个循环节就可以包括所有的数,然后再往里面插入剩下的一个在当前路径下在每段重复有最多的元素,也就是\((m-100)*cnt[k]\)(k就是那个数);复杂度(\(n^2\));

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod = 1e9+7;
int a[100005];
int dp[100005];
int cnt[100005];
int id[100005];
int main(void)
{
int n,m;
scanf("%d %d",&n,&m);
for(int i = 0;i < n;i++)
scanf("%d",&a[i]);
int maxx = 1;
if(m <= 100)
{
for(int i = n;i < n*m;i++)
{
a[i] = a[i-n];
}
dp[0] = 1;
for(int i = 1;i < n*m;i++)
{ dp[i] = 1;
for(int j = 0;j < i;j++)
{
if(a[i] >= a[j])
dp[i] = max(dp[j] + 1,dp[i]);
}
maxx = max(maxx,dp[i]);
}
}
else
{
for(int i = n;i < n*100;i++)
a[i] = a[i-n];
for(int i = 0;i < n;i++)
cnt[a[i]]++;
dp[0] = 1;
for(int i = 1;i < n*100;i++)
{ dp[i] = 1;
for(int j = 0;j < i;j++)
{
if(a[i] >= a[j])
{
if(dp[i] < dp[j] + 1)
{
dp[i] = dp[j] + 1;
id[i] = j;
}
}
}
int c = i;
while(c!=0)
maxx = max(maxx,dp[i] + (m-100)*cnt[a[c]]),c = id[c];
}
}
printf("%d\n",maxx);
return 0;
}

随机推荐

  1. 简单mvc框架核心笔记

    简单mvc框架核心笔记 看了thinkphp5的源码,模仿写了一个简单的框架,有一些心得笔记,记录一下 1.目录结构 比较简单,没有tp那么复杂,只是把需要的核心类写了一些. 核心类库放在mykj里, ...

  2. JavaBean内省与BeanInfo

    Java的BeanInfo在工作中并不怎么用到,我也是在学习spring源码的时候,发现SpringBoot启动时候会设置一个属叫"spring.beaninfo.ignore", ...

  3. javaWeb - 2 — ajax、json — 最后附:后台获取前端中的input type = "file"中的信息 — 更新完毕

    1.ajax是什么? 面向百度百科一下就知道了,这里就简单提炼一下 Ajax即Asynchronous Javascript And XML(异步JavaScript和XML).当然其实我们学的应该叫 ...

  4. [转]sizeof计算空间大小的总结

    原文链接:http://www.cnblogs.com/houjun/p/4907622.html 关于sizeof的总结 1.sizeof的使用形式:sizeof(var_name)或者sizeof ...

  5. Output of C++ Program | Set 18

    Predict the output of following C++ programs. Question 1 1 #include <iostream> 2 using namespa ...

  6. tableView和tableViewCell的背景颜色问题

    当在tableView中添加cell数据时,我们会发现原本设置的tableView的背景颜色不见了,这是因为加载cell数据时,tableView的背景颜色被cell数据遮盖住了,此时,可以通过设置c ...

  7. Servlet(3):Cookie和Session

    一. Cookie Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.这样,web资源处理的 ...

  8. Shell脚本实现自动修改IP地址

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...

  9. react中在hooks方法useEffect中加载异步数据

    useEffect( ()=>{ (async function getPipeList(value:any) { let result= await GetPipeList(value); s ...

  10. CDN服务的含义

    CDN的全称是Content Delivery Network,即内容分发网络.CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全 ...