AtcoderABC245场

A - Good morningA - Good morning

题目大意

给定Takahashi和Aoki的起床时间,判断谁先起床。

思路分析

题目要求比较Takahashi和Aoki的起床时间。首先,将起床时间转换为以分钟为单位。然后,通过比较两者的起床时间来确定谁先起床。

时间复杂度

O(1)

知识点标签

基本的数学运算

可AC代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main(void) {
	int a, b, c, d;
	cin >> a >> b >> c >> d;
	if (a < c)cout << "Takahashi" << endl;
	else if (a > c)cout << "Aoki" << endl;
	else {
		if (b <= d)cout << "Takahashi" << endl;
		else cout << "Aoki" << endl;
	}
	return 0;
}

B - MexB - Mex

题目大意

给定一个整数序列,找到最小的非负整数,该整数不在序列中。

思路分析

为了找到最小的非负整数,可以遍历整数序列,并使用一个集合(或数组)来记录序列中出现的所有整数。然后,从0开始逐个判断整数是否在集合中,直到找到第一个不在集合中的非负整数为止。

时间复杂度

O(N)

知识点标签

数组(或集合)

可AC代码

cpp 复制代码
#include<iostream>
#include<unordered_set>
using namespace std;
int main()
{
int n;
cin>>n;
unordered_set<int> num;
for(int i=0;i<n;i++)
{
int nu;
cin>>nu;
num.insert(nu);
}
int  sm=0;
while(num.find(sm)!=num.end())
{sm++;
}
cout<<sm<<endl;
return 0;
}

C - Choose ElementsC - Choose Elements

题目大意

给定两个长度为N的整数序列A和B,判断是否存在一个长度为N的序列X满足以下条件:

  • 对于每个i(1 <= i <= N),有Xi = Ai或Xi = Bi。
    对于每个i(1 <= i <= N-1),有|Xi - Xi+1| <= K。

思路分析

可以使用动态规划来解决这个问题。定义dpi表示考虑到(X1, X2, ..., Xi)的情况下,是否可以让Xi = Ai,定义epi表示考虑到(X1, X2, ..., Xi)的情况下,是否可以让Xi = Bi。根据题目条件,可以得出以下转移方程:

  • 如果dpi-1=True且|Ai-1 - Ai| <= K,则dpi=True。
  • 如果epi-1=True且|Bi-1- Ai| <= K,则dpi=True。
    否则,dpi=False。 同样地,可以计算epi的值。
    接下来,初始化dp1=True和ep1=True,并进行逐个计算dpi和epi的值。最终,如果dpN=True或epN=True,则说明存在满足条件的序列X,否则不存在。

时间复杂度

O(N)

知识点标签

动态规划

可AC代码

cpp 复制代码
#include <iostream>
#include <vector>
#include <unordered_set>
#include <cmath>
using namespace std;

int main() {
    int N, K;
    cin >> N >> K;
    vector<int> A(N), B(N);
    for (int i = 0; i < N; ++i) {
        cin >> A[i];
    }
    for (int i = 0; i < N; ++i) {
        cin >> B[i];
    }

    unordered_set<int> before;
    before.insert(A[0]);
    before.insert(B[0]);

    for (int i = 1; i < N; ++i) {
        unordered_set<int> tmp;
        for (int b : before) {
            if (abs(b - A[i]) <= K) {
                tmp.insert(A[i]);
            }
            if (abs(b - B[i]) <= K) {
                tmp.insert(B[i]);
            }
        }

        if (tmp.empty()) {
            cout << "No" << endl;
            return 0;
        }

        before = tmp;
    }

    cout << "Yes" << endl;

    return 0;
}
相关推荐
数模竞赛Paid answer9 小时前
2026年中青杯数学建模A题数学建模论文智能评估系统与多智能体优化方法求解全过程论文及程序
算法·数学建模·中青杯
银-豆豆9 小时前
数据结构与算法-动态规划、回溯与贪心
算法·动态规划
想吃火锅100511 小时前
【leetcode】200. 岛屿数量
算法·leetcode·职场和发展
Nil20811 小时前
leetcode 54螺旋矩阵
算法·leetcode·矩阵
依然鸣12 小时前
PTA团体程序设计天梯赛L1真题讲解L1-077-080
开发语言·c++·算法·深度优先·pat考试·图论
qeen8715 小时前
【数据结构】自平衡二叉搜索树各种旋转算法原理解析及AVL树的C++实现
数据结构·c++·算法
lucas_AI15 小时前
1.2B 小模型赢过 235B 大模型:NaviDC-OCR 把文档解析卷明白了
人工智能·深度学习·算法
冻柠檬飞冰走茶16 小时前
PTA基础编程题目集 7-35有理数均值(C++语言实现)
开发语言·数据结构·c++·算法·均值算法
民乐团扒谱机16 小时前
【微实验】倒谱算法(Cepstrum)深度解析:原理、数学推导与代码实现
人工智能·算法·语音识别
Nil20817 小时前
leetcode 189轮转数组
数据结构·算法·leetcode