【题目】洛谷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的更多相关文章

  1. P3928 SAC E#1 - 一道简单题 Sequence2

    题目背景 小强和阿米巴是好朋友. 题目描述 小强喜欢数列.有一天,他心血来潮,写下了三个长度均为n的数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种,波动数列. 阿米巴把他的喜好告诉了小强.小强便打算 ...

  2. 洛谷P3928 SAC E#1 - 一道简单题 Sequence2

    提交地址 题目背景 小强和阿米巴是好朋友. 题目描述 小强喜欢数列.有一天,他心血来潮,写下了三个长度均为n的数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种,波动数列. 阿米巴把他的喜好告诉了小强. ...

  3. 又一道简单题&&Ladygod(两道思维水题)

    Ladygod Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit S ...

  4. CSU 1785: 又一道简单题

    1785: 又一道简单题 Submit Page   Summary   Time Limit: 5 Sec     Memory Limit: 128 Mb     Submitted: 602   ...

  5. 【Luogu】P3930 SAC E#1 - 一道大水题 Knight

    [题目]洛谷10月月赛R1 提高组 [题意]给定n*n棋盘和<=16个棋子,给几个棋子种类和攻击范围,现我方只有一马,求能否吃王. [算法]状压+BFS [题解]16种棋子中,马不能吃马,直接处 ...

  6. 【Luogu】P3927 SAC E#1 - 一道中档题 Factorial

    [题目]洛谷10月月赛R1 提高组 [题意]求n!在k进制下末尾0的个数,n<=1e18,k<=1e16. [题解]考虑10进制末尾0要考虑2和5,推广到k进制则将k分解质因数. 每个质因 ...

  7. 【洛谷十月月测】 P3927 SAC E#1 - 一道中档题 Factorial

    题目传送门:https://www.luogu.org/problemnew/show/P3927 题目大意:给你两个正整数n,k,求n!在k进制下末尾零的数量. 我们通过简单的数学分析,便可以发现, ...

  8. SAC E#1 - 一道神题 Sequence1

    题目背景 小强和阿米巴是好朋友. 题目描述 小强很喜欢数列.有一天,他心血来潮,写下了一个数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种:波动数列. 一个长度为n的波动数列满足对于任何i(1 < ...

  9. SAC E#1 - 一道中档题 Factorial

    题目背景 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢阶乘.而SOL菌很喜欢研究进制. 这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘. SOL菌表示不服 ...

随机推荐

  1. Java中I/O流之轮换流

    Java 中的轮换流: 非常有用,可以把一个字节流转换成字符流. inputStreamReader, outputStreamReader Demo_1: import java.io.*; cla ...

  2. LintCode-71.二叉树的锯齿形层次遍历

    二叉树的锯齿形层次遍历 给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 返回其锯齿形的层次 ...

  3. iOS开发CAAnimation类动画, CATransition动画

    #pragma mark - CAAnimation类.实现动画 #pragma mark ** CABasicAnimation 动画 - (IBAction)handleCABasicAnimat ...

  4. OSG数学基础:坐标系变换

    三维实体对象需要经过一系列的坐标变换才能正确.真实地显示在屏幕上.在一个场景中,当读者对场景中的物体进行各种变换及相关操作时,坐标系变换是非常频繁的. 坐标系变换通常包括:世界坐标系-物体坐标系变换. ...

  5. alpha阶段个人总结(201521123034陈凯欣)

    一.个人总结 第 0 部分:基本数据结构和算法问题 大二的时候上过数据结构课,感觉自己没有学的太深入,就如之前结对编程时候四则运算有用到的二叉树来解决问题,对于二叉树就有个模糊的概念,实际动手操作起来 ...

  6. python爬虫--打开爬取页面

    def requests_view(response): import webbrowser requests_url = response.url base_url = '<head>& ...

  7. 使用source创建一个新项目(将本地项目文件和github远程库链接)

    1. 本地创建项目文件夹 2. 将本地的项目添加到source中(我使用的source版本为2.4.7.0) 3. github创建远程库  4. 关联本地项目文件和github库 确定添加就可以了. ...

  8. 使用gdb查看栈帧的情况, 没有ebp

    0x7fffffffdb58: 0x004005ba  0x00000000  0x00000000  0x00000000 <-----funcb的栈帧 [0x7fffffffdb60, 0x ...

  9. [剑指Offer] 62.二叉搜索树的第k个结点

    题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. [思路]遍历二叉搜索树,存入一个vector ...

  10. IE8 兼容CSS3 使用 PIE.htc

    在需要的标签中 div { border:; border-bottom: 10px solid transparent; border-image: url(../images/border-img ...