首页 > 其他分享 >IOI 2015 Teams 分组

IOI 2015 Teams 分组

时间:2023-07-05 20:44:53浏览次数:47  
标签:一个 小组 学生 选择 Teams IOI 2015 矩形 贪心

IOI 2015 Teams 分组

题意

班里有 \(N\) 个学生,他们的编号为从 \(0\) 到 \(N-1\)。每天,老师都有一些项目需要学生去完成。每个项目都需要由一组学生在一天内完成。项目的难度可能不同。对于每个项目,老师知道应该选择由多少学生组成的小组去完成。

不同的学生对小组的规模有不同的喜好。更准确地说, 对学生 \(i\) 而言, 他只愿意在小组规模介于 \(A[i]\) 和 \(B[i]\) 之间(含 \(A[i]\) 和 \(B[i]\))的小组工作。每一天,一个学生最多只能被分配到一个小组工作。有些学生可能未被分配到任何小组中。每个小组只负责一个项目。

老师已选择好接下来 \(Q\) 天中每一天的项目。对于每一天, 现需要判断是否有一种分配学生的方案,使得每个项目都有一个小组负责。

题解

很好的一道题啊。
参考的是这篇题解,写得很好,自己再来复述一遍。

贪心

首先我们考虑怎么处理单次询问,有一个显然的贪心做法。

将 \(k\) 数组从小到大排序,按顺序对于每一个 \(k_i\) 取满足 \(A_i \leq k_i,k_i \leq B_i\) 中 \(B_i\) 的最小的 \(k_i\) 个。

正确性显然,这种贪心题还挺多的。

优化

接下来我们显然就是要对上面的贪心进行优化。

考虑将元素看做二维平面上的点,学生变为 \((A_i,B_i)\) ,任务变为 \((k_i,k_i)\)。
我们发现对于一个点 \((k_i,k_i)\) 来说,他可以选择的学生满足 \(A_i \leq k_i,k_i \leq B_i\) 即坐标在其左上角,可以看做是一个矩形的点。
将贪心的操作映射到二维平面上就相当于在矩形之内选择未被选择的 \(B_i\) 最小的 \(k_i\) 个点。
而同时由于我们提前将 \(k_i\) 进行了排序,所有的 \(k_i\) 都类似一条斜线地排列着,就相当于每到下一个矩形下边界就向上提,右边界就向右扩。

现在我们理清楚了贪心对应到到二维平面上的形态了,接下来考虑如何解决问题。

我们考虑对于每一个矩形所选择的点,显然都和前面的选择有关,所以我们想一想要记录什么才能知道如何推出后面的状态。
注意到我们是寻找最小的 \(B_i\) , 这显然和高度有关,而一个矩形的前面的矩形没有选择的范围显然是一段一段的
所以我们对于一个矩形记录一个 \(H_i\) ,表示第 \(i\) 个矩形未选择的点的最低高度,也就是最小的 \(B_i\) 。

这样我们就能够知道前面的选择和当前选择的关系。
若 \(H_{i-1} < B_i\) 则第 \(i\) 矩形可以选的点都不会被第 \(i-1\) 个矩形选到。
若 \(H_{i-1} > B_i\) 则第 \(i\) 矩形可以选的点可能 \(i-1\) 个矩形选到。
容易发现这和前面的矩形都有关,并且每个矩形的有效区域不一样,所以我们还需要记录一个 \(rem_i\) 表示第前 \(i\) 矩形还剩多少点可以选择。
这样我们就可以用 \(rem_{i-1}\) 和右边界所扩展出的点数来推出当前矩形的可用点数。
但是下边界还要向上扩导致一些点会消失,那我们可以维护一个 \(H_i\) 递减的单调栈来解决。
然后我们会发现这道题就解决了,通过维护 \(H_i\) 和 \(rem_i\) 可以推出每一个矩形的可用点,平面内数点和维护 \(H_i\) 显然都可以使用主席树来维护。code

...

这道题很好啊。
一个很有意思的操作就是将贪心的操作对应到了二维平面上。
后面有矩形的变化一个增加一个减少,减少没有直接减少,直接减少是很hard的,而是用单调栈直接接上有用的部分,这个方法很妙。

标签:一个,小组,学生,选择,Teams,IOI,2015,矩形,贪心
From: https://www.cnblogs.com/snow-panther/p/17529738.html

相关文章

  • 题解:【AT icpc2015summer day2-G】 Escape
    题目链接目前AT的最优解。树的话就是根叶链的最大点权和路径,DP随便搞。考虑扩展到图上,反复删除掉所有度数为\(1\)的节点,显然剩下的东西是可以全部取完的,因为它的形态类似于菊花套环,且末端必定为环。将这部分缩起来再跑上面的DP就好了。事实上两部分可以同时进行,一个bfs......
  • [NOIP2015 提高组] 跳石头
    [NOIP2015提高组]跳石头题目背景一年一度的“跳石头”比赛又要开始了!题目描述这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有\(N\)块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从......
  • P3975 [TJOI2015] 弦论 题解
    一、题目描述:给你一个长度为$n$的字符串,字符串由$26$个小写字母组成,求第$k$大的字串。给定参数$t$:$t=0:\位置不同的相同字串只算一个。$$t=1:\位置不同的相同字串算作多个。$若字串数量不足$k$个,输出$-1$。数据范围:$1\le......
  • [IOI2000] 邮局
    题目描述高速公路旁边有一些村庄。高速公路表示为整数轴,每个村庄的位置用单个整数坐标标识。没有两个在同样地方的村庄。两个位置之间的距离是其整数坐标差的绝对值。邮局将建在一些,但不一定是所有的村庄中。为了建立邮局,应选择他们建造的位置,使每个村庄与其最近的邮局之间的距......
  • 【图论】【建模】IOI2016 railroad
    【图论】【建模】IOI2016railroad题目描述Anna在一个游乐园工作。她负责建造一个新的过山车铁路。她已经设计了影响过山车速度的\(n\)个特殊的路段(方便起见标记为\(0\)到\(n-1\))。现在Anna必须要把这些特殊的路段放在一起并提出一个过山车的最后设计。为了简化问题,你可......
  • CS 131 Computer Vision: Foundations and Applications Fall 2014-2015
     CS131ComputerVision:FoundationsandApplications Fall2014-2015EventTypeDateDescriptionCourseMaterialsLecture1Tuesday September26Courseintroduction Computervisionoverview Courselogistics Introductionslides [pptx] [pdf] Logisticsslid......
  • P8026 [ONTAK2015] Bajtocja 做题笔记
    题目链接一道好题,本来是做几道启发式合并玩玩,没想到是个哈希。这一道题需要维护连通性,显然想到使用并查集。如果两个点在某个图内的父亲相同,显然这两个点就连通了。但是如果每链接一对点我们就遍历所有点对然后判断父亲,显然爆炸。于是考虑借鉴一下CSP2022T3的思路,对于每......
  • 题解 P4108【[HEOI2015]公约数数列】
    看到这种奇怪的操作,首先想到分块。以下记值域为\(w\),块长为\(B\)。前缀\(\gcd\)显然单调不增,而且后一个必须是前一个的因数,如果变化至少要减半。因此,我们知道,共有\(\mathcalO(\logw)\)个不同的前缀\(\gcd\)。我们可以接受对这些块暴力,只需要对前缀\(\gcd\)都相同的块......
  • BUUCTF:[RCTF2015]EasySQL
    BUUCTF:[RCTF2015]EasyS先注册一个用户在注册的时候,fuzz测试发现在username和email中过滤了以下字符:@orandspace(空格)substrmidleftrighthandle没有源码慢慢测试.......登录,发现还有个改密码在注册时用户名加些测试字符进去,'mochu7"\然后登录,在修改密码的时候,发现报错了......
  • 泛微eteams+RestCloud,实现企业数据的高效获取与同步
    泛微eteams是一种企业级团队协作软件,类似于微软Teams、Slack等工具。它提供了实时聊天、视频会议、文件共享、任务管理、日程安排等功能,旨在提高团队协作和沟通效率。泛微eteams还与泛微OA、泛微移动审批等企业应用进行了集成,可以实现跨系统的数据传递和协同工作。企业往往会有将......