• Codeforces Round #503 Div.2


    Codeforces Round #503 Div.2

    C. Elections

    题目描述:有(n)人,(m)个党派,每个人投票给一个党派,当用(c_i)贿赂第(i)个人时,这个人可以改选成任意一个党派,问最少花多少钱,使得第一个党派得票严格对其它党派。

    solution
    想了好久才把思路想出来,直接枚举最终第一个党派的得票,然后大于等于这个票数的党派肯定要改选,然后剩下的从小到大排序选即可。

    时间复杂度:(O(nm))

    D. The hat

    题目描述:有(n)个围成一圈的数(a_i),相邻两个数的差值为(1),通过不超过60次的交互询问某个(a_i)的值,确定是否存在(a_i=a_{n/2+i})

    solution
    看了别人的代码,不知为什么对。

    首先询问(a_1)(a_{1+n/2}),记住大小关系,(L=1, R=n/2+1),二分,每次询问(mid)(mid+n/2),如果大小关系与之前记录的相同,则(L=mid),否则(R=mid)

    时间复杂度:(O(2logn))

    E. Sergey's problem

    题目描述:给出一个(n)个点,(m)条边的有向图,现在选择一些点,使得选择的点不能直接有边相连,没被选择的点能通过选择的点在不超过两步内走到。输出一种选择方案。

    solution
    首先从前往后枚举点,若没被标记,则选择该点,然后将该点指向的点全部标记。
    这样就会出现直接有边相连的情况,所以从后往前枚举选择的点,看指向它的有没有选择,如果有选择,则这个点不选,这样这个点指向的点就可以通过指向它的选择的点在两步内走到。

    时间复杂度:(O(m))

  • 相关阅读:
    python的特点
    epoll理解(转)
    数据库存储过程、触发器、连接
    Mysql的四种隔离级别
    linux指令
    利用asyncio(支持异步io)和协程实现单线程同步
    ubuntu安装codeblocks
    临界区与互斥量区别
    单链表的简单操作
    hdu 5475 An easy problem(暴力 || 线段树区间单点更新)
  • 原文地址:https://www.cnblogs.com/GerynOhenz/p/9470988.html
Copyright © 2020-2023  润新知