AtcoderABC236场

A - chukodaiA - chukodai

AtcoderABC236场_第1张图片AtcoderABC236场_第2张图片

题目大意

题目要求交换字符串S中第a个字符和第b个字符的位置,并输出结果。

思路分析

借用临时变量t,进行记录交换。

时间复杂度

O(∣S∣)

  • 输出交换后的字符串的时间复杂度为O(∣S∣),其中∣S∣表示字符串SS的长度。

AC代码

#include
using namespace std;

int main()
{
    string s;
    cin >> s;
    int a, b;
    cin >> a >> b;
    
    // 交换第a个字符和第b个字符的位置
    int t;
    t = s[a - 1];
    s[a - 1] = s[b - 1];
    s[b - 1] = t;
    
    cout << s << endl;
}

B - Who is missing?B - Who is missing?

AtcoderABC236场_第3张图片AtcoderABC236场_第4张图片

题目大意

找出Takahashi拿走的那张卡片上写着的整数。有4张写着整数1的卡片,4张写着整数2的卡片,以此类推,直到4张写着整数N的卡片,总共有4N张卡片。
Takahashi洗了这些卡片,拿走了其中一张,然后给你剩下的4N−1张卡片。堆中第i张卡片上写着整数Ai

思路分析

  • 可以使用一个计数数组count来记录每个整数出现的次数。
  • 遍历给定的4N−1张卡片,将每个整数的计数增加1。
  • 遍历计数数组,找到出现3次的整数,即为Takahashi拿走的卡片上写着的整数。

时间复杂度

O(N+n)

AC代码

#include 
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> count(n + 1); // 计数数组,下标从1到n
    for (int i = 0; i < 4 * n - 1; ++i) {
        int a;
        cin >> a;
        count[a] += 1; 
    }
    for (int i = 1; i <= n; ++i) {
        if (count[i] == 3) {
            cout << i << '\n'; 
        }
    }
    return 0;
}

C - Route Map C - Route Map

AtcoderABC236场_第5张图片AtcoderABC236场_第6张图片

题目大意

给定AtCoder Railway上的N个车站,第i个车站(1≤i≤N)从起始站开始命名为Si。普通列车停靠所有车站,而快速列车则可能不停靠。具体来说,快速列车只在M个(M≤N)车站停靠,其中第jj个停靠点(1≤j≤M)是名为Tj的车站。
这里保证T1=S1和TM=SN,也就是说快速列车会在起始站和终点站都停靠。
对于每个车站,判断快速列车是否停靠在该车站。

思路分析

根据题目要求,需要判断每个车站是否在快速列车的停靠站集合中。为了高效地判断,可以将快速列车的停靠站集合存储在一个set中。然后遍历每个车站,通过set的count函数来判断该车站是否在快速列车的停靠站集合中.

  • 使用set容器的原因是,set提供了O(1)的查找时间复杂度,能够快速判断一个元素是否存在于集合中。

时间复杂度

O(N+M)

AC代码

#include
using namespace std;
int main()
{
    int n, m;
    cin >> n >> m;

    vector<string> s(n);
    set<string> ra;

    for(int i=0; i<n; i++) {
        cin >> s[i];
    }

    for(int i=0; i<m; i++) {
        string st;
        cin >> st;
        ra.insert(st);
    }

    for(int i=0; i<n; i++) {
        if(ra.count(s[i]) > 0) { // 使用count函数判断当前车站是否在快速列车停靠站集合中
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
    }

    return 0;
}

你可能感兴趣的:(算法)