GMPCP 粵澳熱身賽

重要提醒:
1、每道題都要看清題目是否測試多組數據,若是,則要加while(~scanf("%d",&cnt))類似的代碼
2、輸出結果的最後一定要加換行符(’\n’)
3、一定要仔細仔細再仔細!!!

官方題解:2020年粵澳熱身賽轉型題解

個人題解

A題:莫斯方塊

提升題,不會

B題:互評成績計算

AC代碼:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int cnt,tmp;
	while(~scanf("%d %d",&cnt,&tmp)) //測試多組數據
	{
		for(int j=0;j<cnt;j++)
		{
			int tea,a,mi=101,mn=-1,k=0,sum=0;
			cin>>tea;
			for(int i=1;i<cnt;i++)
			{
				cin>>a;
				if(a<=tmp&&a>=0)
				{
					mi=min(a,mi);
					mn=max(a,mn);
					sum+=a;
					k++;
				}
			}
			printf("%d\n",(int)(((sum-mi-mn)*1.0/(k-2) + tea)/2.0+0.5)); //包含四捨五入的小技巧
		}
	}
	return 0;
}

C題:活動總檯

變態題,不會

D題:發現字符串中出現次數最多的字母

AC代碼:

#include<bits/stdc++.h>
using namespace std;
int num[27]={0};
int main()
{
	string s;
	cin>>s;
	int len=s.length();
	int i=0;
	for(int i=0;i<len;i++)
	{
		num[s[i]-'a'+1]++;
	}
	int maxn=0;
	char big;
	for(int i=1;i<=len;i++)
	{
		if(num[i]>maxn)
		{
			big=i+'a'-1;
			maxn=num[i];
		}
	}
	for(int i=0;i<len;i++)
	{
		cout<<s[i];
		if(s[i]==big)
			cout<<"(出現了"<<maxn<<"次)";
		if(i==len-1)
			cout<<endl; //記得加換行符
	}
	return 0;
}

E題:度假酒店

AC代碼:

#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main(){
    ll n,m,total,num[3];
    while(~scanf("%lld %lld %lld",&num[0],&num[1],&num[2]))
	{
        sort(num,num + 3);
        ll min = num[2] - 1;
        ll ans = 0;
        if(min - num[1] > 0)
            ans += min - num[1];
        if(min - num[0] > 0)
            ans += min - num[0];
        printf("%lld\n",ans);
    }
}

是真的想不明白,我最怕這種找規律題了,突破口可能是在 樣例 2、3 中,1-1=01000000000000000000-1=999999999999999999

F題:三人成百

AC代碼:

#include <bits/stdc++.h>
using namespace std;
vector<int> tmp;
int main()
{
	int a;
	while(cin>>a)
	{
		if(a==0)
			break;
		tmp.push_back(a);
	}
	int flag=0;
	sort(tmp.begin(),tmp.end());
	for(int i=0;i<tmp.size()-2;i++)
	{
		if((tmp[i]!=tmp[i-1]&&i>0)||i==0)
		{
			for(int j=i+1;j<tmp.size()-1;j++)
			{
				if((tmp[j]!=tmp[j-1]&&j>i+1)||j==i+1)
				{
					for(int k=j+1;k<tmp.size();k++)
					{
						if((tmp[k]!=tmp[k-1]&&k>j+1)||k==j+1)
						{
							if(tmp[i]+tmp[j]+tmp[k]==100)
							{
								cout<<tmp[i]<<' '<<tmp[j]<<' '<<tmp[k]<<' '<<endl;
								flag=1;
							}
						}
					}
				}
			}
		}
	}
	
	if(flag==0) cout<<"NO"<<endl; //不存在輸出 NO
	return 0;
}

WeJudge 題庫

莫斯方塊(題號2472)、活動總檯(題號2480)、度假酒店(題號1492)在 《北師珠ACM題庫》 中
互動成績計算(題號2258)、找出字符串中出現次數最多的字母(題號3916)、三人成百(題號3972)在 《GMCPC練習題》 中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章