题解:CF297B Fish Weight

一道超级简单的结论题。

我们来分两种情况讨论:

  • 如果 m < n m<n m<n。输出 YES。可以把所有 w i w_i wi 都设为 1 1 1,显然这时 a a a 数组大。

  • 否则,即 m ≥ n m\ge n mn。可以发现,把 a a a b b b 数组从大到小排序后,可以发现,只要有一个 b i < a i b_i < a_i bi<ai,把 w a i w_{a_i} wai 赋为尽可能大的数后,总是有方法让 a a a 数组大,输出 YES。最后,如果对于所有 i ( 1 ≤ i ≤ n ) i(1\le i\le n) i(1in) b i ≥ a i b_i\ge a_i biai,那就没有办法了,输出 NO

代码如下:

#include <bits/stdc++.h>
using namespace std;
//#define int long long
typedef long long ll;
typedef pair<int, int> pr;
#define up(i, l, r) for(int i = (l); i <= (r); i++)
#define down(i, r, l) for(int i = (r); i >= (l); i--)
const int mod = 1000000007;
const int base = 2333;
const double eps = 1e-6;

inline int read() {
    int x = 0, f = 1; char ch = getchar();
    while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); }
    while(ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); }
    return x * f;
}

int n, m, k, Q, T, _, ans = 0;
int a[100007], b[100007];

inline bool cmp(int x, int y) {
    return x > y;
}

signed main() {
    n = read(), m = read(), k = read();
    for(int i = 1; i <= n; i++) a[i] = read();
    for(int i = 1; i <= m; i++) b[i] = read();
    if(m < n) {
        cout << "YES";
        return 0;
    }
    sort(a + 1, a + n + 1, cmp);
    sort(b + 1, b + m + 1, cmp);
    for(int i = 1; i <= n; i++)
        if(b[i] < a[i]) {
            cout << "YES";
            return 0;
        }
    cout << "NO";
    return 0;
}
  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值