JZOJ 1115. 排座椅(seat)

2023-10-07 16:10
文章标签 jzoj 1115 seat 座椅

本文主要是介绍JZOJ 1115. 排座椅(seat),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

 

输入

 

输出

 

样例输入

4 5 1 2 34 2 4 32 3 3 32 5 2 4

样例输出

22 4

提示

【输入输出样例解释】


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

 

分析

这一道题基本掌握了这个技巧直接秒杀,根本不在话下

第一行的输入不用说了,但是在第2到d+1行有一个技巧

我们不需要直接把这个数据存入,因为题目所说他们必定相

挨在一起,此时,我们只需要使用变量ABCD存下,

然后判断:如果他们是一行的,分割列的价值就加上一

否则(他们是一列的) 那么分割这个空位的价值就加1

最后只要权值最大的K 位横向, L位竖向的排序输出就可以了

  1. 记得,一定要排序输出,不然见十八代祖宗

代码

#include <cstdio>using namespace std;int m,n,k,l,d;int h[1010],line[1010]; // 权值圈bool vish[1010],visl[1010]; // 找前k,l位大的权值是需要的标记数组int t[1010],t2[1010];  // 使用桶排将数据排序输出int min(int a,int b){return a>b?b:a;}int main(){freopen("seat.in","r",stdin);freopen("seat.out","w",stdout);//m->h n->lscanf("%d%d%d%d%d",&m,&n,&k,&l,&d);for(int i = 1;i <= d;i++){int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d);if(a == c) // 利用题目的性质 :  使用变量ABCD存下line[min(b,d)]++; // 果他们是一行的,分割列的价值就加上一else //否则(他们是一列的) 那么分割这个空位的价值就加1h[min(a,c)]++;}while(k--) // 找前k大的权值并把他们进行桶排{int maxx=0,index=0;for(int i = 1;i <= m;i++){if(vish[i]==0&&maxx<h[i]){maxx=h[i];index=i;}}vish[index]=true;if(!index) break;t[index]=1;}bool bflag = 0;for(int i = 1;i <= 1000;i++){if(t[i]){if(bflag) printf(" ");else bflag = 1;printf("%d",i);}}printf("\n");bflag = 0;while(l--)// 找前l大的权值并把他们进行桶排{int maxx=0,index=0;for(int i = 1;i <= n;i++){if(visl[i]==0&&maxx<line[i]){maxx=line[i];index=i;}}visl[index]=true;if(!index) break;t2[index]=1;}for(int i = 1;i <= 1000;i++){if(t2[i]){if(bflag) printf(" ");else bflag = 1;printf("%d",i);}}printf("\n");return 0;}

本人的代码显得有些累赘,有心人可以把他优化一下。QVQ

这篇关于JZOJ 1115. 排座椅(seat)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158883

相关文章

Jzoj 条件循环(while,do while) 部分代码(共25题)

1020: 【入门】编程求1+3+5+...+n #include <bits/stdc++.h>using namespace std;int n, sum;int main() {scanf("%d", &n);for(int i=1; i<=n; i+=2){sum+=i;} printf("%d", sum);return 0;} 1012: 【入门】两数比大小 #i

Jzoj 二维数组部分代码(共13题)

2788: 【入门】二维数组的输入输出 边输入边输出 #include <bits/stdc++.h>using namespace std;int n, m, a[11][11];int main(){scanf("%d %d", &n, &m);//边输入边输出for(int i=1; i<=n; ++i){for(int j=1; j<=m; ++j){scanf("%d", &

春节如何带奶娃自驾游?不要忘了儿童安全座椅

春节放假,除了合家团圆,有些平常难得有假的人免不了想出门旅游一趟。而现在,最流行的就是自驾游,特别是对那些带了小孩的年轻爸妈而言,带着大包小包一堆东西和一个嗷嗷待哺的娃去挤客车、火车,怎么想怎么觉得不方便。可是,小朋友毕竟不同于大人,要带他们出门,需要注意什么呢?   我有一次带婴儿(当时11个月)长时间(16天)去云南旅行的经历,而且这个春节还会带孩子(20个月)去海南耍15~16天。所

奔驰S迈巴赫S480升级动态按摩座椅效果怎么样

在迈巴赫 S480 的尊崇之旅中,舒适从未有尽头。现在,为您呈现前排动态按摩座椅的升级,将舒适体验提升至全新境界。 迈巴赫 S480 已然是舒适的代名词,但前排动态按摩座椅的升级,将为您带来前所未有的放松与享受。 当您入座,启动按摩功能,多组按摩气囊和精心设计的按摩程序开始工作。轻柔的揉捏、有力的敲击、舒缓的推压,仿佛专业按摩师的巧手,精准地舒缓您身体的每一处疲劳与紧张。 无论是在繁忙的

2024.6.20总结1115

今天论文拿给老师签字了,老师也给我指出了相应的问题,搞了一个早上+下午,晚上的时候,拿论文去装订,并且跑了3公里,最后,看了《令人心动的offer3》。 感触:今日有两大感触,一个是关于如何做好一件事的问题,哪怕是一件小事(比如毕业论文这块),想要做好,想要高效做好,也不是一件容易的事情。从做毕设,到写论文,修改论文,做答辩ppt,毕业答辩,修改装订等环节,从整个环节可以知道,这就是一个大工程。

nyoj-1115-y的最大值(变态最大值二)

y的最大值(变态最大值二) 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 1 描述 给定n对整数,每对有一个x,y(都为正整数),要求是我们先对每个数对排序之后,再找出变态最大值(y的最大值)。排序规则是:我们让x由小到大排,当x相等的时候y大的放到后面。然后三个数对一组,编号为1..n/3(n为3的倍数),奇数组找出最大值,偶数组找出最小值,然

LeetCode-1115.交替打印FooBar(多线程)

LeetCode 题目描述 我们提供一个类: class FooBar {public void foo() {for (int i = 0; i < n; i++) {print("foo");}}public void bar() {for (int i = 0; i < n; i++) {print("bar");}}} 两个不同的线程将会共用一个 FooBar 实例。其中一个线程

【NOIP2008普及组复赛】 题2:排座椅

题2:排座椅 ( s e a t . p a s / c / c p p ) (seat.pas/c/cpp) (seat.pas/c/cpp) # 【题目描述】 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 D D D对同学上课时会交头接耳。同学们在教室中坐成了 M M M行

普乐蛙VR航天航空体验馆VR双人旋转座椅元宇宙VR飞船

多长假来袭!!想为门店寻找更多新鲜有趣的吸粉体验?想丰富景区体验?别着急,小编为你准备了一款爆款设备——时光穿梭机,720°无死角旋转!!吸睛、刺激体验,将亲子、闺蜜、情侣等客群统统收入囊中,助力门店吸引更多的客流,实现假期的营收大爆发! 普乐蛙◆匠心打造 太空舱球体型,未来感十足 720°花式旋转,前所未有的刺激 双人联机操作,并肩作战奔赴星河 五重安全防护保障,放心玩过瘾

【PAT】1115. Counting Nodes in a BST (30)【树的层次遍历】

题目描述 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than or equal to the node’s