题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5125

题解:

这个题dp[i][0],dp[i][1]数组分别记录在第i个位置取a[i]和b[i]时可以取到最长上升子序列的长度,然后开一个m[i][0]和m[i][1]分别表示取到第i个位置时最少的交换次数.然后进行4次比较,最后取最大值的时候非常巧妙,如果m[i][0]>M,那么证明这个序列里面多了 m[i][0]-M 个数,所以要减掉这么多个数.

蒟蒻感觉别人好强啊....

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include <queue>
using namespace std;
const int N = ;
int a[N],b[N],dp[N][],m[N][];
int main()
{
int tcase;
scanf("%d",&tcase);
while(tcase--){
int n,M;
scanf("%d%d",&n,&M);
for(int i=;i<=n;i++){
scanf("%d%d",&a[i],&b[i]);
}
memset(m,,sizeof(m));
memset(dp,,sizeof(dp));
dp[][] = dp[][]=m[][] =;
for(int i=;i<=n;i++){
dp[i][]=dp[i][] = m[i][] =;
for(int j=;j<i;j++){
if(a[i]>a[j]){
if(dp[i][]<dp[j][]+||dp[i][]==dp[j][]+&&m[i][]>m[j][]){
dp[i][] = dp[j][]+;
m[i][] = m[j][];
}
}if(a[i]>b[j]){
if(dp[i][]<dp[j][]+||dp[i][]==dp[j][]+&&m[i][]>m[j][]){
dp[i][] = dp[j][]+;
m[i][] = m[j][];
}
}if(b[i]>a[j]){
if(dp[i][]<dp[j][]+||dp[i][]==dp[j][]+&&m[i][]>m[j][]+){
dp[i][] = dp[j][]+;
m[i][] = m[j][]+;
}
}if(b[i]>b[j]){
if(dp[i][]<dp[j][]+||dp[i][]==dp[j][]+&&m[i][]>m[j][]+){
dp[i][] = dp[j][]+;
m[i][] = m[j][]+;
}
}
}
}
int MAX = ;
for(int i=;i<=n;i++){
if(m[i][]<=M) MAX = max(dp[i][],MAX);
else MAX = max(dp[i][]-m[i][]+M,MAX);
if(m[i][]<=M) MAX = max(dp[i][],MAX);
else MAX = max(dp[i][]-m[i][]+M,MAX);
}
printf("%d\n",MAX);
}
return ;
}

最新文章

  1. 【原】得心应手小工具开发——IE代理快速切换工具
  2. linux系统加快大文件的写入速度
  3. Odoo PDF 取消Header后 空白处理
  4. Linux命令学习总结:hexdump
  5. 事件委托和JQ事件绑定总结
  6. 转载文章----C#基础概念
  7. Winform使用外部浏览器解决webbrowser问题
  8. 36.Android之多线程和handle更新UI学习
  9. Partran,Nastran和ANSYS的区别
  10. html初学(三)
  11. (转)android屏幕适配
  12. Oracle 9 - 分析undo和snapshot too old错误
  13. EasyInvoice 使用教程 - (1) 认识 EI
  14. duck
  15. centos下ant的安装
  16. 【Python3爬虫】用Python中的队列来写爬虫
  17. tmux 简单介绍
  18. [SDOI2018]原题识别
  19. poj3273 Monthly Expense(二分搜索)
  20. iOS开发之--UIImageView的animationImages动画

热门文章

  1. P1182 数列分段Section II
  2. oracle(sql)基础篇系列(三)——数据维护语句、数据定义语句、伪列
  3. 关于safaire下hash前面需要加/(正斜杠)
  4. 服务过美国总统竞选的非传统投票UI【demo已放出】
  5. Remote使用出现的问题及解决办法
  6. winform-实现类似QQ停靠桌面上边缘隐藏的效果
  7. 孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1
  8. cloud-init介绍及源码解读
  9. Leetcode 662.二叉树最大宽度
  10. JavaScript里面之dom操作