Problem Address:http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1099
没想到越来越顺手= =之前一直看别人做这道题,自己却没什么idea。
没想到今天写了一下,只测试了几组数据,连修改都没有就一次AC,而且Time=9Ms,Memory=208K。
值得庆幸一下~
不过还是要继续努力。
昨天订的算法导论没想到今天就到手了,很是快。赞一下~
之后还要好好加油啊!
这道题的AC率不高,可能少考虑到的因素就是每次的高度都应该给一个最适合的系统(即大于这个高度的最小的数),这样才不会错误。
简单的算法就是把每一个数分给最适合的系统,如果不存在这样的系统(即这个数大于任何系统)则得增加一个系统。
本来打算不用STL,不过想想用STL排一下序方便多了,便用了= =惭愧一下。
以下贴代码:
#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ vector<int>v; int n,i,j,x; while(scanf("%d", &n)!=EOF) { v.clear(); for (i=0; i<n; i++) { scanf("%d", &x); sort(v.begin(), v.end()); for (j=0; j<v.size(); j++) { if (x<=v[j]) break; } if (j!=v.size()) { v[j] = x; } else { v.push_back(x); } } printf("%d/n", v.size()); } return 0;}
