题意:给你n个数(n<=100,ai<=300)  一个T,求n重复T次的最长非递减子序列。

题解:我直接考虑4 3 2 1 的例子,当其重复4次时会出现1 2 3 4 的子序列 ,此时再怎么重复,这也是最长的递增序列,无非是多出(T-n)个1.

  所以直接不完全(不会证明地)归纳处一个答案:ans=T>n?(T-n)*M+lis(a,n*n):lis(a,n*T) .M是n个数中重复次数最多的数,lis函数输出a数列的最长非递减子序列.(考虑如果重复最多的数并非最长子序列的起始数的情况:比如1244,观察最后四个循环1244124412441244,lis不再是1244,而会自动变成44444444,所以大概是不用考虑的,反正是猜想,交一发试试呗)

坑:第一次没考虑序列重复的情况(看到ai<=300还以为是桶排);

然后ans的公式手抽写错了 写成(T-1);

最后发现

c++17.0会wa2

clang 17 dignosed 会报list的错改好后MLE 1

c++14.0缺AC了  OTZ

ac:

#define  _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<string.h>
using namespace std;
typedef long long ll;
const int maxn = + ;
int lis[maxn*maxn], a[maxn*maxn];
int c[], M;
int list(int arr[], int n)
{
int i, j, max;
max = ;
for (i = ; i <= n; i++)
lis[i] = ; for (i = ; i <= n; i++)
{
for (j = ; j<i; j++)
{
if (arr[i] >= arr[j] && lis[i]<lis[j] + )
lis[i] = lis[j] + ;
}
} for (i = ; i <= n; i++)
if (max < lis[i])
max = lis[i]; return max;
} int main() {
int n, t; int M;
cin >> n >> t;
for (int i = ; i <= n; i++)
cin >> a[i], c[a[i]]++, M = max(M, c[a[i]]);
for (int i = ; i <= n; i++) {
for (int j = ; j <= n; j++) {
a[i*n + j] = a[j];
}
}
if (t > n)cout << (t - n)*M + list(a, n*n) << endl;
else { cout << list(a, n*t) << endl;
//for (int i = 1; i <= t*n; i++)cout << a[i]; }
cin >> n;
}

CodeForces - 583D Once Again... LIS 循环的更多相关文章

  1. Codeforces 583D. Once Again... (LIS变形)

    题目链接:http://codeforces.com/contest/583/problem/D 给你t个长度为n的数组.问你最长不下降子序列的长度. 一开始用第一个n数组的lis和最后一个n数组的l ...

  2. Codeforces Zip-line 650D 345Div1D(LIS)

    传送门 大意:给出一个序列,求修改一个数过后的最长上升子序列. 思路:可以用主席树在线搞,也可以用树状数组离线搞,明显后者好写得多.我们首先读取所有的询问,然后就把询问绑在给出的位置,然后我们正向做一 ...

  3. 【17.07%】【codeforces 583D】Once Again...

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  4. python成长之路15

    一:JavaScript: JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的 ...

  5. Python 第十三篇之一:前端页面 js和dome

    一:JavaScript: JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的 ...

  6. html_Dom

    Document: 每个载入浏览器的HTML文档都会成为一个Document对象. Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问. 并且Document 对象是 Wi ...

  7. (十)操作数据库、xlrd、xlwt补充

    一.补充操作数据库: 1.建立游标时,指定返回的类型是字典 cur = coon.cursor(cursor=pymysql.cursors.DictCursor) 2.cur.fetchall()  ...

  8. python学习 day6 (3月7日)

    #__author : 'liuyang' #date : 2019/3/7 0007 a = ['a' , 'b' , 'c'] b = [] print(a is b ) # 空元组 可以 空列表 ...

  9. NOIP模拟1

    期望得分:100+100+100=300 实际得分:94+96+97=287 T1  #6090. 「Codeforces Round #418」尘封思绪 #include<cstdio> ...

随机推荐

  1. Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术

    3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...

  2. POJ 3273 Monthly Expense(二分搜索)

    Description Farmer John is an astounding accounting wizard and has realized he might run out of mone ...

  3. C++ mysql 乱码

    C++读mysql数据库中的中文显示出来的是乱码 在连接到数据库后加上这么一句 mysql_query(pMYSQL, "SET NAMES GB2312"); 或者 mysql_ ...

  4. 【AI】图像识别-物体检测-百度AI-EasyDL-NodeJS

    var https = require('https') var express = require('express'); var app = express(); var bodyParser = ...

  5. 执行RF设置顶级测试套件的名称

    场景1:通过pybot进行单个output文件情况下设置 -N --name name 设置顶级测试套件的名称.名称中的下划线将转换为空格. 默认名称为执行的数据源的名称. 场景2:通过rebot进行 ...

  6. [Ubuntu] apt 添加第三方库

    1. 方法一:直接在 /etc/apt/sources.list 添加第三方库. $ sudo vi /etc/apt/sources.list 在其中添加: deb http://archive.s ...

  7. jQuery ajax中serialize()方法增加其他参数

    表单提交 使用jQuery.ajax()进行表单提交时,需要传递参数,最直接的方法便是使用Form的serializa()将表单序列化,前提只是将Form表单中的name属性与数据库的字段名保持一致便 ...

  8. codeforces水题100道 第一题 Codeforces Beta Round #1 A. Theatre Square (math)

    题目链接:http://www.codeforces.com/problemset/problem/1/A题意:至少用多少块边长为a的方块铺满NxM的矩形区域.C++代码: #include < ...

  9. Linux下的XAMPP基本配置技巧(设置虚拟主机、添加FTP账户等)

    xampp安装好之后就只有一个默认站点及一个默认nobody的ftp账户,这显然不符合我们平时的需求了,那么下面就来讲一下如何设置并管理多个虚拟主机及ftp账户了,至于xampp的安装不在此讨论范围, ...

  10. Android.mk(4) 依赖:目标编程的模式

    https://www.jianshu.com/p/3777a585a8d0 另一种范式 我一直觉得,Makefile确实是C/C++程序员的良配,因为Makefile所使用的两种范式都是C/C++程 ...