• 2016-5-24模拟测试


    • T1

      • description
        给出一个(n(leqslant 200))个节点(m(leqslant 40000))的图,现在请你删除一些边,使得每个点最多只有一条入边和一条出边,并且使删掉的边的权值和最小。
      • solution
        将每个点拆成出点和入点两个点,建立费用流模型,跑最大费用流。
        注意是最大费用流而不是最大流下的最大费用,即使去除了负费用的边,本质也没有改变。
    • T2

      • description
        类似bzoj4561
      • notice
        第一次写这道题是通过了的,其中有几个问题需要注意。
        每次加入圆弧时是两端,当curx取到端点时两个的值是相同的,如果直接算y坐标会被视为相同的插不进去。
        于是可以再加入第二关键字,或者使用multiset。
        还有一个方法就是使上半弧向上偏移eps下半弧向下偏移eps,这样key值就不同了。
        bzoj4561我就是这么写的eps取得1e-5
        这次重新写了一遍,竟然WA完了。
        赛后调试的时候发现竟然把eps的类型给成了int,改成double之后通过了测试。
        然而我的g++是4.7.2的,用4.8.1的g++测试竟然还是WA。
        我适当调大eps后通过了测试,因为我是在sqrt()函数里+eps的,导致出现了精度问题,上下圆弧被算作相同的而只加入了一个。
        即使是这样,在删除的时候是会暴露出问题的,如果
    assert(s.find(up) != s.end());
    s.erase(up);
    assert(s.find(down) != s.end());
    s.erase(down);
    

    是会检查出错的。
    然而我一时偷懒了,写成了

    assert(s.find(up) != s.end());
    assert(s.find(down) != s.end());
    s.erase(up);
    s.erase(down);
    

    就没有查出错误

    • T3
      • description
        60个物品,物品权值(a_i leqslant 10^8),10个询问,询问能否凑出(s leqslant 10^9)
      • solution
        这题标程加了一些剪枝通过了所有的测试数据,然而下来随手被卡T。
        lcr手写bitset+手动开O2优化通过了所有的测试数据。
        我用meet in the middle 枚举前20个最大的,后面的用bitset,抵着时限开了(3.5 imes 10 ^ 8)的bitset也通过了所有的测试数据。
        顺便get了手写bitset,加入了《板》。
  • 相关阅读:
    网络-路由交换-路由基础-华为-OSPF的工作原理
    网络-路由交换-路由基础-华为-OSPF报文
    常见协议端口号和IP地址
    以太网帧类型速查(协议字段)
    TCP/UDP端口列表
    利用python生成简单的爆破字典
    BUU的三道文件包含题
    Poc、Exp、Payload、Shellcode的区别
    JavaScript Dom操作-增删改节点1
    JavaScript 图片轮播
  • 原文地址:https://www.cnblogs.com/showson/p/5525415.html
Copyright © 2020-2023  润新知