Once Again...
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;
}
随机推荐
- Linux—export命令查看、修改用户环境变量
Linux export 命令用于设置或显示环境变量. 在 shell 中执行程序时,shell 会提供一组环境变量. export 可新增,修改或删除环境变量,供后续执行的程序使用. export ...
- Web网页服务器软件——介绍
Web网页服务器软件与硬件服务器的关系,就像软件和电脑的关系. 目前有,世界使用排列第一名的Apache.还有可以在Linux系统下快速方便地搭建出LNMP Web服务环境的Nginx(其中LNMP分 ...
- 2.MaxSubArray-Leetcode
题目:最大连续子序列和 思路:动态规划 状态转移方程 f[j]=max{f[j-1]+s[j],s[j]}, 其中1<=j<=n target = max{f[j]}, 其中1<=j ...
- Spring Boot 热启动插件
1. maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId ...
- 日常Java测试 2021/11/14
课堂测试三 package word_show; import java.io.*;import java.util.*;import java.util.Map.Entry; public clas ...
- A Child's History of England.28
By such means, and by taxing and oppressing the English people in every possible way, the Red King b ...
- flink-----实时项目---day05-------1. ProcessFunction 2. apply对窗口进行全量聚合 3使用aggregate方法实现增量聚合 4.使用ProcessFunction结合定时器实现排序
1. ProcessFunction ProcessFunction是一个低级的流处理操作,可以访问所有(非循环)流应用程序的基本构建块: event(流元素) state(容错,一致性,只能在Key ...
- Yarn【架构、原理、多队列配置】
目录 一.什么是yarn 二.yarn的基本架构和角色 三.yarn的工作机制 四.任务提交流程 五.资源调度器 FIFO 容量调度器 公平调度器 六.容量调度器多队列提交案例实操 1.案例:配置de ...
- 搭建内网Yum源
搭建内网yum源 阅读(2,238) 一:因内网服务器 众多,当统一安装一些比较大的rpm的时候全部从外网下载就比较慢,而且还占用了一定的出口流量,因此在内网部署了一台yum服务器,将阿里云的epel ...
- vue-cli4脚手架搭建三
组件传值 <script> import LunBo from "./LunBo"; export default { name: 'Home', components ...