zoukankan      html  css  js  c++  java
  • 2019 Multi-University Training Contest 8

    1010 Quailty and CCPC

    签到题,但是好像踩了一些什么坑。就是nth_element的应用,要注意nth_element的时候,n是从0开始的。测试如下:

    计数从1开始,生成1~100然后打乱。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    int main() {
    #ifdef Yinku
        freopen("Yinku.in", "r", stdin);
    #endif // Yinku
        int n=100;
        int a[105];
        for(int i=1;i<=n;++i)
            a[i]=i;
        random_shuffle(a+1,a+1+n);
        int k=50;
        nth_element(a+1,a+1+(k-1),a+1+n);
        for(int i=1;i<=n;++i){
            printf(" %d",a[i]);
        }
        puts("");
        printf("kth: %d
    ",a[k]);
    }
    

    意思是,计算机里面的计数都是从0开始的,所以人类说的第50个,在调用nth_element的时候,中间要传进去的是50-1,当然我们的首地址既然是a+1那a+1是不能改的。

    但是假如计数从0开始就会变成这样?

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    int main() {
    #ifdef Yinku
        freopen("Yinku.in", "r", stdin);
    #endif // Yinku
        int n=100;
        int a[105];
        for(int i=0;i<n;++i)
            a[i]=i+1;
        random_shuffle(a,a+n);
        int k=50;
        nth_element(a,a+(k-1),a+n);
        for(int i=0;i<n;++i){
            printf(" %d",a[i]);
        }
        puts("");
        printf("kth: %d
    ",a[k-1]);
    }
    

    从0开始的人类说的第k个当然是要取第k-1了!

    所以得到的就是:

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    struct Pl {
        char s[100];
        int p, t;
        bool operator<(const Pl& pl)const {
            if(p != pl.p)
                return p > pl.p;
            else
                return t < pl.t;
        }
    } pl[100005];
    
    int main() {
    #ifdef Yinku
        freopen("Yinku.in", "r", stdin);
    #endif // Yinku
        int T;
        scanf("%d", &T);
        while(T--) {
            int n, d;
            scanf("%d%d", &n, &d);
            for(int i = 1; i <= n; ++i) {
                scanf("%s%d%d", pl[i].s, &pl[i].p, &pl[i].t);
            }
            if(n * d % 10 == 5) {
                int k2 = (n * d / 10) + 1;
                nth_element(pl + 1, pl + 1 + (k2 - 1), pl + 1 + n);
                printf("%s
    ", pl[k2].s);
            } else {
                puts("Quailty is very great");
            }
        }
    }
    

    Acesrc and Cube Hypernet
    1011 Roundgod and Milk Tea

  • 相关阅读:
    Python 特殊语法:filter、map、reduce、lambda
    db2 常用命令(二)
    db2 常用命令(一)
    java 基础
    No.16 selenium学习之路之异常处理
    python之assert断言
    python之uinttest单元测试框架
    测试用例
    No.15 selenium for python JavaScript
    No.14 selenium for python table表单
  • 原文地址:https://www.cnblogs.com/Inko/p/11382902.html
Copyright © 2011-2022 走看看