V型积木(dp)
来源:互联网 发布:儿童读书软件 编辑:程序博客网 时间:2024/05/14 07:09
Dr.Wu的宝宝1岁了,所以Dr.Wu准备买些积木给宝宝玩,促进孩子大脑的发育。由于宝宝太小,所以他将高低不同的积木摆放的毫无规律(如图A)。然而Dr.Wu发现,如果从当前的积木中抽走一部分(图B,C中虚线的即表示抽走的积木),剩下的积木能够呈现出“V”形,即积木的高度先严格递减,然后严格递增。图B中,需要抽走三个积木,剩下的积木就可以呈现出“V”形,而图C中仅需抽走一根积木。Dr.Wu需要你帮忙找出最少抽走多少积木,剩下的积木就能呈现出“V”型?Input第一行: T 表示以下有T组测试数据(1≤T ≤8)对每组测试数据:第一行: N表示积木的个数。 (2<N<=100),第二行是空格隔开的N个正整数,每个正整数Hi表示第i个积木的高度(0<Hi<=10000)。输出中,仅一个数,即最少抽走的积木数。如果怎么抽走积木都无法呈现出“V”形,则输出“No Solution”。Output每组测试数据,输出占一行,仅一个数,即最少抽走的积木数。如果怎么抽走积木都无法呈现出“V”形,则输出“No Solution”。Sample Input2650 30 40 10 20 6065 4 3 1 2 6Sample Output10
思路:枚举所有最低点O(n),求左部分最长下降子序列和右部分最长上升子序列O(2*n^2),再用总长减去两者即可;
时间复杂度:O(n^3)
代码:
#include <bits/stdc++.h>using namespace std;const int MAXN = 110;int n;int a[MAXN];int dp[MAXN]; int main() { int T; cin >> T; while (T--) { cin >> n; for(int i=0;i<n;i++) scanf("%d", a + i);int ans = 0; for(int k=0;k<n;k++) { int res1=0; for (int i=0;i<=k;i++){ dp[i]=1; for(int j=0;j<i;j++) if (a[i] < a[j]) dp[i] = max(dp[i], dp[j] + 1);res1 = max(res1, dp[i]);} if (res1 == 0) continue;//res1==0说明没有下降子序列,继续下一个划分; int res2=0; for(int i=k;i<n;i++) { dp[i]=1; for(int j=k;j<i;j++) if (a[i] > a[j]) dp[i] = max(dp[i], dp[j] + 1);res2 = max(res2, dp[i]); }if (res2 == 0) continue;//如果res2==0说明没有上升子序列,继续下一个划分; ans = max(ans,res1+res2-1);//划分点重复用了一次; } if (ans == 0) cout << "No Solution" << endl; else cout << n - ans << endl; } return 0;}
阅读全文
0 0
- V型积木(dp)
- V型积木
- NOI1029 积木游戏(dp)
- SCU 4512 Goozy的积木(dp)
- [luogu2409]Y的积木(dp)
- #bzoj2240#积木游戏(DP? 贪心?)
- [DP] Tsin A1315 积木
- 【洛谷 P2409】Y的积木(dp(01背包))
- ecnu 1244 积木游戏(黑书)DP
- NOI 1997 积木游戏 (COGS 261) DP
- [SCU 4512] Goozy的积木 (状态优化DP)
- 洛谷 P2409 小Y的积木 (dp)
- Noip2013 Day2 T1 积木大赛(简单线性Dp)
- [DP][01背包]积木城堡
- 题目1410:垒积木 DP
- cogs261 [NOI1997] 积木游戏(dp)
- poj 1609 dp(堆积木能达到的最高层)
- DP堆积木的最大高度
- Ubuntu16.04系统中安装软件
- Activity反转后,Activity的生命周期的变化
- Linux GCC 进程创建
- 【BZOJ】1050 [HAOI2006]旅行comf 并查集
- 请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
- V型积木(dp)
- 【七日牧函】来一次属灵交谈
- CentOS 7上安装Tomcat
- js获取url指定得参数值
- POJ 2503 Babelfish G++
- JavaScript RegExp 对象
- tf教程(四):Adding a frame
- IO流之Commons IO 2.5-IOUtils
- 【Kotlin开发Android】开始一个新项目