AcWing 3817:数组 ← 贪心算法

【题目来源】
https://www.acwing.com/problem/content/3820/

【题目描述】
给定一个长度为 nA 的非降序整数数组 A 和一个长度为 nB 的非降序整数数组 B。
请问,能否从 A 中挑选 k 个数,从 B 中挑选 m 个数,使得在 A 中挑选出的任何数都严格小于在 B 中挑选出的任何数。

【输入格式】
第一行包含两个整数 nA,nB。
第二行包含两个整数 k,m。
第三行包含 nA 个整数 a1,a2,...,anA。
第四行包含 nB 个整数 b1,b2,...,bnB。

【输出格式】
共一行,能则输出 YES,否则输出 NO。

【数据范围】
1≤nA,nB≤10^5,
1≤k≤nA,
1≤m≤nB,
−10^9≤ai,bi≤10^9。
保证 A 和 B 都是非降序数组。

【输入样例1】
3 3
2 1
1 2 3
3 4 5

【输出样例1】
YES

【输入样例2】
3 3
3 3
1 2 3
3 4 5

【输出样例2】
NO

【输入样例3】
5 2
3 1
1 1 1 1 1
2 2

【输出样例3】
YES

【算法分析】
☆★ 贪心是通过局部最优解,找到全局最优解。所以,贪心算法一般适用于单峰问题。
☆★ C++ 中 reverse() 函数的示例代码。

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

const int maxn=1e5+5;
int a[maxn];

int main() {
    int n;
    cin>>n;
    
    for(int i=0; i<n; i++) cin>>a[i];
    reverse(a,a+n);
    for(int i=0; i<n; i++) cout<<a[i]<<" ";

    return 0;
}


/*
in:
5
1 3 5 7 9

out:
9 7 5 3 1
*/

【算法代码】

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

const int maxn=1e5+5;
int a[maxn];
int b[maxn];

int main() {
    int na,nb,k,m;
    cin>>na>>nb>>k>>m;
    for(int i=0; i<na; i++) cin>>a[i];
    for(int i=0; i<nb; i++) cin>>b[i];

    reverse(b,b+nb);

    if(a[k-1]<b[m-1]) cout<<"YES";
    else cout<<"NO";

    return 0;
}


/*
in:
3 3
2 1
1 2 3
3 4 5

out:
YES
*/

【参考文献】
https://www.acwing.com/solution/content/120077/

相关推荐
syt_biancheng6 小时前
Day3算法训练(简写单词,dd爱框框,3-除2!)
开发语言·c++·算法·贪心算法
~~李木子~~19 小时前
贪心算法实验1
算法·ios·贪心算法
庸子1 天前
Kubernetes调度器深度解析:从资源分配到亲和性策略的架构师之路
java·算法·云原生·贪心算法·kubernetes·devops
_OP_CHEN2 天前
算法基础篇:(八)贪心算法之简单贪心:从直觉到逻辑的实战指南
c++·算法·贪心算法·蓝桥杯·算法竞赛·acm/icpc·简单贪心
不夜牛仔3 天前
算法笔记17 - 贪心算法介绍与思路 | 路灯摆放问题 | 活动安排问题 | 最低字典序拼接 | 金条分割问题 | 项目投资问题
笔记·算法·贪心算法
愿没error的x4 天前
动态规划、贪心算法与分治算法:深入解析与比较
算法·贪心算法·动态规划
Einsail5 天前
贪心算法,优先队列(大小根堆使用)
算法·贪心算法
leoufung5 天前
贪心算法理论与应用——以股票买卖问题为例
算法·贪心算法
Nebula_g8 天前
C语言应用实例:硕鼠游戏,田忌赛马,搬桌子,活动选择(贪心算法)
c语言·开发语言·学习·算法·游戏·贪心算法·初学者
一只鱼^_8 天前
力扣第 474 场周赛
数据结构·算法·leetcode·贪心算法·逻辑回归·深度优先·启发式算法