zoukankan      html  css  js  c++  java
  • Luogu P1056 排座椅

    题目描述

    上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道。于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。

    请你帮忙给小雪编写一个程序,给出最好的通道划分方案。在该方案下,上课时交头接耳的学生的对数最少。

    输入输出格式

    输入格式:

    输入文件seat.in的第一行,有5个用空格隔开的整数,分别是M,N,K,L,D(2<=N,M<=1000,0<=K<M,0<=L<N,D<=2000)。

    接下来的D行,每行有4个用空格隔开的整数。第i行的4个整数Xi,Yi,Pi,Qi,表示坐在位置(Xi,Yi)与(Pi,Qi)的两个同学会交头接耳(输入保证他们前后相邻或者左右相邻)。

    输入数据保证最优方案的唯一性。

    输出格式:

    输出文件seat.out共两行。

    第一行包含K个整数,a1,a2……aK,表示第a1行和a1+1行之间、第a2行和a2+1行之间、…、第aK行和第aK+1行之间要开辟通道,其中ai< ai+1,每两个整数之间用空格隔开(行尾没有空格)。

    第二行包含L个整数,b1,b2……bL,表示第b1列和b1+1列之间、第b2列和b2+1列之间、…、第bL列和第bL+1列之间要开辟通道,其中bi< bi+1,每两个整数之间用空格隔开(列尾没有空格)。

    输入输出样例

    输入样例#1: 复制
    4 5 1 2 3
    4 2 4 3
    2 3 3 3
    2 5 2 4
    
    输出样例#1: 复制
    2
    2 4
    

    说明

    上图中用符号*、※、+标出了3对会交头接耳的学生的位置,图中3条粗线的位置表示通道,图示的通道划分方案是唯一的最佳方案。

    2008年普及组第二题

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    const int M = 1001;
    const int N = 1001;
    int m, n, k, l, d;
    int a[M][N];
    struct NODE{
    	int id, sum;
    }line[N], row[N];
    
    bool cmp(NODE a, NODE b){
    	return a.sum > b.sum;
    }
    bool cmp1(NODE a, NODE b){
    	return a.id < b.id;
    }
    
    int main(){
    	scanf("%d%d%d%d%d", &m, &n, &k, &l, &d);
    	int x1, x2, y1, y2;
    	for(int i=1; i<=d; i++){
    		scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
    		int mx = min(x1, x2), my = min(y1, y2);
    		if(x1 == x2) row[my].sum++, row[my].id = my;
    		else line[mx].id = mx, line[mx].sum++;
    	}
    	sort(row+1, row+n+1, cmp);
    	sort(line+1, line+m+1, cmp);
    	sort(row+1, row+l+1, cmp1);
    	sort(line+1, line+k+1, cmp1);
    	for(int i=1;i<k;i++)
    		printf("%d ", line[i].id);
    	printf("%d
    ", line[k].id);
    	for(int i=1;i<l;i++)
    		printf("%d ", row[i].id);
    	printf("%d
    ", row[l].id);
    		
    	
    	
    
    	return 0;
    }
    

      

  • 相关阅读:
    Laravel 初始化
    ant design pro 左上角 logo 修改
    请求到服务端后是怎么处理的
    Websocket 知识点
    王道数据结构 (7) KMP 算法
    王道数据结构 (6) 简单的模式匹配算法
    王道数据结构 (4) 单链表 删除节点
    王道数据结构 (3) 单链表 插入节点
    王道数据结构 (2) 单链表 尾插法
    王道数据结构 (1) 单链表 头插法
  • 原文地址:https://www.cnblogs.com/sineagle/p/8685923.html
Copyright © 2011-2022 走看看