Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
为什么MLE啊?感觉没有超啊!难道递归太深,救命啊!用C++写的却用C提交,compile错了好几次!太绰了。改了C++后还是compile error!后来吧#include < iostream.h >之类的改成下面就不错了。 可是居然MLE了,实在是郁闷。那位达人给看看,谢谢了。 # include < string > # include < iostream > # include < fstream > //# define in cin using namespace std; class MyFile { public: int size; int *p; }; MyFile file[10000]; int conflict[10001]; bool used[10001]; int n, k, con = 0, mid, ori; int findlastavailable () { for ( int i = n; i >= 1; i -- ) if ( !used[i] ) return i; return -1; } int findfirst () { for ( int i = 1; i <= n; i ++ ) if ( conflict[i] != 0 ) return i; return -1; } bool circle ( int last, int now ) { if ( ori == now ) { mid = findlastavailable (); cout << last << " " << mid << endl; used[mid] = true; used[last] = false; return true; } if ( !used[now] ) { cout << last << " " << now << endl; used[now] = true; used[last] = false; return false; } bool value = circle ( now, conflict[now] ); conflict[last] = 0; conflict[now] = 0; cout << last << " " << now << endl; used[now] = true; used[last] = false; return value; } void release () { for ( int i = 0; i < k; i ++ ) delete file[i].p; } int main () { int i, j; bool flag = true; ifstream in ( "1033.txt" ); memset ( conflict, 0, sizeof ( conflict ) ); memset ( used, false, sizeof ( used ) ); in >> n >> k; for ( i = 0; i < k; i ++ ) { int size; in >> size; file[i].p = new int [size]; file[i].size = size; for ( j = 0; j < size; j ++ ) { in >> file[i].p[j]; used[file[i].p[j]] = true; } } int value = 1; for ( i = 0; i < k; i ++ ) { for ( j = 0; j < file[i].size; j ++ ) { if ( value == file[i].p[j] ) ; else if ( !used[value] ) { cout << file[i].p[j] << " " << value << endl; used[value] = true; used[file[i].p[j]] = false; flag = false; } else { conflict[file[i].p[j]] = value; flag = false; } value++; } } if ( flag ) { cout << "No optimization needed" << endl; release (); return 0; } int index = findfirst (); while ( index != -1 ) { ori = index; if ( circle ( index, conflict[index] ) ) { cout << mid << " " << index << endl; used[mid] = false; used[index] = true; } index = findfirst (); } release (); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator