UVAOJ 497 - Strategic Defense Initiative
裸的LIS,根本不需要NlogN,虽然我还是用了
497 - Strategic Defense Initiative
#include <cstdio>
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int f[65535];
vector<int> row;
vector<int> b;
int n;
int ans;
int bsearch(int &x,int size)
{
int l = 0;int r = size-1;
while(l<=r)
{
int m = (l+r)/2;
if (x > b[m]) l=m+1;
else r=m-1;
}
b[l] = x;
return l;
}
void init()
{
row.clear();
b.clear();
string str;
stringstream temp;
temp.clear();
while(getline(cin,str))
{
temp<<str;
int x;
temp>>x;
row.push_back(x);
temp.clear();
}
f[0] = 0; b.push_back(row[0]);
}
int dp()
{
for (int i=1;i<row.size();i++)
{
if (row[i] > b.back())
{
b.push_back(row[i]);
f[i]=b.size();
}
else
{
f[i]=bsearch(row[i],b.size())+1;
}
}
return b.size();
}
void output(int cas)
{
int flag = ans;
cout<<"Max hits: "<<ans<<endl;
for (int i=row.size()-1;i>=0;i--)
{
if (f[i] == flag)
{cout<<row[i]<<endl;
flag--;
}
if (flag == -1)
break;
}
return;
}
int main()
{
freopen("ex.in","r",stdin);
cin>>n;
for (int i=1;i<=n;i++)
{
init();
ans = dp();
output(i);
}
return 0;
}
posted on 2011-08-05 21:25 cherryunix 阅读(175) 评论(0) 收藏 举报

浙公网安备 33010602011771号