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)\)

转载于:https://www.cnblogs.com/GerynOhenz/p/9470988.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值