AcWing第 77 场周赛

这篇博客涵盖了两部分内容:一场足球比赛的胜负判断和大主教棋盘问题。在足球比赛中,通过统计两队进球数来确定获胜队伍。在大主教棋盘问题中,探讨了如何在给定的棋盘上放置大主教,使得它们互不攻击,求解最大的放置数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进球

两支足球队之间展开了一场足球赛。

整场比赛双方一共打进了 n 粒进球,进球多的一方将收获最终的胜利。

请你根据进球纪录,判断哪支球队最终获胜。

保证不存在平局。

输入格式

第一行包含整数 n。

接下来 n 行,其中第 i 行记录了打进第 i 粒进球的球队的名称。

球队名称由大写字母构成,长度范围 [1,10]。

保证输入中包含的不同球队不超过两支。

输出格式

输出最终获胜队伍的名称。

数据范围

前 5 个测试点满足 1≤n≤5。
所有测试点满足 1≤n≤100。

输入样例1:

1
ABC

输出样例1:

ABC

输入样例2:

5
A
ABA
ABA
A
A

输出样例2:

A
#include<bits/stdc++.h>
using namespace std;
typedef pair<string, int>Pair;

bool cmp(const Pair&a, const Pair&b) {
    return a.second > b.second;//大顶
}

int main() {
    int n;
    while (~scanf("%d", &n) && n) {
        vector<Pair>PairVec;
        map<string, int>m;
        for (int i = 0;i < n;i++) {
            string c;
            cin >> c;++m[c];//插入键  值默认为0(作为计数器)
        }
        for (map<string, int>::iterator it = m.begin();it != m.end();++it) {
            PairVec.push_back(make_pair(it->first, it->second));
        }
        sort(PairVec.begin(), PairVec.end(), cmp);
        cout << PairVec.front().first << endl;
    } 
} 

 

环形队伍 

n 个小朋友围成一圈,按顺时针顺序依次编号为 1∼n。

有 7 种颜色的帽子,每种颜色的帽子的数量都足够多。

7 种颜色不妨表示为 ROYGBIV

现在,要给每个小朋友都发一个帽子,要求:

  • 每种颜色的帽子都至少有一个小朋友戴。
  • 任意四个相邻小朋友的帽子颜色都各不相同。

请你提供一种分发帽子的方案。

输入格式

共一行,包含一个整数 n。

输出格式

输出一行长度为 n 的由代表颜色的字符组成的字符串,其中的第 i 个字符表示第 i 个小朋友分到的帽子的颜色。

如果方案不唯一,输出任意合理方案均可。

数据范围

所有测试点满足 7≤n≤100。

输入样例1:

8

输出样例1:

ROYGRBIV

输入样例2:

13

输出样例2:

ROYGBIVGBIVYG
#include<bits/stdc++.h>
using namespace std;
int n;
const string s = "ROYGBIV";
int main(){
    cin >> n;
    for(int i=0; i <= n - 4; i++) putchar(s[i % 4]);
    for(int i=4; i <= 6; i++) putchar(s[i]);
    return 0;
}

 

摆放棋子 

给定一个 n×mn×m 的国际象棋棋盘(即一个 n×mn×m 的方格矩阵)。

我们知道传统国际象棋中,主教(象)的行走规则是只能斜走,格数不限。

现在,我们对主教进行了加强,不妨称加强后的主教为大主教。

大主教仍然只能斜走,格数不限,但是当其走到棋盘边缘的方格时,它可以发生反射并继续移动。

更具体地说,当它到达棋盘边(但并非角)上的方格时,它可以将移动方向改变 9090 度并继续移动,当它到达棋盘角上的方格时,它可以将移动方向改变 180180 度并继续移动。

如果一个棋子可以到达另一个棋子所在的方格,则认为该棋子可以攻击到另一个棋子。

我们希望在给定的棋盘中摆放尽可能多的大主教,但是要求它们两两之间不能攻击到对方。

请你计算,最多可以摆放多少个大主教。

输入格式

共一行,包含两个整数 n,mn,m。

输出格式

一个整数,表示可以摆放的大主教的最大可能数量。

数据范围

前 66 个测试点满足 2≤n,m≤42≤n,m≤4。
所有测试点满足 2≤n,m≤1062≤n,m≤106。

输入样例1:

3 4

输出样例1:

2

输入样例2:

3 3

输出样例2:

3

新知识:__gcd 函数可以直接算出最大可能的数量!其他方法会比较复杂,如模拟或动态,应为方格的数量不确定,直接用gcd函数。

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

int main()
{
    int n,m;
    cin>>n>>m;
    cout<<__gcd(n-1,m-1)+1;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值