zoukankan      html  css  js  c++  java
  • Luogu1056排座椅

    这是一道水题
    本来以为和图论有关,但仔细读题发现排序+贪心就可以过掉;
    话不多说上代码。

    #include<bits/stdc++.h>
    using namespace std;
    int m,n,k,l,d;
    struct node//结构体
    {
    int order;
    int student;
    }x[1010],y[1010];
    inline int qread()//快读,我只是码着练一练;
    {
    int res = 0; bool bo = 0; char c;
    while (((c = getchar()) < '0' || c > '9') && c != '-');
    if (c == '-') bo = 1; else res = c - 48;
    while ((c = getchar()) >= '0' && c <= '9')
    res = (res << 3) + (res << 1) + (c - 48);
    return bo ? ~res + 1 : res;
    }
    bool cmp(node a,node b)//先按照说话人数排序
    {
    return a.student ==b.student ? a.order <b.order : a.student >b.student ;
    }
    bool cmp1(node a,node b)//输出需要,要把行列按顺序输出,还要排一遍
    {
    return a.order <b.order ;
    }
    void read()
    {
    int x_1,y_1,p_1,q_1;
    
    m=qread();
    n=qread();
    k=qread();
    l=qread();
    d=qread();
    for(int i=1;i<=d;i++)
    {
    x_1=qread();
    y_1=qread();
    p_1=qread();
    q_1=qread();
    for(int i=1;i<=m;i++) x[i].order =i;
    for(int i=1;i<=n;i++) y[i].order =i;
    if(x_1==p_1) //两个人在同一行,记下列
    {
    y[min(y_1,q_1)].student ++;//要判断一下大小,记小的列
    }
    if(y_1==q_1)
    {
    x[min(x_1,p_1)].student ++;//两人同行,和列一样
    }
    }
    }
    int main()
    {
    //    freopen("testdata.in","r",stdin);
    read();
    sort(y+1,y+n+1,cmp);//先按人数排列
    sort(x+1,x+1+m,cmp);
    sort(x+1,x+k+1,cmp1);//后按行列顺序排不然会WA,亲身体会;
    sort(y+1,y+l+1,cmp1);
    for(int i=1;i<=k;i++)
    {
    printf("%d ",x[i].order );
    }
    printf("
    ");
    for(int i=1;i<=l;i++)
    {
    printf("%d ",y[i].order );
    }
    return 0;
    }

    本蒟蒻第二次发题解希望会过吧!ありがとうございます

  • 相关阅读:
    编译原理入门以及战大作业心得(2)汇编简易入门 康某
    简易聊天对话框(源码)
    用js做数字字母混合的随机四位验证码
    HTML5基础
    javascript基础
    jquery.AutoComplete 仿百度文本框感应
    DropDownlist显示树状
    利用 System.Net.Mail 实现邮件发送功能
    sql 根据字段值,查找属于哪个表中的哪个字段
    sql 查看数据库中的各表的大小
  • 原文地址:https://www.cnblogs.com/Shiina-Rikka/p/11223639.html
Copyright © 2011-2022 走看看