成就:赛后在cf使用错误的贪心通过一题

成就:在cf上赛后提交hack数据

成就:在cf上赛后hack自己

题目大意

有一长度$n \le 2\times 10^5$的序列,要求判断是否能够划分为一个严格递增和一个严格递减的子序列并给出划分方案。


题目分析

错误的贪心

截止现在(4.22),这一种错误贪心尚可以通过此题。

算法流程:考虑处理出一个LIS和一个LDS,并检查剩下的元素是否为LDS/LIS.

这个算法在随机构造下是基本没问题的(因此跑了47000+组随机数据才rand出一组反例)。

事实上,如果枚举每一个LIS/LDS,这个做法就是显然正确的,但是复杂度会有相当影响(例如一个完全非法但是LIS/LDS非常多的数列)

清真dp

记$f_{i,0}$为:$i$处在一个上升子序列中,$1\cdots i-1$的下降子序列最高为$f_{i,0}$;$f_{i,1}$同理。

这个状态显然是需要贪心取最大/最小的,那么这个转移就可以做到$O(1)$,相当高效。

 #include<bits/stdc++.h>
const int maxn = ;
const int INF = 2e9; int n,a[maxn],p[maxn][],f[maxn][]; int read()
{
char ch = getchar();
int num = , fl = ;
for (; !isdigit(ch); ch=getchar())
if (ch=='-') fl = -;
for (; isdigit(ch); ch=getchar())
num = (num<<)+(num<<)+ch-;
return num*fl;
}
void print(int x, int c)
{
if (x > ) print(x-, p[x][c]);
printf("%d ",c);
}
int main()
{
n = read();
for (int i=; i<=n; i++) a[i] = read();
f[][] = INF, f[][] = -INF;
for (int i=; i<=n; i++)
{
f[i][] = -INF, f[i][] = INF;
if (a[i] > a[i-]&&f[i][] < f[i-][]) f[i][] = f[i-][], p[i][] = ;
if (a[i] < a[i-]&&f[i][] > f[i-][]) f[i][] = f[i-][], p[i][] = ;
if (a[i] > f[i-][]&&f[i][] < a[i-]) f[i][] = a[i-], p[i][] = ;
if (a[i] < f[i-][]&&f[i][] > a[i-]) f[i][] = a[i-], p[i][] = ;
}
if (f[n][]!=-INF) puts("YES"), print(n, ), exit();
if (f[n][]!=INF) puts("YES"), print(n, ), exit();
puts("NO");
return ;
}

END

【清真dp】cf1144G. Two Merged Sequences的更多相关文章

  1. Codeforces #550 (Div3) - G.Two Merged Sequences(dp / 贪心)

    Problem  Codeforces #550 (Div3) - G.Two Merged Sequences Time Limit: 2000 mSec Problem Description T ...

  2. Codeforces 1144G Two Merged Sequences dp

    Two Merged Sequences 感觉是个垃圾题啊, 为什么过的人这么少.. dp[ i ][ 0 ]表示处理完前 i 个, 第 i 个是递增序列序列里的元素,递减序列的最大值. dp[ i ...

  3. 【(待重做)树状数组+dp+离散化】Counting Sequences

    https://www.bnuoj.com/v3/contest_show.php?cid=9149#problem/G [题意] 给定一个数组a,问这个数组有多少个子序列,满足子序列中任意两个相邻数 ...

  4. Codeforces 1144G Two Merged Sequences

    题意: 将一个序列分成两个序列,两个序列中元素的相对顺序保持和原序列不变,使得分出的两个序列一个严格上升,一个严格下降. 思路: 我们考虑每个元素都要进入其中一个序列. 那么我们维护一个上升序列和一个 ...

  5. 1144G Two Merged Sequences ( 贪心+构造)

    题目:https://codeforces.com/problemset/problem/1144/G 题意: 将一个序列分成两个序列,两个序列中元素的相对顺序保持和原序列不变,使得分出的两个序列一个 ...

  6. Two Merged Sequences CodeForces - 1144G (暴力)

    大意: 给定序列, 求划分为一个严格递增子序列和一个严格递减子序列, 可以为空. 跟 125D 类似的一个题, 直接暴力dfs, 用当前序列长度来剪枝, 状态不会太多, 但是会被一些数据卡掉, 特判一 ...

  7. CF集萃3

    CF1118F2 - Tree Cutting 题意:给你一棵树,每个点被染成了k种颜色之一或者没有颜色.你要切断恰k - 1条边使得不存在两个异色点在同一连通块内.求方案数. 解:对每颜色构建最小斯 ...

  8. The algorithm learning of sort which include Bubblesort,Insertsort,Quicksort and Mergesort.

    Notice : these algorithms achieved by Java. So,let's going to it. firstly, what is Bubblesort? why w ...

  9. CF550 DIV3

    A - Diverse Strings CodeForces - 1144A A string is called diverse if it contains consecutive (adjace ...

随机推荐

  1. express中connect-flash中间件的使用

    在学习node的时候,flash是困扰我最久的一个中间件,之前一直都没有很好的理解,这里做一个总结. 参考自:http://yunkus.com/connect-flash-usage/ 什么是fla ...

  2. RadControl使用相同的Theme

    我們僅須對兩個地方加一些程式碼,就可使所有的RadControl擁用相的Theme,如此一下不但可使Ap內布景主題一致,設計者亦不需要對每個控件做字型,顏色,大小等等瑣碎的設計. App.Xaml.c ...

  3. HDU 4578——Transformation——————【线段树区间操作、确定操作顺序】

    Transformation Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 65535/65536 K (Java/Others)T ...

  4. 【转】linux之pmap命令!

    原贴:http://tonykorn97.itpub.net/post/6414/249221 linux之pmap命令! ====================================== ...

  5. SpingCloud微服务架构学习(一)之服务提供者与服务消费者

    微服务构建的是分布式系统,各个微服务之间通过网络进行服务调用,这就有了服务提供者(被调用方)和服务消费者(调用方),以电影售票系统为例,假设服务调用关系如下图所示: 围绕此场景,我们先编写一个用户微服 ...

  6. Android Studio 导入 AOSP 源码

    有了 AOSP 源码,接下来就是如何看了,可以直接文本看,可以用 Source Insight,我当然选择 Android Studio,Android Studio 是我熟悉且十分强大的工具.问题来 ...

  7. Android - 开发页面需了解的dip,sp,px知识,以及它们的转换

    工作中,时常会有任务要求开发新页面,这时一般的流程是产品经理确定要开发的页面和功能,然后设计师提供设计稿,之后由我们开发人员完成开发工作. 通常,设计师提供的设计稿尺寸标注会很详细,例如涉及到字时,字 ...

  8. 【工作中学习】CreateProcessAsUser失败,错误码:1314

    事情起因是这样, 产品的Windows服务(Service)之前一直是用Local System Account在运行的,但这个版本有需求要换成使用普通的Domain User来运行,如下图: 但却出 ...

  9. selenium学习备忘

    在做web项目的自动化端到端测试时主要使用的是Selenium WebDriver来驱动浏览器.Selenium WebDriver的优点是支持的语言多,支持的浏览器多.主流的浏览器Chrome.Fi ...

  10. Azure资源模板化部署,伦家不懒都不好意思了

    如果老板让你在云平台上部署一套系统,你准备怎么做? 嗯,估计得根据具体需求开通或创建一大堆东西:虚拟机.存储.数据库.虚拟网络……别急还没完,接着还要对这些东西的规模.配置等各方面调整和优化.一系列环 ...