zoukankan      html  css  js  c++  java
  • Codeforces Round #180 (Div. 2) D. Fish Weight 贪心

    D. Fish Weight

    题目连接:

    http://www.codeforces.com/contest/298/problem/D

    Description

    It is known that there are k fish species in the polar ocean, numbered from 1 to k. They are sorted by non-decreasing order of their weight, which is a positive number. Let the weight of the i-th type of fish be wi, then 0 < w1 ≤ w2 ≤ ... ≤ wk holds.

    Polar bears Alice and Bob each have caught some fish, and they are guessing who has the larger sum of weight of the fish he/she's caught. Given the type of the fish they've caught, determine whether it is possible that the fish caught by Alice has a strictly larger total weight than Bob's. In other words, does there exist a sequence of weights wi (not necessary integers), such that the fish caught by Alice has a strictly larger total weight?

    Input

    The first line contains three integers n, m, k (1 ≤ n, m ≤ 105, 1 ≤ k ≤ 109) — the number of fish caught by Alice and Bob respectively, and the number of fish species.

    The second line contains n integers each from 1 to k, the list of fish type caught by Alice. The third line contains m integers each from 1 to k, the list of fish type caught by Bob.

    Note that one may have caught more than one fish for a same species.

    Output

    Output "YES" (without quotes) if it is possible, and "NO" (without quotes) otherwise.

    Sample Input

    3 3 3

    2 2 2

    1 1 3

    Sample Output

    YES

    Hint

    题意

    有两个人,第一个人抓了n条鱼,第二个人抓了m条鱼

    保证编号小的一定小于等于编号大的质量

    问你第一个人的n条鱼质量之和,有没有可能比第二个人的m条鱼的质量之和大

    题解:

    直接从大到小排序就好了,然后扫一遍。

    只要存在一条鱼,a[i]>b[i],那么就说明可以。

    因为我此时只要让后面的鱼全部都为0千克就好了

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 100005
    int a[maxn],b[maxn];
    bool cmp(int A,int B)
    {
        return A>B;
    }
    int main()
    {
        int n,m,k;
        scanf("%d%d%d",&n,&m,&k);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        for(int i=1;i<=m;i++)
            scanf("%d",&b[i]);
        sort(a+1,a+1+n,cmp);
        sort(b+1,b+1+m,cmp);
        for(int i=1;i<=n;i++)
            if(a[i]>b[i])
                return puts("YES");
        return puts("NO");
    }
  • 相关阅读:
    使用RAID与LVM磁盘阵列技术
    挂载硬件设备和磁盘容量配额
    文件存储结构(FHS标准)物理设备命名规则(udev)和文件系统
    文件访问控制列表
    逻辑漏洞
    web渗透思维导图
    常见漏洞简单测试整理
    Python知识点图片
    python控制流
    Python小知识点+保留字
  • 原文地址:https://www.cnblogs.com/qscqesze/p/5116550.html
Copyright © 2011-2022 走看看