Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

从1011改过来的果真超时了,真是奇怪啊。原来1011的数据真的弱了。

Posted by yogafrank at 2008-09-08 13:34:22 on Problem 2362 and last updated at 2008-09-08 13:59:07
In Reply To:不剪枝会不超时把?给大家几组数据测试测试? Posted by:ssadwlll at 2008-07-01 14:15:24
大牛帮忙剪剪啊!!!

#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator