首页 > 代码库 > hdu1257(dp基础)
hdu1257(dp基础)
最近早上要上课的时候都只能做一些 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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。