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

相关文章

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

jzoj 5770 可爱精灵宝贝

题目 题解 –是区间dp(好像dfs加神秘玄学剪枝也能过?) 首先,我们可以发现这个人走过的位置是一个区域,而且区域内部的精灵要么被抓,要么消失了(总之就是与以后的转移没有关系) 所以,状态定义: f[l][r][t] :当这个人走过区间[l,r],且目前在l处,时间为t时的最大分值 注意,l,r的左右位置要根据大小自己判断 然后我们又发现,现在这个人只有两种方法:左走或右走

[离散化][区间DP]JZOJ 5770 可爱精灵宝贝

日常黑Pokeman Go Description Branimirko是一个对可爱精灵宝贝十分痴迷的玩家。最近,他闲得没事组织了一场捉精灵的游戏。游戏在一条街道上举行,街道上一侧有一排房子,从左到右房子标号由1到n。 刚开始玩家在k号房子前。有m个精灵,第i只精灵在第A[i]栋房子前,分值是B[i],以及它在T[i]秒内(含)存在,之后消失。Branimirko可以选择移动至相邻的房子,耗时

[权值线段树]JZOJ 3236 矮人排队

Description 在七山七海之外的一个小村庄,白雪公主与N个矮人住在一起,所有时间都花在吃和玩League of Legend游戏。白雪公主决心终结这样的生活,所以为他们举办了体育课。 在每节课开始时,矮人必须按他们的身高站队。假定矮人们有高度1,2,...,N(每个人高度互不相同)。然而,由于不健康的生活方式,矮人的智力有所恶化,所以他们没有能力依照自己的高度排序。 因此,白雪公主发

奔驰GLS GLE升级中后排航空座椅小桌板效果

奔驰GLS GLE芝华仕套件 迈巴赫版 原装横版 双线豪华版 根据不同版本还原不同风格 彻底解决两款车型中排痛点 配备原装款安全气囊 更安心 更舒适 豪华感更强 无损安装