计蒜客 动态规划基础 蒜头跳木桩
2018-06-17 21:45:46来源:未知 阅读 ()
题目:
蒜头君面前有一排 n 个木桩,木桩的高度分别是h1,h2,h3?hn??。蒜头第一步可以跳到任意一个木桩,接下来的每一步蒜头不能往回跳只能往前跳,并且跳下一个木桩的高度 不大于 当前木桩。蒜头君希望能踩到尽量多的木桩,请你帮蒜头计算,最多能踩到多少个木桩。
输入格式
第一行输入一个整数 n 代表木桩个数。第二行输入 n 个整数h1,h2,h3?hn,分别代表 n 个木桩的高度。(1≤n≤1000,1≤hi≤100000)
输出格式
输出一个整数,代表最多能踩到的木桩个数,占一行。
样例输入
6
3 6 4 1 4 2
样例输出
4
思路
1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <algorithm> 5 #include <cstring> 6 using namespace std; 7 int n,a[1000+5],dp[1000+5],ans[1000+5],len; 8 int binarySearch(int arr[], int first, int end, int tar) 9 { 10 while (end > first) 11 { 12 int mid = (first+end)/2; 13 if (arr[mid]<tar) 14 { 15 end = mid; 16 } 17 else 18 { 19 first = mid+1; 20 } 21 } 22 return end; 23 } 24 int main() 25 { 26 cin >> n; 27 for (int i=1; i<=n; i++) 28 { 29 cin >> a[i]; 30 } 31 ans[1] = a[1]; 32 len = 1; 33 for (int i=2; i<=n; i++) 34 if (a[i] <= ans[len]) 35 ans[++len] = a[i]; 36 else 37 { 38 int pos = binarySearch(ans,1,len,a[i]); 39 ans[pos] = a[i]; 40 } 41 cout << len << endl; 42 return 0; 43 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:笔记-测试崩溃之memcpy_s
下一篇:Xp下麦克风设备及音量检测
- 如何0基础学习C/C++? 2020-06-06
- 复习C++语法--基础篇 2020-05-27
- C++基础 学习笔记六:复合类型之数组 2020-04-25
- C++基础 学习笔记五:重载之运算符重载 2020-04-23
- C++基础 学习笔记四:重载之函数重载 2020-04-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash