• Codeforces Round #377(div 2)


    A、B、C:=,=

    D:题意:有n(n<=1e5)天,每天可以选择考某一门科目或者在家复习,一共m(m<=1e5)门科目,每个科目都有特定的需要复习时间,只有复习了足够的天数才可以考并且考过。给出每天的信息,0代表无考试科目,其他代表那天考那一门(当然你可以选择不考,这天复习),问要考过所有科目至少需要多少天,无法考完输出-1

      分析:这题是最优化问题,直接考虑不好考虑。

         可以转化成二分判定问题,二分天数mid,接下来问题就变成了如何判定mid天内是否可以考完

         贪心的思想,从后往前,将最靠后的不同科目标记在时间轴上,从1~mid天贪心,先复习时间轴靠前的。

         注意写check函数的时候要考虑到是否所有科目都包含了进去

    E:题意:有n个电脑和m个适配器(n,m<=2e5) 他们各自都有自己的电压,要求电脑和适配器电压相同才匹配。对适配器的一次操作可以将其电压除以2向上取整。求最多有多少个电脑可以匹配到适配器,在这个基础上,再求最少操作总次数,并输出方案。

       分析:第一眼是二分图匹配,然而范围太大,不可行。

          刚开始,如果有电脑和适配器电压相等,那么显然他们直接匹配,不会让结果变差。

          剩下的就肯定无法匹配了,所以这些适配器需要操作

          可以将这些适配器都操作一次,再和剩余电脑匹配,再反复操作,直到所有适配器电压都是1

          这样的操作让适配器都尽可能和电脑匹配,满足让电脑匹配数最大,同时类似BFS的所有适配器同时遍历保证了总的操作数最少。

          具体操作上可以用multiset来存电脑的信息,一个数组存适配器信息,模拟一过程就行了。

          注意multiset.erase(value)会将所有权值为value的点都删掉,所以删除的时候要删除find()的地址,而不是find()的权值

    F:题意:n点m边无向图(n,m<=4e5),没有重边和自环。让你给每条边定向,让点能到达其他点的最小数目最大。

       分析:类似有向图求强连通,先用Tarjan求出边双联通分量,缩点成一个树,相当于要给树的边定向,然而必然会有一个分量A连向另一个分量B,题目要让最小到达点数最大,最小到达点数其实就是叶子节点的所含点数,所以ans=最大的双联通分量的size,具体方案可以选择size最大的分量中任意一点dfs遍历所有边,倒过来就是遍历方向。

  • 相关阅读:
    docker,构建nginx反向代理tomcat
    centos7 Docker Compose 的安装
    tomcat8以上管理页面提示403问题
    实战docker,编写Dockerfile定制tomcat8镜像,实现web应用在线部署
    pycharm的MySQLdb模块导不进去时解决办法
    使用Docker创建Elasticsearch服务
    使用Docker搭建Tomcat运行环境
    win7查看某个端口被占用的解决方法
    在docker中使用mysql数据库,在局域网访问
    c++11 其他特性(一)
  • 原文地址:https://www.cnblogs.com/wmrv587/p/5988316.html
Copyright © 2020-2023  润新知