zoukankan      html  css  js  c++  java
  • Codeforces Round #111 (Div. 2)

    Codeforces Round #111 (Div. 2)

    C. Find Pair

    题意

    • (N(N le 10^5))个数,在所有(N^2)对数中求第(K(K le N^2))对数。
    • 排序按照pair比较,first为第一关键字,second第二关键字。

    思路

    • 统计(cnt[x])为值(x)出现的次数。
    • 第一关键字为(x)的对数为(cnt[x] imes n),显然可以找到第一关键字。
    • 在确定第一关键字(x)后,第二关键字(y)的出现次数为(cnt[x] imes cnt[y]),通过前缀和就可以求出第二关键字。

    代码


    D. Edges in MST

    题意

    • 一张带边权的无向图,有(N(N le 10^5))个点,(M(M le 10^5))条边。
    • 对于每条边,判定在最小生成树的状态:在任一最小生成树中(any)、在一种最小生成树中(at least one)、不在任一最小生成树中(none)。

    思路

    • 按边权从小到大做,边权相同的一起考虑。
    • 边权较小的边形成的连通块缩点,考虑当前权值的边:
    1. 若当前的边会与边权小的边构成环,说明这条边显然不在任一生成树中。
    2. 若当前的某些边构成环,说明这些边只会在一种生成树中,否则割边会在任一生成树中。

    代码


    E. Buses and People

    题意

    • (N(N le 10^5))个区间([s_i, f_i])及权值(t_i), (s_i, f_i, t_i le 10^9),保证(t_i e t_j, i e j)
    • (M(M le 10^5))个区间([l_i, r_i])和权值(b_i)
    • 对于(M)的区间,找到最小的(t_j)的编号(j),使得(b_i le t_j)(s_j le l_i, r_i le f_j)

    思路

    • (s_j le 1_i),则相当于在([b_i, max{t}])中找到第一个(f_j ge r_i)
    • 因为每个(t_j)均不相同,则用线段树维护对于区间([t_i,t_j])的最大(f)值。
    • 对于每个(b_i),二分(t)即可。

    代码

  • 相关阅读:
    linux 定时脚本任务的创建
    win10 Edge 无法上网代理服务器错误
    CentOS 7 系统root用户忘记密码的重置方法
    通过挂载系统光盘搭建本地yum仓库的方法
    Oauth服务端协议开发
    mongodb 用户权限控制
    javascript 数组方法拼接html标签
    存储管理与linux内存寻址(1)
    原型模式
    背包,队列,栈的java实现
  • 原文地址:https://www.cnblogs.com/mcginn/p/5911078.html
Copyright © 2011-2022 走看看