当前位置: 首页 > 知识库问答 >
问题:

事件调度

解晟睿
2023-03-14

当一个组织中有N名员工时,我们会得到N个日期偏移范围。类似于
1-4(即员工将在第一、第二、第三和第四天来)
2-6
8-9
...
1-14
我们必须在最少的天数上组织一次活动,以便每个员工至少可以参加两次活动。请建议算法(可能是贪婪的)来做到这一点。
PS:事件是一天的事件。

共有2个答案

宗政欣可
2023-03-14

我认为这可以通过以下贪婪的方法来完成

Maintain a num count for all intervals. (Initialize all to 0)
If num = 0 place the two events on the last two days of this interval. 
If num = 1 place one event on the last day of this interval
If num = 2 already two events have been covered for this interval.

将事件放置在一个间隔中可能会导致后续事件的num count增加。

丁承德
2023-03-14

如果你的数据很小,你可以强行使用它。选择所有可能的2天组合。对于每种组合,尝试一下,看看是否每个人都可以同时参加。如果没有,选择所有可能的3天组合,看看是否每个人都可以参加3天中的2天,依此类推。这是指数级的,但对你来说可能没那么糟糕。

贪婪的方法是计算每天有多少人在工作,然后选择人数最多的一天。重复一遍,数一数每天有多少人没有安排两个活动,然后选择人数最多的一天。当然,不要选择同一天两次。

 类似资料:
  • 有没有任何方法可以有一个发生在网页上的事件的调用堆栈? 在web页面上添加了小部件后,我开始遇到许多“太多递归”错误,但从代码中可以看到的情况来看,没有明显的事件气泡问题(选中jQuery太多递归) 错误发生在点击页面上的任何地方之后(经过一定的延迟) 我尝试用手动防止事件冒泡,但这似乎没有什么好处。 我甚至写了一堆,但在输出中看起来一切正常。 因此,如果能有一种快速的方法来跟踪正在调用的事件(在

  • 2.3 调试事件 调试器在调试程序的时候会一直循环等待,直到检测到一个调试事件的发生。当调试事 件发生的时候,就会调用一个与之对应的事件处理函数。 处理函数被调用的时候,调试器会暂停程序等待下一步的指示。以下的这些事件是一个 调试器必须能够捕捉到的(也叫做陷入): 断点触发 内存违例(也叫做访问违例或者段错误) 程序异常 每个操作系统都使用不同的方法将这些事件传递给调试器,这些留到操作系统章节 详

  • 我希望能够读取我的滑块值,因此我为我的控制器类使用事件侦听器: 我尝试了每一个MouseDragEvent,但没有一个MouseDragEvent被实际调用(比如在拖动时检测到的,在我开始拖动滑块时应该被调用)。我找到了这篇文章,但它并没有解决我的问题。JavaFX鼠标拖动事件未触发

  • 本文向大家介绍Atitit.js的键盘按键事件捆绑and事件调度,包括了Atitit.js的键盘按键事件捆绑and事件调度的使用技巧和注意事项,需要的朋友参考一下  1. Best的方法还是 2. Event bind 3. Event dispatch js中获取键盘事件 只要你定义了这些键的动作,你在浏览器里按下这些键就会响应,兼容目前所有浏览器。 js 里面的键盘事件经常用到,所以收集了键盘

  • 问题内容: 如何通过自己的代码手动调用特定事件? 问题答案: 我认为您想要wx.PostEvent。 在wxPython Wiki上 还有一些有关从其他线程发布事件以执行长期运行任务的信息。

  • 我有windows 8应用程序启用了通知功能。它在Windows8,8.1和Windows10机器上也很好用。但我发现的问题是,当用户点击通知时,它会从Windows8和8.1应用程序中的LAunchEvent获取启动属性,并按照预期的那样基于toast通知的启动参数。在那里,就像我在Windows10机器上运行应用程序一样,如果用户点击通知,我无法读取toast通知的启动属性。所以有谁能指导我该