成就:赛后在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

最新文章

  1. Android+PHP+MYSQL把数据库中的数据显示在Android界面上
  2. MySQL_PHP学习笔记_2015_0614_PHP传参总结_URL传参_表单传参
  3. SQL入门
  4. Unity4.3.3 烘焙踩坑
  5. 快速设置IP的脚本
  6. UltraEdit环境下,php简单环境配置
  7. Data visualization 课程 笔记3
  8. JavaBean自动生成get和set方法
  9. DevOps之归纳总结
  10. Activity 之生命周期
  11. webstorm 2018.2.3 cmd+w无法关闭文件
  12. svn忽略不需要同步的文件夹或文件
  13. 学习 Spring (四) Bean 的生命周期
  14. Windows server 安装 OpenSSH
  15. 【Python】socket模块应用
  16. TCP连接的建立和断开
  17. mysql source导入多个sql文件
  18. WebApi入门
  19. Linux-软件包管理-yum在线管理-yum命令
  20. Ionic2文档整理

热门文章

  1. [转]javascript实现限制上传文件的大​​小
  2. php 自带加密、解密函数
  3. Zend Optimizer安装、配置
  4. Prestashop后台模块(中英转译)
  5. 如何使用rem单位
  6. POJ 2594 —— Treasure Exploration——————【最小路径覆盖、可重点、floyd传递闭包】
  7. windows常用命令行总结
  8. C#开发短信的方法和简介(转)
  9. 织梦上传webp格式图片
  10. 【起航计划 016】2015 起航计划 Android APIDemo的魔鬼步伐 15 App-&gt;Activity-&gt;Wallpaper 系统壁纸作为当前Activity的背景