首页 > 其他分享 >[CTSC2015] 日程管理

[CTSC2015] 日程管理

时间:2023-07-18 20:11:06浏览次数:45  
标签:删除 日程 管理 一个 加入 幽香 pos 任务 CTSC2015

[CTSC2015] 日程管理

题意

幽香是幻想乡中一个非常有地位的人。她日理万机,事务繁多,反倒自己已经快管理不过来了。于是他决定开发一个日程管理软件来帮助自己管理任务。

对于每个任务\(i\)有一个对应的截止日期\(t_i\)以及收益\(p_i\),表示若幽香能在不晚于第\(t_i\)天完成这个任务,便可以得到\(p_i\)的收益。幽香办事的能力非常强,任何任务都可以用恰好一天的时间做完。但由于任务实在太多了,有时候并不能完成所有任务,于是幽香会想知道这个情况下,完成任务可以给她带来的最大的累积收益是多少。

由于幻想乡的人们十分善变,任务总是不断发生着变化。幽香希望这个管理软件还能够支持插入一个任务,和删除一个任务的操作。

具体的说,幽香希望支持以下2个操作:

1.ADD t p:表示新添一个截止日期为t,收益为p的任务。

2.DEL t p:表示删除一个截止日期为t,收益为p的任务。如果有多个这样的任务,只删除一个。数据保证这样的任务一定存在。

在每次操作执行完毕后,你都需要输出能够完成的任务的最大收益和。

幽香一共有T天需要安排,从第1天到第T天。你能帮助他写出这个高效率的软件吗?

题解

考虑将模型转化。
我们将任务的使用情况映射到天数上面。
对第 \(i\) 天,我们记 \(s_i\) 表示第 \(i\) 天能够执行的任务数量,初始时 \(s_i=i\)。

加入。

我们如果在 \(pos\) 这个位置上放了一个任务,则 \([pos,T]\) 的 \(s_i\) 进行区间减 \(1\)。
如果 \(\min_{i=pos}^{i\leq T}s_i > 0\) ,则说明没有影响,可以直接放,反之不能。
不能的话我们显然要调整,我们删除某一任务,然后加入这个任务。
考虑加入之前就已经是最优的状态了,所以我们找到 \([pos,T]\) 中第一个值为 \(0\) 的位置 \(k\)。
我们在 \([1,k-1]\) 中选择贡献最小的任务,如果贡献没有新放的大,就撤销做一个区间加,然后再把当前任务加入。

删除

其实和加入类似。
删除一个任务就对应着一个后缀区间加。
同理,我们找到第一个为 \(0\) 的位置 \(k\),然后在 \([k+1,T]\) 中找一个未选的可加入的贡献最大的任务加入即可。

最后由于每天可以有多个任务,并且还有撤销操作,用 multiset维护未选集合与总集合即可,代码中还有些小细节。
code

...

这个贪心其实挺显然的,不一定是按什么排个序之后做。
我们可以考虑从一个最优状态推向另一个最优状态,可以有一个‘反悔’的操作。

标签:删除,日程,管理,一个,加入,幽香,pos,任务,CTSC2015
From: https://www.cnblogs.com/snow-panther/p/17564001.html

相关文章

  • Linux目录和文件管理
    目录1目录层次1.1常见子目录2查看文件内容2.1linux七大文件类型2.2显示命令2.2.1cat实例2.2.2tac、rev实例2.3分页显示2.3.1more2.3.2less2.4显示文件前后内容2.4.1head2.4.2tail2.4.3tr1目录层次1.1常见子目录常见子目录的作用/根是所有文件的起点......
  • Mysql基础5-用户及权限管理
    一、介绍DCL:DataControlLanguage(数据控制语言),用来管理数据库用户,控制数据库的访问,权限。二、用户管理1、查询用户语法:1、usemysql;2、select*fromuser; 默认只有四个账户。2、创......
  • SonarQube代码质量管理的开源平台
    CI/CD流水线完善计划,增加代码质量检查作业,在开发代码合入前提前发现不安全问题,因此引入代码质量检测-SonarQube服务。一、SonarQube是什么?Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar可以集成不同的测试工具,代码分析工具,以及持续集成......
  • axios封装的请求及拦截统一管理,和之前相比方便添加自定义请求头和超时
    1、api.js文件importaxiosfrom'axios'import{Message}from'element-ui'consttimeout=5000//默认超时constapi=axios.create({baseURL:'',//设置API的基础URLtimeout:timeout,//设置超时时间,单位为毫秒headers:{'Content-......
  • SSD_核心技术:FTL(2)映射管理
    映射种类根据映射粒度的不同,FTL映射有基于块的映射,有基于页的映射,还有混合映射(HybridMapping)。块映射块映射中,以闪存的块为映射粒度,一个用户逻辑块可以映射到任意一个闪存物理块,但是映射前后,每个页在块中的偏移保持不变。由于映射表只需存储块的映射,因此存储映射表所需空间小......
  • 22 个精美的网站管理后台模板推荐
    互联网上有大量的关于如何设计网站的教程,可以使你的工作更加容易和简单。但关于网站管理后台的教程却比较少。今天,我们提供一些非常强大的管理面板,可以帮助开发者设计网站的后台部分,另外,漂亮的后台也可以使工作变得舒心。    下面列出了22个漂亮的网站管理后台模板。 1) S......
  • C/C++用电管理数据[2023-07-18]
    C/C++用电管理数据[2023-07-18]用visualstudioc++设计一款程序来统计用电管理数据,要求能用菜单实现如下功能:(1)输入每个电表的用户名,楼栋号,抄表日期,电表读数。(3)按作者的用电量,从高到低排出每个用户的总用电量。(3)根据用户要求输出某用户某月(从键盘输入用户名和月份)的总用电量。......
  • 低代码框架开发:轻松掌握实现流程化管理的诀窍!
    实现流程化管理,已经是当前很多企业的真实想法和发展趋势。毕竟这能帮助企业快速提升办公协同效率,实现提质增效又降本的发展目标。那么,应用什么平台可以让广大用户实现这一目的?利用低代码框架开发平台,可以让大家轻松实现流程化管理,还能在数字化转型的道路上畅快前行。1、低代码框......
  • php实现站群软件权限管理功能示例
    1.管理员页面RBAC.php<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>权限管理</title><scriptsrc="bootstrap/js/jquery-1.11.2.min.js"></script></head><body>......
  • php位运算实现网站权限管理的方法
    ​首先我们先定义4个常量来设定四种权限:=====================================define(ADD,1);//增加数据库记录的权限define(UPD,2);//修改数据库记录的权限define(SEL,4);//查找数据库记录的权限define(DEL,8);//删除数据库记录的权限==================================......