最近早上要上课的时候都只能做一些 dp基础了。不过今天感觉还是十分失败的,我决定明天我要在脖子上搭一条湿毛巾,so hot!
题目很简单,读起来就很经典,可是我想了蛮久的..四十分钟最后才AC,真心弱。
大概意思是:中文题哦!!还要解释吗?
我的dp做法很暴力啊,我个人认为!!!!46MS,看来数据还是很正常的。
/*********************************************************** > OS : Linux 3.2.0-60-generic #91-Ubuntu > Author : yaolong > Mail : dengyaolong@yeah.net > Time : 2014年05月28日 星期三 07:10:05 **********************************************************/ #include<iostream> #include<cstdio> #include<string> #include<cstring> using namespace std; int mmax; int len; int dp[33333]; int main(){ int N; while(cin>>N){ int tmp; len=0; mmax=0; while(N--){ cin>>tmp; int ind,i,j;; for( i=0;i<len;i++){ if(dp[i]>tmp){ //找到一个已有的炮比它大 ind=i; break; } } if(i==len){ //没有,就开多支吧! dp[len++]=tmp; }else{ //有,就找比它大的最小那个~坑爹,看起来就是一个N^2算法啊!!! for(i=ind+1;i<len;i++){ if(dp[i]>tmp&&dp[i]<dp[ind]){ ind=i; } } dp[ind]=tmp; } } cout<<len<<endl; //输出多少支 } return 0; }
原文:http://blog.csdn.net/dengyaolongacmblog/article/details/27323825