【Luogu】 P3928 SAC E#1 - 一道简单题 Sequence2
【题目】洛谷10月月赛R1 提高组
【算法】递推DP+树状数组
【题解】列出DP递推方程,然后用树状数组维护前后缀和。
#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<algorithm>
#define lowbit(x) (x&-x)
#define ll long long
using namespace std;
int read(){
char c;int s=,t=;
while(!isdigit(c=getchar()))if(c=='-')t=-;
do{s=s*+c-'';}while(isdigit(c=getchar()));
return s*t;
}
int min(int a,int b){return a<b?a:b;}
int max(int a,int b){return a<b?b:a;}
int abs(int x){return x>?x:-x;}
//void insert(int u,int v){tot++;e[tot].v=v;e[tot].from=first[u];first[u]=tot;}
/*------------------------------------------------------------*/
const int inf=0x3f3f3f3f,maxn=; int n,a[maxn][],f[maxn][],ans,tot,c[][maxn],b[maxn]; void modify(int d,int x,int k){if(d&)x=tot-x+;for(int i=x;i<=tot;i+=lowbit(i))c[d][i]=max(c[d][i],k);}
int ask(int d,int x){if(d&)x=tot-x+;int as=;for(int i=x;i>=;i-=lowbit(i))as=max(as,c[d][i]);return as;}
int main(){
n=read();tot=;
for(int i=;i<=n;i++)a[i][]=read(),f[i][]=,b[++tot]=a[i][];
for(int i=;i<=n;i++)a[i][]=read(),f[i][]=,b[++tot]=a[i][];
for(int i=;i<=n;i++)a[i][]=read(),f[i][]=f[i][]=,b[++tot]=a[i][];
sort(b+,b+tot+);
tot=unique(b+,b+tot+)-b-;
for(int i=;i<=n;i++)a[i][]=lower_bound(b+,b+tot+,a[i][])-b;
for(int i=;i<=n;i++)a[i][]=lower_bound(b+,b+tot+,a[i][])-b;
for(int i=;i<=n;i++)a[i][]=lower_bound(b+,b+tot+,a[i][])-b;
modify(,a[][],);modify(,a[][],);modify(,a[][],);
modify(,a[][],);modify(,a[][],);modify(,a[][],);
modify(,a[][],);modify(,a[][],);modify(,a[][],);
modify(,a[][],);modify(,a[][],);modify(,a[][],);
for(int i=;i<=n;i++){
f[i][]=max(f[i][],ask(,a[i][])+);ans=max(ans,f[i][]);
f[i][]=max(f[i][],ask(,a[i][])+);ans=max(ans,f[i][]);
f[i][]=max(f[i][],ask(,a[i][])+);ans=max(ans,f[i][]);
f[i][]=max(f[i][],ask(,a[i][])+);ans=max(ans,f[i][]);
modify(,a[i][],f[i][]);modify(,a[i][],f[i][]);modify(,a[i][],max(f[i][],f[i][]));
modify(,a[i][],f[i][]);modify(,a[i][],f[i][]);modify(,a[i][],max(f[i][],f[i][]));
modify(,a[i][],f[i][]);modify(,a[i][],f[i][]);modify(,a[i][],f[i][]);
modify(,a[i][],f[i][]);modify(,a[i][],f[i][]);modify(,a[i][],f[i][]);//
}
printf("%d",ans);
return ;
}
【Luogu】 P3928 SAC E#1 - 一道简单题 Sequence2的更多相关文章
- P3928 SAC E#1 - 一道简单题 Sequence2
题目背景 小强和阿米巴是好朋友. 题目描述 小强喜欢数列.有一天,他心血来潮,写下了三个长度均为n的数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种,波动数列. 阿米巴把他的喜好告诉了小强.小强便打算 ...
- 洛谷P3928 SAC E#1 - 一道简单题 Sequence2
提交地址 题目背景 小强和阿米巴是好朋友. 题目描述 小强喜欢数列.有一天,他心血来潮,写下了三个长度均为n的数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种,波动数列. 阿米巴把他的喜好告诉了小强. ...
- 又一道简单题&&Ladygod(两道思维水题)
Ladygod Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- CSU 1785: 又一道简单题
1785: 又一道简单题 Submit Page Summary Time Limit: 5 Sec Memory Limit: 128 Mb Submitted: 602 ...
- 【Luogu】P3930 SAC E#1 - 一道大水题 Knight
[题目]洛谷10月月赛R1 提高组 [题意]给定n*n棋盘和<=16个棋子,给几个棋子种类和攻击范围,现我方只有一马,求能否吃王. [算法]状压+BFS [题解]16种棋子中,马不能吃马,直接处 ...
- 【Luogu】P3927 SAC E#1 - 一道中档题 Factorial
[题目]洛谷10月月赛R1 提高组 [题意]求n!在k进制下末尾0的个数,n<=1e18,k<=1e16. [题解]考虑10进制末尾0要考虑2和5,推广到k进制则将k分解质因数. 每个质因 ...
- 【洛谷十月月测】 P3927 SAC E#1 - 一道中档题 Factorial
题目传送门:https://www.luogu.org/problemnew/show/P3927 题目大意:给你两个正整数n,k,求n!在k进制下末尾零的数量. 我们通过简单的数学分析,便可以发现, ...
- SAC E#1 - 一道神题 Sequence1
题目背景 小强和阿米巴是好朋友. 题目描述 小强很喜欢数列.有一天,他心血来潮,写下了一个数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种:波动数列. 一个长度为n的波动数列满足对于任何i(1 < ...
- SAC E#1 - 一道中档题 Factorial
题目背景 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢阶乘.而SOL菌很喜欢研究进制. 这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘. SOL菌表示不服 ...
随机推荐
- ajax与servlet交互(通过JSON),JAVA的arraylist传到前端的方法
所实现的效果:首先从前端(ajax)传参数给servlet,然后servlet经过处理,把arraylist类型的参数以JSON字符串的形式返回给前端(ajax),然后前端经过解析,把JSON字符串解 ...
- Java-编译后出现$1.class、$2.class等多个class文件
部署代码的时候,由于自身技术不精和疏忽,导致查询数据没有正常显示, 排除法最后只能是放置部署文件时未包括多出来的$class文件.放上去之后果然好使了,才记录下这个问题... 这是因为在我们写的类中存 ...
- 优化mysql的内存
Mysql占用CPU过高的时候,该从哪些方面下手进行优化? 占用CPU过高,可以做如下考虑:1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processl ...
- Android 布局方式学习
一.LinearLayout线性布局: 线性布局是程序中最常见的一种布局方式,线性布局可以分为水平线性布局和垂直线性布局两种, 通过android:orientation属性可以设置线性布局的方向 1 ...
- 《Effective C#》快速笔记(三)- 使用 C# 表达设计
目录 二十一.限制类型的可见性 二十二.通过定义并实现接口替代继承 二十三.理解接口方法和虚方法的区别 二十四.用委托实现回调 二十五.用事件模式实现通知 二十六.避免返回对内部类对象的引用 二十七. ...
- 不清楚System.Diagnostics.Process.Start(e.LinkText); 的含义
using System; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms ...
- SpringMVC的工作流程-005
1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3. ...
- Lucene笔记一
Lucene就是一个全文检索的工具,建立索引用的,类似于新华字典的目录 这里使用的是lucene-4.4.0版本,入门代码所需jar包如下图所示(解压lucene-4.4.0后的目录): 入门代码: ...
- Python 源码剖析(二)【整数对象】
二.整数对象 1.PyIntObject 2.PyIntObject 对象的创建和维护 3.Hack PyIntObject 1.PyIntObject PyIntObject的定义: [intobj ...
- CentOS 压缩(打包)和解压
1.tar命令 -c 创建压缩文件 -x 解开压缩文件 -t 查看压缩包内有哪些文件 -z 用 Gzip压缩或解压 -j 用 bzip2压缩或解压 -v 显示压缩或解压的过程 -f 目标文件名,在 f ...