第三届传智杯全国大学生IT技能大赛(决赛B组)【c++】

https://www.luogu.com.cn/contest/42328

目录

  • T172096 课程
  • T172097 序列
  • T172098 子串
  • T172099 打牌
  • T172100 商店

T172096 课程

第三届传智杯全国大学生IT技能大赛(决赛B组)【c++】_第1张图片
https://www.luogu.com.cn/problem/T172096?contestId=42343

#include
#include
using namespace std;
int hush[1005];
int n1,n2;
int number;
int sum;
int main(void)
{
     
	cin>>n1>>n2;
	for(int i=0;i<n1;i++) cin>>number,hush[number]++;
	for(int i=0;i<n2;i++) cin>>number,hush[number]++;
	for(int i=0;i<1005;i++)
		if(hush[i]>1) sum++;
	cout<<sum<<endl;
	return 0;
}

T172097 序列

第三届传智杯全国大学生IT技能大赛(决赛B组)【c++】_第2张图片
https://www.luogu.com.cn/problem/T172097?contestId=42343

#include
#include
using namespace std;
int n,k;
int a[1020];
int ans;
int main(void)
{
     
	cin>>n>>k;
	for(int i=0;i<n;i++) cin>>a[i];
	for(int i=0;i<n;i++)
	{
     
		for(int j=i+1;j<n;j++)
		{
     
			long long int sum=(long long)a[i]*a[j];
			if(sum<=k)
				ans++; 
		}
	} 
	cout<<ans<<endl;
	return 0;
}

T172098 子串

第三届传智杯全国大学生IT技能大赛(决赛B组)【c++】_第3张图片

https://www.luogu.com.cn/problem/T172098?contestId=42343

#include
#include
#include
#include
#include
using namespace std; 
int n;
int a,b;
int ans;
string s1,s2;
int main(void)
{
     
	cin>>n;
	for(int i=0;i<n;i++)
	{
     
		ans=0;
		cin>>a>>b;
		cin>>s1>>s2;
		for(int i=0;i<s1.size();i++) s1[i]=tolower(s1[i]); 
		for(int i=0;i<s2.size();i++) s2[i]=tolower(s2[i]); 
		for(int i=0;i<=(b-a);i++)
		{
     
			string s3=s2.substr(i,a);
			if(s3==s1) ans++;
		}
		cout<<ans<<endl;
	} 
}

T172099 打牌

第三届传智杯全国大学生IT技能大赛(决赛B组)【c++】_第4张图片
https://www.luogu.com.cn/problem/T172099?contestId=42343

代码是转载自:https://blog.csdn.net/Niklaus_Mikael/article/details/115292810

#include
using namespace std;
int n,m;
int have[5][55];
int used[5];//使用的排数 

int game()
{
     
    int player=0,stop=0,num=0,id=0;//选手编号   
    while(1)
	{
     
            int cando=0;
            int i,j;
            for(i=1;i<=n;i++)//一次打几张牌 
            {
      
				if(i>=num)
				{
     
                	for(j=1;j<=m;j++)
					if((have[player][j]>=i)&&((i==num&&j>id)||i>num))
					{
     
                    	cando=1;
                    	break;
                	}
                	if(cando)break;
            	}
			} 
            if(cando==0)//打了一轮了,重新初始化 。 
			{
     
                stop+=1;
                if(stop==2)//俩人不能接牌 
				{
     
                    num=0;
                    id=0;
                    stop=0;
                }
            }
			else//可以打 
			{
     
                stop=0;
                have[player][j]-=i;
                used[player]+=i;
                if(used[player]==n)//牌打完了 
				{
     
                    return player+1;
                }
                num=i;//牌的大小 
				id=j;//牌的张数 
            }
            player=(player+1)%3;
        }
}
int main(void)
{
     
    cin>>n>>m;
    for(int i=0;i<3;i++)
        for(int j=1,t;j<=n;j++)
		{
     
                cin>>t;
                have[i][t]+=1;
                
		}
    cout<<game()<<endl;
    return 0;
}

T172100 商店

第三届传智杯全国大学生IT技能大赛(决赛B组)【c++】_第5张图片
https://www.luogu.com.cn/problem/T172100?contestId=42343

#include
#include
#include
#include
#include
using namespace std; 
int n,m;
int ans;
int a[100005];
int b[100005];
int main(void)
{
     
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>a[i];
	for(int i=0;i<m;i++) cin>>b[i];
	sort(a,a+n),sort(b,b+m);
	int temp=n-1;
	for(int i=m-1;i>=0;i--)
	{
     
		if(a[temp]>=b[i])
		{
     
			ans++;
			if(temp==0)
			{
     
				break;
			}
			temp--;
		}
	}
	cout<<ans<<endl;
}

你可能感兴趣的:(编程比赛,算法)