这题的题解的贪心都是错误的...正解应该是个DP

  考虑有哪些有关的条件:两个序列的当前长度, 两个序列的末尾数, 把这些都压进状态显然是会GG的

  考虑两个长度加起来那一位的数一定是其中一个序列的末尾, 而我们要末尾的数尽量小, 所以完全可以把这个DP缩成两维

  设f[i][j]为当前选到第i位, a[i]选入第一个序列, 则末尾为a[i], 第一个序列长度为j, 则第二个序列长度为i-j时第二个序列末尾的数最小为多少。

  则有 if(a[i]<a[i+1]) f[i+1][j+1]=min(f[i+1][j+1], f[i][j])

     if(f[i][j]<a[i+1]) f[i+1][i+1-j]=min(f[i+1][i+1-j], a[i]) (此时第一个序列和第二个序列互换了)

  互换的思想真的非常喵喵哇....第一次见到T T

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=2010, inf=1e9;
int n;
int f[maxn][maxn], a[maxn];
inline void read(int &k)
{int f=1; k=0; char c=getchar();while(c<'0' || c>'9') c=='-'&&(f=-1), c=getchar();while(c<='9' && c>='0') k=k*10+c-'0', c=getchar();k*=f;
}
inline int min(int a, int b){return a<b?a:b;}
int main()
{while(scanf("%d", &n)!=EOF){for(int i=1;i<=n;i++) read(a[i]);for(int i=1;i<=n;i++) for(int j=0;j<=i;j++) f[i][j]=inf;for(int i=0;i<n;i++)for(int j=0;j<=i;j++){if(a[i]<a[i+1]) f[i+1][j+1]=min(f[i+1][j+1], f[i][j]);if(f[i][j]<a[i+1]) f[i+1][i-j+1]=min(f[i+1][i-j+1], a[i]);}printf("%s\n", (f[n][n>>1]!=inf)?"Yes!":"No!");}
}

View Code

转载于:https://www.cnblogs.com/Sakits/p/7794578.html

洛谷 P1410 子序列(DP)相关推荐

  1. 洛谷P1410 子序列【玄学DP】【绿】

    Date:2022.03.23 题目描述 给定一个长度为 NN(NN 为偶数)的序列,问能否将其划分为两个长度为 N / 2N/2 的严格递增子序列. 输入格式 若干行,每行表示一组数据. 对于每组数 ...

  2. 洛谷1846 游戏 dp

    题目链接 题意: 给定两个正整数数列,你要用它们来做一个游戏:你需要对数列进行若干次操作,每一次操作,应选择两个正整数K1和K2 ,并删除第一个数列的最后K1个数,计算出它们的和S1:删除第二个数列的 ...

  3. 洛谷P3146 区间dp做题笔记

    不是题解,不是题解,不是题解,纯属个人笔记,不知所言. 传送门:P3146 问:什么时候才能写的一手漂亮的dp? 答:夜深人静之时,魂归故里之日. 此题是一道基础的区间dp的题,看完题解犹豫片刻,之后 ...

  4. 洛谷1373(dp)

    常规线性dp,需要时就加一维.\(dp[i][j][t][s]\)表示在点\((i,j)\)时瓶子里剩\(t\)且为\(s\)走(0代表小a,1代表uim)时的方案数. de了半天发现是初次尝试的快速 ...

  5. 洛谷--橙色百道DP总结

    最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...

  6. 洛谷 深基 第4部分 基础数学与数论(19-21课)

    洛谷 深基 第4部分 基础数学与数论  第19章 位运算与进制转换 P1143 进制转换 https://www.luogu.com.cn/problem/P1143 洛谷P1143 进制转换的Pyt ...

  7. 洛谷 U266184 宠物小精灵之收服

    题目链接:宠物小精灵之收服 - 洛谷 标签:dp.背包问题 思路: 精灵球个数 与 对皮卡丘的伤害 都可以看成背包问题中的体积,所以将dp数组升级为二维 dp[i][j]表示 i个精灵球 j滴血皮卡丘 ...

  8. 洛谷P2766-最长递增子序列问题

    chunlvxiong的博客 题目描述: 给定正整数序列x1,...,xn (1≤n≤500). 1.计算其最长递增子序列的长度s. 2.计算从给定的序列中最多可取出多少个长度为s的递增子序列. 3. ...

  9. 动态规划——最长公共子序列(洛谷P1439)

    题目选自洛谷P1439 动态规划的模板题,最长公共子序列 1.譬如给定2个序列: 1 2 3 4 53 2 1 4 5 试求出最长的公共子序列. 那么 最普通的 LCS 代码: #include< ...

最新文章

  1. Redmine+Apache+SVN+Postfix完整配置指南
  2. 6/5 补瓷砖,购浴缸
  3. 云计算,能回答地球最终流浪到哪里吗?
  4. 【Python】一种超简单的变量交换方法
  5. 无人车火了 百度是如何做到的?
  6. (数据库系统概论|王珊)第九章关系查询处理和关系优化-第一节:查询处理
  7. [转载] python numpy矩阵运算加速器 NumExpr
  8. MySQL数据库开发的三十六条军规
  9. oracle脑裂的判断机制,Keepalived两节点出现双VIP的情况(脑裂)
  10. salt 源码之 salt-minion启动过程
  11. android dff播放器,无损音乐解码播放器
  12. 泛微OA云桥 未授权任意文件读取
  13. 2021年高处安装、维护、拆除新版试题及高处安装、维护、拆除考试试卷
  14. 对微信卖小电影的一次内网漫游
  15. 关于计算机网络的学习
  16. 女性内分泌失调的8种症状
  17. 赛效:怎么用改图鸭进行一键Logo设计?
  18. mysql跳过安全_MYSQL安装之最新版MySQL手把手安装教程
  19. Android apk和aab互相转换
  20. 微信小程序中的页面文件和组件

热门文章

  1. Java常见的面试题(一)
  2. [转]linux系统增加swap大小方法(安装oracle可能需要)
  3. 红米android 版本,#MIUI#关于红米手机4高配版 Android版本适配的说明【miui9吧】_百度贴吧...
  4. max格式转obj小工具_PDF文件转JPG等图片格式的小工具
  5. 如果有一天,我们和甲方交换身份…
  6. oracle sql删除重复,【转帖】SQL Oracle删除重复记录
  7. redis取出list最边的一个_这几个Redis使用技巧,让你的程序快如闪电
  8. Mysql多表查询(案例1)
  9. mysql5.6英文版安装步骤_mysql5.6版本安装步骤详解
  10. 基带工程师是做什么的_【思唯网络学院】网络工程师认证可以用来做什么?