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 |
不会超吧~~~~~In Reply To:从1011改过来的果真超时了,真是奇怪啊。原来1011的数据真的弱了。 Posted by:yogafrank at 2008-09-08 13:34:22 > 大牛帮忙剪剪啊!!! > > #include <iostream> > #include <algorithm> > using namespace std; > > const int N = 4; > int sticks[20]; > bool used[20]; > int m, side; > > bool cmp ( int a, int b ) > { > return a <= b; > } > > bool search ( int count, int left, int pos ) > { > bool flag = false; > > if ( count == N ) > return true; > if ( left == side ) > flag = true; > > for ( int i = 0; i < m; i++ ) > { > if ( !used[i] ) > { > if ( left > sticks[i] ) > { > used[i] = true; > > if ( search ( count, left - sticks[i], pos + 1 ) ) > return true; > used[i] = false; > > if ( flag ) > return false; > } > else if ( left == sticks[i] ) > { > used[i] = true; > > if ( search ( count + 1, side, 0 ) ) > return true; > used[i] = false; > > return false; > } > } > } > > return false; > } > > bool isbigger () > { > for ( int i = 0; i < m; i++ ) > if ( sticks[i] > side ) > return true; > return false; > } > > int main() > { > int t; > freopen ( "1909.txt", "r", stdin ); > for ( cin >> t; t > 0; t-- ) > { > cin >> m; > > for ( int i = 0; i < m; i++ ) > cin >> sticks[i]; > > sort ( sticks, sticks + m, cmp ); > > int len = 0; > for ( int j = 0; j < m; j++ ) > len += sticks[j]; > > side = len / N; > if ( len % 4 != 0 || isbigger () ) > { > cout << "no\n"; > continue; > } > > memset ( used, false, sizeof ( used ) ); > > if ( search ( 0, side, 0 ) ) > cout << "yes\n"; > else > cout << "no\n"; > } > > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator