200求两个算法设计题的解答!

ryuxy 2005-06-20 10:50:43
先开100,答对一个100分,两个200分,另开贴加分!
1.设某学校只有一个活动中心可供使用,现有n个班的新年联欢会均想借用活动中心,已知第i个班的联欢会计划在时间[si,fi)内举行,请写一算法,安排尽可能多的班互不冲突地使用该活动中心。
2.试写一算法HeapDelete(A,i),将A[i]从二叉堆A中删除,请给出算法的时间。
...全文
217 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sodangerous 2005-06-30
  • 打赏
  • 举报
回复
对于问题1还是不是特别理解
我想:
将其按si排序
得到: [s1,f1], [s2,f2] ,...,[sn,fn]
Min Sumi (sign(s(i+1)-fi))
其中sign(x) = { x, if x>0; 0, if x<=0}
主要是你的决策参数选择问题,如果所有[si,fi]都已经固定,则结果已经固定,没法优化
如果选择可以移动si,fi,但保证fi-si固定,同时对所有smin<=si<=smax,fmin<=fi<=fmax,可以找到最优解,算法可以采用遗传算法编码或模拟退火等
Zephyrzzz 2005-06-20
  • 打赏
  • 举报
回复
1. 先排序后dp
A[i]=max{A[k]+1} k=1..i-1,fk<=si

2. 将堆尾元素移至i位,以i为根调整堆,复杂度O(logn).(设堆为最小堆)
while (i*2<=n) {
if (i*2==n || A[i*2]<A[i*2+1]) A[i]=A[i*2],i*=2;
else A[i]=A[i*2+1],i=i*2+1;
}
A[i]=A[n--];
ryuxy 2005-06-20
  • 打赏
  • 举报
回复
各位大虾帮帮忙啊!
ryuxy 2005-06-20
  • 打赏
  • 举报
回复
多谢楼上兄台,但是我需要完整的解答步骤,请麻烦写一下行不?

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧