2021个人训练赛第10场(补题场)

问题 A: No Problem!

题意:
将获得一年中每个月产生的问题数量和每个月所需的问题数量。如果一个月内需要N个问题,而此时没有足够的问题,则该月的所有比赛都会被取消。编写一个程序,以确定是否有足够的问题参加比赛。请记住,如果问题在X月中创建,则只能在X+1月和后几个月使用。

解题思路:
前缀和相减。

AC代码:

问题 K: 足球联赛

题意:
以样例1为例:
3
-1 -1 4 3 1 2
0 0 -1 -1 3 0
1 2 1 1 -1 -1

根据足球联赛的得分规则,以双方进球多少评判比赛胜负,比赛战平(进球数一样多),双方各得1分;如果比赛分出胜负,那么获胜方(进球多的)得到3分,输的那方不得分。
队1在主场一胜一负,得到3分,在客场一胜一平,得到4分。队1的总积分为7分。
队2在主场一胜一平,得到4分,在客场一平一负,得到1分,队2的总积分为5分。
队3总得分为4分
因此,队1分数最高,可以获得冠军。联赛规定,若有多个得分最高的队伍,他们将分享冠军的荣誉,同时获得冠军。

输入
第一行一个整数n,表示参加联赛的球队数量,小明支持的就是队1。
接下来n行,每行n*2个整数,第i行第j对整数表示队i在主场对阵队j的比赛情况,两个整数分别表示主队(队i)和客队(队j)的进球数。当i=j的时候,两个整数用-1表示,自己和自己踢球的情况是不存在的。
输出
若队1夺冠,那么在第一行输出“Yes”;若1队的总积分不是最高的,那么在第一行输出“No”。
第二行输出一个整数,表示队1的赛季总积分。

解题思路:

模拟即可。用一个矩阵存取主客场对战得分表,每隔一行两个相邻的数进行比较即可(都是-1时需要特判),另开一个数组a存储每一个队的结果。需注意计算存取时的下标如何转换。

AC代码:

#include <iostream>
using namespace std;

int g[100][100];
int a[10010];
int main()
{
	int n;
	cin>>n;
	//输入 
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n*2;j++)
		{
			cin>>g[i][j];
		}
	}
	//计算每只队得分 
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n*2;j+=2)
		{
			if(g[i][j]>g[i][j+1])
			a[i]+=3;
			else if(g[i][j]==g[i][j+1]&&g[i][j]!=-1&&g[i][j+1]!=-1)
			{
				a[i]+=1;
				a[(j+1)/2]+=1;
			}
			else if(g[i][j]<g[i][j+1])
			a[(j+1)/2]+=3;
		}
	}
	
	//判断比较赢家 
	int max=-10000;
	for(int i=1;i<=n;i++)
	{
		if(a[i]>=max)
		max=a[i];
	}
	
	//输出 
	if(a[1]==max)
		cout<<"Yes"<<endl;
	else
		cout<<"No"<<endl;
	
	cout<<a[1];
	
	return 0;
}

问题 M: 一箭多雕

题意:

有n只雕,现在需要用箭将其射下,但是我们的箭一支射落多个雕,射中一直后箭的高度会自动减1,如果减一之后这支箭射不到雕这之箭就,每支箭射之前可以自由调高度

解题思路:

AC代码:

#include <iostream>
#include <unordered_map>
using namespace std;
unordered_map<int,int>tt;
int n,x,res=0;
int main()
{

	scanf("%d",&n);
	
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&x);
		
		tt[x]++;
		
		if(tt[x+1]) tt[x+1]--;
		else res++; 
	}
	

	cout<<res;
	
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值