记录编号 342241 评测结果 AAAAAAAAAA
题目名称 [USACO Feb07] 掷骰子 最终得分 100
用户昵称 Gravatarlingyixiaoyao 是否通过 通过
代码语言 C++ 运行时间 0.041 s
提交时间 2016-11-08 10:44:59 内存使用 0.24 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
#include <climits>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <algorithm>
#include <set>
#include <deque>
#include <queue>
#include <string>
#include <map>
#include <stack>
#include <sstream>
#include <vector> 
#include <ctime>
#include <bitset>
using namespace std;

struct node
{
	int len;
	int jian2[20+10];
	int jian1[20+10];
}if1[100+10];
int len,ans1,ans2;
char s[10000+10];
int n,mian,m,sum;
int chuli[100+10];
int getint();

int dang[100+10];
bool pan;
void dfs(int x)
{
	for(int i=1;i<=m;i++)
	{
		pan=true;
		for(int j=1;j<=if1[i].len;j++)
		{
			if(dang[if1[i].jian1[j]]<if1[i].jian2[j])
			{
				pan=false; 
				break;
			}
		}
		if(pan==true)
		{
			break;	
		} 
	}
	if(pan==true)
	{
		sum+=(chuli[n-x+1]);
		return;
	}
	if(x==n+1)
		return;
	for(int i=1;i<=mian;i++)
	{
		dang[i]++;
		dfs(x+1);
		dang[i]--;
	}
}
int main()
{
	freopen("cowyotz.in","r",stdin);
	freopen("cowyotz.out","w",stdout);
	
	cin>>n>>mian>>m;
	chuli[1]=mian; chuli[0]=1;
	for(int i=2;i<=n;i++)
	{
		chuli[i]=chuli[i-1]*mian;
	}
	getchar();
	for(int i=1;i<=m;i++)
	{
		gets(s); int p=strlen(s);
		for(int j=0;j<p;j++)
		{
			if(s[j]>='0' && s[j]<='9')
			{
				if(!ans1)
					ans1=s[j]-'0';
				else
				{
					if1[i].len++;
					if1[i].jian1[if1[i].len]=s[j]-'0'; 
					if1[i].jian2[if1[i].len]=ans1;
					ans1=0;
				}
			}
		}
	}
	dfs(1);
	cout<<sum<<endl;
	return 0;
}
int getint()
{
	int x=0,s=1;
	char ch=' ';
	while (ch<'0' || ch>'9')
	{
		ch=getchar();
		if(ch=='-')
			s=-1;
	}
	do
	{
		x=x*10+ch-'0';
		ch=getchar();
	}while (ch>='0' && ch<='9');
	
	return x*s;
}