重复T次的LIS的dp Codeforces Round #323 (Div. 2) D

http://codeforces.com/contest/583/problem/D

原题:You are given an array of positive integers a1, a2, ..., an × T of length n × T. We know that for any i > n it is true that ai = ai - n. Find the length of the longest non-decreasing sequence of the given array.

题目大意:有长度为n的数组a(n <= 100),其中a[i] <= 300,这个a数组可以重复T次,问他的最长上升子序列是多少?

思路:我们可以发现,这个数组如果要全部都算上的,那么在t<=n的情况下,他的最长上升子序列一定会遍历一次a数组。所以我们就只需要把原来的数组扩大n倍,然后求他的LIS。

这样以后我们发现,后面的重复的次数一定是原来数组里面出现次数(假定重复次数k为最多)最多的数值,所以ans = Lis的长度 + k * T - min(n, T);

复杂度 O(n*n*logn)

//看看会不会爆int!数组会不会少了一维!
//取物问题一定要小心先手胜利的条件
#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker,"/STACK:102400000,102400000")
#define LL long long
#define ALL(a) a.begin(), a.end()
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define haha printf("haha\n")
const int maxn = 100 + 5;
int a[maxn * maxn];
int n, T;
vector<int> ve;int solve(int t){int len = t * n;for (int i = 1; i < t; i++){for (int j = 1; j <= n; j++){a[n * i + j] = a[j];}}for (int i = 1; i <= n * t; i++){int pos = upper_bound(ve.begin(), ve.end(), a[i]) - ve.begin();if (pos == ve.size()) ve.push_back(a[i]);else ve[pos] = a[i];}return ve.size();
}int cnt[maxn * maxn];
int main(){cin >> n >> T;int maxval = 0, k = 0;for (int i = 1; i <= n; i++){scanf("%d", a + i);cnt[a[i]]++;k = max(cnt[a[i]], k);}int ans = solve(min(n, T));//printf("ans = %d k = %d T - min(n, T) = %d\n", ans, k, T - min(n, T));printf("%d\n", ans + k * (T - min(n, T)));return 0;
}

 

转载于:https://www.cnblogs.com/heimao5027/p/6166054.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微擎pc 导入前缀_段覆盖前缀| 8086微处理器

微擎pc 导入前缀As we already know that the effective address is calculated by appending the segment registers value and adding up the value of the respective offset. But what if we want to choose some other offset than the assigned one. 众所周知&#xff0…

python—面向对象

面向过程 面向对象&#xff1a; 面向过程&#xff1a;—侧重于怎么做&#xff1f; 1.把完成某一个需求的 所有步骤 从头到尾 逐步实现 2.根据开发要求&#xff0c;将某些功能独立的代码封装成一个又一个函数 3.最后完成的代码&#xff0c;就是顺序的调用不同的函数 特点&#…

5中bug vue_苹果官网出BUG!这些都只要一两百元

近日&#xff0c;有网友在网上反馈称&#xff0c;他发现苹果官网商城出现了BUG&#xff01;众多上千元的产品&#xff0c;BUG价只需一两百元。比如Shure MOTIV MV88 Digital立体声电容式麦克风配件。正常售价1288元&#xff0c;而BUG后的价格是235元。UBTECH Jimu Astrobot Cos…

常用压缩,解压与打包

常用压缩格式&#xff1a; .zip .zg .bz2 .tar.gz .tar.bz2.zip格式压缩zip 压缩文件名 源文件#压缩文件注&#xff1a;压缩文件名写.zip后缀是为了标记该文件的压缩类型&#xff0c;方便管理。注&#xff1a;在压缩时有压缩格式转换&#xff0c;所以当源文件很小时&#xff0c…

css禁用选中文本_使用CSS禁用文本选择突出显示

css禁用选中文本Introduction: 介绍&#xff1a; Texts are the most fundamental elements of any websites or web pages, they form the basis of the web pages or websites because if you don’t write something that you will not be able to present anything. There…

CDN加速实现—varnish

CDN介绍&#xff1a; 1 . 对cdn的理解&#xff1a; CDN的全称是&#xff08;Content Delivery Network&#xff09;&#xff0c;即内容分发网络&#xff1b;加速器&#xff0c;反向代理缓存。CDN系统能够实时的根据网络流量和各节点的连接&#xff0c;负载状况以及到用户的举例…

3dmax如何拆分模型_3dmax制作装饰柜1

大家好&#xff0c;今天我来为大家讲解一下如何利用3dmax制作装饰柜。我们需要制作装饰柜模型&#xff0c;当我们为它添加一个材质后&#xff0c;它就是这样的效果。单击创建&#xff0c;选择图形&#xff0c;对象为样条线&#xff0c;选择矩形在场景中进行创建。单击修改&…

TODO:macOS上ThinkPHP5和Semantic-UI集成

TODO&#xff1a;macOS上ThinkPHP5和Semantic-UI集成1. 全局安装 (on OSX via homebrew)Composer 是 homebrew-php 项目的一部分2. 把Xcode升级到8.1后继续安装Composer3. 使用composer创建TP5项目MWL-Dispatchcomposer create-project topthink/think MWL-Dispatch4. 配置apac…

np.expm1_JavaScript中带有示例的Math.expm1()方法

np.expm1JavaScript | Math.expm1()方法 (JavaScript | Math.expm1() Method) Math operations in JavaScript are handled using functions of math library in JavaScript. In this tutorial on Math.expm1() method, we will learn about the expm1() method and its workin…

距离传感器控制灯泡代码_生迪全彩智能 LED 灯泡体验评测

市面上大多数智能灯具无外乎智能控制&#xff0c;冷暖标准区间的简单调光&#xff0c;仅仅满足我们日常照明之外&#xff0c;似乎用处不多。如果有一款能在自己房间制造多彩氛围的灯泡就好了。这次有幸体验到了华为智能家居生态链产品生迪全彩智能 LED 灯泡&#xff0c;才发现彩…

mysql启动与关闭(手动与自动)

手动管理mysql的启动与关闭 [rootmysql ~]# service mysql start --手动启动mysqlStarting MySQL. SUCCESS![rootmysql ~]# service mysql stop --手动关闭mysql Shutting down MySQL.. SUCCESS! [rootmysql ~]# mysqld --verbose --help --查看MySQL的默认参数的具体值 如果每…

JavaScript中带有示例的Math.round()方法

JavaScript | Math.round()方法 (JavaScript | Math.round() Method) Math.round() is a function in math library of JavaScript that is used to round the given number floating-point number to the nearest integer value. Math.round()是JavaScript数学库中的函数&…

内部导线拉力测试_珠海后环回收试验机现金支付拉力试验机回收和谐温馨的环境...

珠海后环回收试验机现金支付拉力试验机回收和谐温馨的环境深圳富兴二手设备回收&#xff0c;拉力试验机回收&#xff0c;恒温恒湿箱回收&#xff0c;恒温恒湿试验箱回收&#xff0c;恒温恒湿培养箱回收&#xff0c;高低温试验箱回收&#xff0c;高低温冲击试验机回收&#xff0…

lvs负载均衡—ldirectord(DR模式的健康检查)

作用&#xff1a; 健康检查对企业而言也是由为重要&#xff0c;在生活中&#xff0c;有时候访问网页访问不到&#xff0c;就会跳出来一些图形告诉你访问失败&#xff0c;这就是健康检查的作用&#xff0c;当服务器都挂掉的时候&#xff0c;告诉你暂时访问不了。 ldirectord是后…

Reactor by Example--转

原文地址&#xff1a;https://www.infoq.com/articles/reactor-by-example Key takeaways Reactor is a reactive streams library targeting Java 8 and providing an Rx-conforming APIIt uses the same approach and philosophy as RxJava despite some API differencesIt i…

springboot项目后台运行关闭_springboot项目在服务器上部署过程(新手教程)

环境&#xff1a;服务器系统&#xff1a;ubuntu16jdkmysql工具 xshell6下载地址&#xff1a;https://www.netsarang.com/download/down_form.html?code622&downloadType0&licenseType1xftp6下载地址&#xff1a;https://www.netsarang.com/download/down_form.html?c…

如何在React Native中使用文本输入组件?

You know, an app becomes more authentic and professional when there is the interaction between the app and the user. 您知道&#xff0c;当应用程序与用户之间存在交互时&#xff0c;该应用程序将变得更加真实和专业。 The text input component in react-native brin…

lvs负载均衡—NAT模式

NAT模式原理图 Virtual Server via NAT &#xff1a; 用地址翻译实现虚拟服务器,地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址,外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。 优点是节省IP …

Django1.9开发博客06- 模板继承

模板继承就是网站的多个页面可以共享同一个页面布局或者是页面的某几个部分的内容。通过这种方式你就需要在每个页面复制粘贴同样的代码了。 如果你想改变页面某个公共部分&#xff0c;你不需要每个页面的去修改&#xff0c;只需要修改一个模板就行了&#xff0c;这样最大化复用…

乐高机器人亮剑_2500名选手大比拼 全球机器人广州从化“亮剑”

导读&#xff1a;国际机器人从化总动员学生自己编程、拼装的机器人既能像相扑手一样摔跤&#xff0c;又能像蜘蛛侠一样爬上爬下。还有智能垃圾处理系统&#xff0c;瞄准城市垃圾分类下的“痛点”。在2019RoboRAVE国际教育机器人大会全球总决赛的现场&#xff0c;只有想不到&…