帮忙见见时间主要浪费在哪里了
帮忙看看时间主要浪费在哪里了
我是新手 在做oj的时候遇到time limite exceed。 请帮我看看这到底主要是哪里浪费了时间
题目在这
http://ac.jobdu.com/problem.php?pid=1014
------解决方案--------------------
呃,没注意。你App里有一个string,这样排序会比较慢。不过如果数据量很小的话,倒还问题不大。
我是新手 在做oj的时候遇到time limite exceed。 请帮我看看这到底主要是哪里浪费了时间
题目在这
http://ac.jobdu.com/problem.php?pid=1014
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;
struct App
{
string id;
int point;
void clear()
{
id = "";
point = 0;
}
} ap;
bool cmp(const App& ap1, const App& ap2)
{
if(ap1.point == ap2.point)
return ap1.id < ap2.id;
return ap1.point > ap2.point;
}
int main()
{
freopen("in.txt", "r", stdin);
int N,M,G,n,m,*grade,i,ix;
string line;
vector<App> st;
while( (cin>>N), N )
{
n = 0;
st.clear();
cin>>M>>G;
grade = new int[M];
for(i=0; i<M; ++i)
{
cin>>grade[i];
}
cin.get();
for(i=0; i<N; ++i)
{
getline(cin,line);
istringstream iss(line);
ap.clear();
iss>>ap.id>>m;
while(m--)
{
iss>>ix;
ap.point+=grade[ix-1];
}
if(ap.point >= G)
{
++n;
st.push_back(ap);
}
}
sort(st.begin(),st.end(),cmp);
cout<<n<<endl;
for(i=0; i!=st.size(); ++i)
cout<<st.at(i).id<<" "<<st.at(i).point<<endl;
}
return 0;
}
------解决方案--------------------
呃,没注意。你App里有一个string,这样排序会比较慢。不过如果数据量很小的话,倒还问题不大。