SWEET round3 T1题解
(前言)
然后发现,每一位都可以取
然后long long还没爆?QAQ?
所以窝为什么要开unsigned long long???
脑抽现场
吐槽
样例强?!
一开始我在代码中把true和false写反了……
结果还是跑过了四个样例???你们确定这样例强度够高???能查出低级错误???
AC代码放心抄
#include <bits/stdc++.h>//I love 万能头
using namespace std;
int n,k;
int a[19];
bool b[19][10];//定义
unsigned long long ans=1;//貌似只要long long……
int main()
{
cin>>n>>k;//输入
string mima;
cin>>mima;//密码
for(int i=1;i<=n;i++)
{
cin>>a[i];//输入第i位可能的情况
bool flag=false;//定义标记变量
for(int j=1;j<=a[i];j++)
{
char t;
cin>>t;//输入第i位的第j种可能
if(t==mima[i-1]) flag=true;//如果这种情况与密码的第i位相同就标记成可能
b[i][t-48]=true;//标记第i位第j种可能尝试
}
if(!flag)//没有???
{
cout<<-1<<endl;
return 0;//直 接 歇 菜
}
ans*=a[i];//排列组合
}
string p;
for(int i=1;i<=k;i++)//判断尝试的密码是否符合要求
{
cin>>p;//输入第i个尝试的字符串
bool flag=true;//定义标记变量
for(int j=0;j<n;j++)
if(!b[j+1][p[j]-48])//第j+1位没有在给定的尝试中出现过?!
{
flag=false;
break;//歇 菜 + 1
}
if(flag) ans--;//是尝试的组合之一,答案-1
}
cout<<ans<<endl;//输出
return 0;//完结撒花
}
提交……
Waiting……
Judging……
Accepted 100分
欧 耶