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

让你们见识一下傻瓜菜鸟怎么用STL昏头昏脑一次A的吧

Posted by 15914304086 at 2012-04-03 23:38:21 on Problem 3414
#include <iostream>
#include <deque>
#include <set>
#include <string>
using namespace std;

int main()
{
	int a,b,c,i,j,x,y,g;
	string aa;
	cin>>a>>b>>c;
	set<pair<int,int>> foll;
	deque<pair<string,pair<int,pair<int,int> > > > coll;
	coll.push_back(make_pair("01",make_pair(1,make_pair(a,0))));
	coll.push_back(make_pair("02",make_pair(1,make_pair(0,b))));
	foll.insert(make_pair(a,0));
	foll.insert(make_pair(0,b));
	while(!coll.empty())
	{
		aa=coll.front().first;
		x=coll.front().second.second.first;
		y=coll.front().second.second.second;
		g=coll.front().second.first;
		coll.pop_front();
		if (x==c || y==c)
			break;
		if (x<a && foll.find(make_pair(a,y))==foll.end())//装满1
		{
			coll.push_back(make_pair(aa+"01",make_pair(g+1,make_pair(a,y))));
			foll.insert(make_pair(a,y));
		}
		if (x)
		{
			if (foll.find(make_pair(0,y))==foll.end())//倒掉1
			{
				coll.push_back(make_pair(aa+"11",make_pair(g+1,make_pair(0,y))));
				foll.insert(make_pair(0,y));
			}
			//1倒入2
			i=x-b+y;
			if (i<0)
				i=0;
			j=y+x;
			if (j>b)
				j=b;
			if (foll.find(make_pair(i,j))==foll.end())
			{
				coll.push_back(make_pair(aa+"21",make_pair(g+1,make_pair(i,j))));
				foll.insert(make_pair(i,j));
			}
		}
		if (y)
		{
			if (foll.find(make_pair(x,0))==foll.end())
			{
				coll.push_back(make_pair(aa+"12",make_pair(g+1,make_pair(x,0))));
				foll.insert(make_pair(x,0));
			}
			j=y-a+x;
			if (j<0)
				j=0;
			i=x+y;
			if (i>a)
				i=a;
			if (foll.find(make_pair(i,j))==foll.end())
			{
				coll.push_back(make_pair(aa+"22",make_pair(g+1,make_pair(i,j))));
				foll.insert(make_pair(i,j));
			}
		}
		if (y<b && foll.find(make_pair(x,b))==foll.end())
		{
			coll.push_back(make_pair(aa+"02",make_pair(g+1,make_pair(x,b))));
			foll.insert(make_pair(x,b));
		}
		g=-1;
	}
	if (g==-1)
		cout<<"impossible"<<endl;
	else
	{
	cout<<g<<endl;
	c=aa.length();
	for (i=0;i<c;i+=2)
	{
		if (aa[i]=='0')
			cout<<"FILL("<<aa[i+1]<<')'<<endl;
		else
			if (aa[i]=='1')
				cout<<"DROP("<<aa[i+1]<<')'<<endl;
			else
				cout<<"POUR("<<aa[i+1]<<','<<char(99-aa[i+1])<<')'<<endl;
	}
	}
	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