首页 > 其他 > 详细

P1056排坐椅

时间:2019-07-21 23:34:25      阅读:100      评论:0      收藏:0      [点我收藏+]

这是2008普及组真题,是一个提高—的模拟。

仔细读完题便有了思路:累放在i行能隔开wi个,比较排序wi,输出即可。所以在这里遇到了结构体排序的问题与手写cmp的问题。对于两个语法知识掌握得都不好,所以造成了死循环或者......(迄今仍然不知道错在了哪里),所以wa1,wa2,wa3..蓝瘦,希望洛谷的大佬可以帮帮我。

1.熟练掌握struct &sort语法

2.尽量不开二维数组

3.要把问题转化到最简单的求解形式(比如x1==x2而非mp[x1+1]=mp[x1])

代码:

#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
    int num,sum;
}hang[1005],lie[1005];
bool cmp(node x,node y)
{
    return x.sum>y.sum;
}

bool cmp1(node x,node y)
{
    return x.num<y.num;
}
int m,n;
int d,k,l,x1,x2,y1,y2;
int main()
{
    cin>>m>>n>>k>>l>>d;
    for(int i=1;i<=d;i++)
    {
        cin>>x1>>y1>>x2>>y2;
        if(x1==x2) 
        {
        lie[min(y1,y2)].num=min(y1,y2);
        lie[min(y1,y2)].sum++;
        }
        else 
        {
        hang[min(x1,x2)].num=min(x1,x2);
        hang[min(x1,x2)].sum++;
        }
    }
    sort(lie+1,lie+n+1,cmp);
    sort(hang+1,hang+m+1,cmp);
    sort(lie+1,lie+l+1,cmp1);
    sort(hang+1,hang+k+1,cmp1);
    for(int i=1;i<=k;i++) cout<<hang[i].num<<" ";
    cout<<endl;
    for(int i=1;i<=l;i++) cout<<lie[i].num<<" ";
    return 0;
}

 

P1056排坐椅

原文:https://www.cnblogs.com/china-mjr/p/11222676.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!