Codeforces Round #323 (Div. 1) B. Once Again... 暴力
B. Once Again...
Time Limit: 1 Sec
Memory Limit: 256 MB
题目连接
http://codeforces.com/contest/582/problem/B
Description
Input
Output
Print a single number — the length of a sought sequence.
Sample Input
4 33 1 4 2
Sample Output
5
HINT
题意
给你一个n*t这么长的序列,然后求最长不递减序列
其中a[i+n]=a[i]
题解:
暴力,如果t<=300,我们就直接暴力求就好了
如果t>的话,我们就大胆猜测,中间肯定是连续选一个数
那么我们就预处理前面以a[i]开始的最长,和后面的以a[i]最长是啥就好了~
代码:
#include<iostream> #include<stdio.h> #include<queue> #include<map> #include<algorithm> #include<string.h> using namespace std;#define maxn 3225020int a[maxn]; int dp1[maxn]; int dp2[maxn]; int dp3[maxn]; int lis[maxn];int main() {int n,t;scanf("%d%d",&n,&t);for(int i=1;i<=n;i++)scanf("%d",&a[i]);if(t<=300){int ans = 0;for(int i=1;i<=n;i++)for(int j=1;j<t;j++)a[j*n+i] = a[i];for(int i=1;i<=n*t;i++){lis[i]=1;for(int j=1;j<i;j++)if(a[i]>=a[j])lis[i]=max(lis[i],lis[j]+1);ans = max(lis[i],ans);}printf("%d\n",ans);return 0;}int k = 200;for(int i=1;i<=n;i++)dp2[a[i]]++;for(int i=1;i<=n;i++)for(int j=1;j<=k;j++)a[j*n+i] = a[i];for(int i=1;i<=k*n;i++){lis[i]=1;for(int j=1;j<i;j++)if(a[i]>=a[j])lis[i]=max(lis[i],lis[j]+1);dp1[a[i]] = max(dp1[a[i]],lis[i]);}memset(lis,0,sizeof(lis));reverse(a+1,a+1+k*n);for(int i=1;i<=k*n;i++){lis[i]=1;for(int j=1;j<i;j++)if(a[i]<=a[j])lis[i]=max(lis[i],lis[j]+1);dp3[a[i]] = max(dp3[a[i]],lis[i]);}int ans = 0;for(int i=0;i<=300;i++)for(int j=i;j<=300;j++)for(int m=j;m<=300;m++)ans = max(dp1[i]+dp2[j]*(t-2*k)+dp3[m],ans);printf("%d\n",ans); }
转载于:https://www.cnblogs.com/qscqesze/p/4854607.html
Codeforces Round #323 (Div. 1) B. Once Again... 暴力相关推荐
- Codeforces Round #323 (Div. 2) C. GCD Table
C. GCD Table 题目链接: http://codeforces.com/contest/583/problem/C 题意是给你n个数,可以构成n*n的GCD矩阵,矩阵里的元素顺序可以是任意的 ...
- 重复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, . ...
- Codeforces Round #323 (Div. 2) A. Asphalting Roads
A. Asphalting Roads time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #323 (Div. 2)
被进爷坑了,第二天的比赛改到了12点 水 A - Asphalting Roads /************************************************ * Author ...
- Codeforces Round #323 (Div. 2) C.GCD Table
C. GCD Table The GCD table G of size n × n for an array of positive integers a of length n is define ...
- Codeforces Round #323 (Div. 2): C. GCD Table(思维题)
题意: 给你一个长度为n的序列a[1]~a[n], 之后用这个序列生成一个n*n的矩阵,其中矩阵第i行第i列的值为a[i],第i行第j列(j!=i)的值为Gcd(a[i], a[j]),现在给你一个矩 ...
- Codeforces Round #102 (Div. 1) A. Help Farmer 暴力分解
A. Help Farmer 题目连接: http://www.codeforces.com/contest/142/problem/A Description Once upon a time in ...
- Codeforces Round #359 (Div. 2) C. Robbers' watch 暴力枚举
题目链接 题意是真的烦,到最后才知道是n个m其实就是限定表的两个时区的位数,所以所当数不够填满时区的时候前边自动补零 思路:首先来说不能有重复的数字的话,小时和分钟的总位数大于7肯定不行. 7的7次方 ...
- Codeforces Round #552 (Div. 3) E. Two Teams 暴力+双向链表
传送 题意:将n个人分成2个队,每次选取队伍中未被选取的最大值,然后顺便选取左边相邻的k个数(有多少拿多少) 问你最后队伍的分配情况. #include<bits/stdc++.h>usi ...
最新文章
- 壕!甲骨文创始人 8000 万美元买豪宅后打算拆掉
- 服务端JavaScript之Rhino
- 如何去除table的边框_如何擦玻璃,这些擦玻璃知识很实用
- jQuery接收后台返回的数据
- js中json的创建和解析
- POJ - 2186 Popular Cows(强连通缩点)
- 小练习——过滤掉出现次数最多的数据
- 安卓dts音频解码_DTS音效、解码、编码概念剖析
- NS3 MyApp Class Reference
- JavaScript将焦点设置为HTML表单元素
- Android AlertDialog 实现对话框 警告对话框、列表对话框、自定义对话框
- python 2.7版本解决TypeError: 'encoding' is an invalid keyword argument for this function
- python输入姓名输出欢迎你某某同学_Python交互环境下打印和输入函数的实例内容...
- CF18B/01背包
- 华硕重装后进入bios_华硕台式机重装系统win10按哪个键进入bios设置
- java练习:图书销售管理系统(三),出版社管理
- 数组,异质结构以及指针的详解
- OSPF路由协议详解与实战演练
- React多页面应用5(webpack生产环境配置,包括压缩js代码,图片转码等)
- 如何利用线圈的B-H磁滞回线量化磁环的性能及其对网络变压器的影响关系?