题解 | #排座椅#

排座椅

https://ac.nowcoder.com/acm/problem/16618

此题的思路就是以行和列上的同学对数为待排序的元素来对行和列进行排序(贪心思想)

using namespace std;
struct node{
    int num;
    int cnt;
}hang[1100],lie[1100];
bool cmp1(struct node a , struct node b ){
    return a.num < b.num;
}
bool cmp2(struct node a , struct node b ){
    return a.cnt > b.cnt;
}
int main(){
    int m,n,k,l,d;    
    cin >> m >> n >> k >> l >>d;
    for (int i = 1 ; i <= max(m,n) ; i ++ ){
        hang[i].num = i;
        lie[i].num = i;
    }
    for (int i = 1 ;i <= d ; i ++ ){
        int x,x1,y,y1;
        cin >> x >> y >> x1 >> y1;
        if (x == x1) {
            lie[y > y1 ? y1 : y].cnt ++ ;/*这儿要考虑
            y的大小问题!!!*/
        }
        else {
            hang[x > x1 ? x1 : x].cnt ++ ;
        }
    }
    sort(hang + 1, hang + 1 + m,cmp2);
        sort(hang + 1, hang + 1 + k,cmp1);
    sort(lie + 1, lie + 1 + n,cmp2);
        sort(lie + 1, lie + 1 + l,cmp1);
    for (int i = 1 ; i <= k ; i ++ ){
        printf("%d",hang[i].num);
        if (i != k ) printf(" ");
    }
    printf("\n");
    for (int i = 1 ; i <= l ; i ++ ){
        printf("%d",lie[i].num);
        if (i != l ) printf(" ");
    }
    return 0;
}
全部评论

相关推荐

11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务