博客
关于我
洛谷p1830 贪心 活动的安排
阅读量:377 次
发布时间:2019-03-05

本文共 998 字,大约阅读时间需要 3 分钟。

活动选择问题是经典的贪心问题,解决方法如下:

  • 按照活动的结束时间对活动进行排序。这样可以尽早释放时间,为后续选择留下更多空间。

  • 初始化时,选择结束时间最早的活动作为第一个选中的活动,并记录其结束时间。

  • 从第二个活动开始,依次检查每个活动的开始时间。如果当前活动的开始时间晚于或等于上一个活动的结束时间,则选择该活动,并更新结束时间。

  • 通过这种方法,可以确保选择的活动数量最多。这是因为每次选择结束时间最早的活动,能够为后续的活动选择留下更多的时间窗口,从而最大化整体的活动数量。

    以下是实现代码:

    #include 
    #include
    #include
    using namespace std;struct Activity { int start, end;};bool compare(const Activity& a, const Activity& b) { return a.end < b.end;}int main() { int n; cin >> n; vector
    acts(n); for (int i = 0; i < n; ++i) { cin >> acts[i].start >> acts[i].end; } sort(acts.begin(), acts.end(), compare); int last_end = acts[0].end; int count = 1; for (int i = 1; i < n; ++i) { if (acts[i].start >= last_end) { last_end = acts[i].end; count++; } } cout << count << endl; return 0;}

    这个代码首先读取输入数据,定义了一个活动结构体,包含开始时间和结束时间。然后使用比较函数按结束时间排序活动。接着,初始化最后一个选中的活动的结束时间为第一个活动的结束时间,并遍历每个活动,选择不重叠的活动,最后输出选中的活动数量。

    转载地址:http://jmtg.baihongyu.com/

    你可能感兴趣的文章
    OSPF技术连载2:OSPF工作原理、建立邻接关系、路由计算
    查看>>
    OSPF技术连载5:OSPF 基本配置,含思科、华为、Junifer三厂商配置
    查看>>
    OSPF技术连载6:OSPF 多区域,近7000字,非常详细!
    查看>>
    OSPF技术连载7:什么是OSPF带宽?OSPF带宽参考值多少?
    查看>>
    OSPF技术连载8:OSPF认证:明文认证、MD5认证和SHA-HMAC验证
    查看>>
    OSPF故障排除技巧
    查看>>
    spring配置文件中<context:property-placeholder />的使用
    查看>>
    OSPF有哪些优势?解决了RIP的什么问题?
    查看>>
    OSPF理论
    查看>>
    OSPF的七种类型LSA
    查看>>
    OSPF的安全性考虑:全面解析与最佳实践
    查看>>
    OSPF知识点大全,网络工程师快速收藏!
    查看>>
    ospf综合实验2 2012/9/8
    查看>>
    OSPF规划两大模型:双塔奇兵、犬牙交错
    查看>>
    OSPF认证
    查看>>
    OSPF设计原则,命令以H3C为例
    查看>>
    ospf路由 华3_动态路由OSPF基本原理及配置,一分钟了解下
    查看>>
    OSPF路由协议配置
    查看>>
    OSPRay 开源项目教程
    查看>>
    VC++实现应用程序对插件的支持
    查看>>