AISing Programming Contest 2021(AtCoder Beginner Contest 202)ABCD

Posted JophieQu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AISing Programming Contest 2021(AtCoder Beginner Contest 202)ABCD相关的知识,希望对你有一定的参考价值。

A - Three Dice

void solves(){
	int a,b,c;cin>>a>>b>>c;
	cout<<21-a-b-c<<endl;
}

B - 180°

void solves(){
	cin>>s;
	for(int i=(int)s.size()-1;i>=0;--i){
		if(s[i]=='9')s[i]='6';
		else if(s[i]=='6')s[i]='9';
		cout<<s[i];
	}cout<<endl;
}

C - Made Up

int a[N],b[N],c[N],cnt[N],num[N],qq[N];
void solves(){
	int n;cin>>n;
	for(int i=1;i<=n;++i){
		cin>>a[i];
		++num[a[i]];
	}
	for(int i=1;i<=n;++i) cin>>b[i];
	for(int i=1;i<=n;++i){
		cin>>c[i];
		++cnt[c[i]];
	}
	for(int i=1;i<=n;++i){
		qq[b[i]]+=cnt[i];
	}
	ll ans=0;
	for(int i=1;i<=n;++i){
		ans+=qq[a[i]];
	}
	cout<<ans<<endl;
}

D - aab aba baa

艹,早知道打完蓝桥杯省赛后就该去补题,同样的知识点居然遇到了两次才开始学,我好sb,呜呜。昨晚瞎搞推了一个小时,思路是有一些但是不知道怎么写,感觉高中学的排列组合学了个寂寞,而且也因为蓝桥没补题愣是没和杨辉三角联系在一起,我自闭了,呜呜。
首先这个题肯定是不可能暴力做的,极限数据已经到了 C 60 30 = 118264581564861424 C_{60}^{30}=118264581564861424 C6030=118264581564861424了,暴力铁t
然后我们需要一些前置知识 杨辉三角与组合数

接着我们记‘a’的数量为a,‘b’的数量为b。在a、b均不为0的情况下,共有 C a + b a C_{a+b}^a Ca+ba种按字典序排下来的排列情况。
在字典序的排列中,我们只看第一个字母,分成两类有 C a + b a = C a + b − 1 a − 1 + C a + b − 1 b − 1 C_{a+b}^a=C_{a+b-1}^{a-1}+C_{a+b-1}^{b-1} Ca+ba=Ca+b1a1+Ca+b1b1
其中 C a + b − 1 a − 1 C_{a+b-1}^{a-1} Ca+b1a1是排在字典序前面以a开头的排列种类的数量, C a + b − 1 b − 1 C_{a+b-1}^{b-1} Ca+b1b1是排在后面以b开头的排列种类的数量。
所以我们可以通过比较k与 C a + b − 1 a − 1 C_{a+b-1}^{a-1} Ca+b1a1的大小来确定第一个字母是a还是b。然后再分治递推第二个字母是a还是b。

const int N=1e2+7;
ll dp[N][N];
void solves(){
	for(int i=0;i<=60;++i) dp[i][0]=1;
	for(int i=1;i<=60;++i){
		for(int j=1;j<=i;++j){
			dp[i][j]=dp[i-1][j]+dp[i-1][j-1];
		}
	}
	ll a,b,k;cin>>a>>b>>k;
	while(a&&b){
		if(dp[a+b-1][a-1]>=k){
			cout<<'a';--a;
		} else{
			k-=dp[a+b-1][a-1];
			cout<<'b';--b;
		}
	}
	while(a)cout<<'a',--a;
	while(b)cout<<'b',--b;
	cout<<endl;
}

以上是关于AISing Programming Contest 2021(AtCoder Beginner Contest 202)ABCD的主要内容,如果未能解决你的问题,请参考以下文章

AtCoder AISing Programming Contest 2019 Task D. Nearest Card Game

AISing Programming Contest 2021(AtCoder Beginner Contest 202)ABCD

AISing Programming Contest 2021(AtCoder Beginner Contest 202)ABCD

AISing Programming Contest 2021(AtCoder Beginner Contest 202) E

AISing Programming Contest 2021(AtCoder Beginner Contest 202)(补题)

AISing Programming Contest 2021(AtCoder Beginner Contest 202)D - aab aba baa