zoukankan      html  css  js  c++  java
  • CF做题记录(二)

    Codeforces Round #585 (Div. 2)

    D. Ticket Game

    Description

    给定一个长度为(n)的数字串((n)为偶数),其中有一些位置的值被删除了用(?)表示,有两个人要在这个上面玩一个游戏。这两个人会轮流把串中的问号替换成一个数字(in [0, 9]),如果最后前一半所有数位的和等于后一半所有数位的和,那么后手赢,否则先手赢。现在给定这个带(?)的数字串,你需要求出谁最后会赢

    (2 leq n leq 2 imes 10^5)

    Solution

    我们可以先考虑只有一边有(?)的情况,设(?)的数量为(C)((C)为偶数),有(?)的那边比另一边的权值和少(d)

    • (Case_1​),如果(d = frac{C}{2} imes 9​),先手放(x​),后手就放(9-x​),后手赢
    • (Case_2),如果(d > frac{C}{2} imes 9),先手就一直放(0),不论后手怎么放,(d)总是大于(0),先手赢
    • (Case_3),如果(d < frac{C}{2} imes 9),先手就一直放(9),不论后手怎么放,(d)最后会小于(0),先手赢

    现在我们再考虑一下两边都有括号的情况,我们假设左边的(?)较多,左边的权值和比右边的少(d​),括号数量的差为(C​)

    • 如果(d = frac{C}{2} imes 9​),那么不论先手怎么放,后手就可以对称的去放,然后转化为(Case_1​)
    • 如果(d > frac{C}{2} imes 9),先手就可以在右边放一个(9),以此来转换先后手,然后再按照对手的操作对称去放。最后只有左边有奇数个(?)的时候,(d > frac{C}{2} imes 9 + 9)。等对手放完之后,就转化为了(Case_2)
    • 如果(d < frac{C}{2} imes 9),先手就可以在右边放一个(0),以此来转换先后手,然后再按照对手的操作对称去放。最后只有左边有奇数个(?)的时候,(d < frac{C}{2} imes 9)。等对手放完之后,就转化为了(Case_3)

    所以我们就只需要知道(C, d),就可以确定胜负了

    (Solution)思路来源:mohamedeltair

    E. Marbles

    Description

    给定一个长度为(n)的数列(a_i),你可以花费(1)的代价交换相邻的两个元素。现在你要使得每种权值的下标连续,问最小需要多少花费

    (2 leq n leq 4 imes 10^5, 1 leq a_i leq 20)

    Solution

    我们可以先处理出任意一种权值考虑对于任意一个其它权值的集合,如果要把所有这种权值的数都移到最左边需要的代价。然后我们就可以设(dp[s])表示把(s)集合中的权值都处理完后(移动到最左边)所需要的最少代价,然后我们就每次枚举一种没有处理的权值转移就可以了

    code

    F. Radio Stations

    Description

    (p)个信号站,每一个信号站只有在总站发出的功率在([l_i, r_i])时才能正常工作,现在有(n)个形如(x_i)号信号站和(y_i)至少要有一个正常工作的限制,有(m)个形如(x_i)号信号站和(y_i)不能同时正常工作的限制

    总站能发出的功率(f)的范围是(in [1, M]),你现在需要确定总站发出的功率以及哪些信号站工作,使其满足给定的所有限制

    (2 leq n, p, M, m leq 4 imes 10^5​)

    Solution

    我们可以发现如果没有功率的限制,那就是一道(2-SAT)的模板题,现在我们考虑怎么解决功率的限制

    我们可以考虑对于每一种功率都建一种变量,第(i)个点表示(f geq i),其逆否命题表示(f < i)。我们对于(f geq i)(f geq i - 1)连边,因为如果(f)满足前者,显然就会满足后者。同理,我们对于(f < i)(f < i + 1)连边。然后我们可以把信号站对于功率的限制转化为下面两个限制:(f geq l_i)和不选(i)至少有一个成立,(f < r_i + 1)和不选(i)至少有(1)个成立。然后就直接跑(2-SAT),随便跑出一组解就可以了

    code

    Summary

    这场也只能算是打得一般,(E)题就是一道思博题,还想了半个多小时...

    以后打的时候一定要注意做题速度,因为(Div2)有很多手速场。比如说这场,从第(4)名到差不多(200)名都是(A)(5)题,就是看谁的手速快

  • 相关阅读:
    cmanformat
    mysql-sql语言参考
    jQuery 判断多个 input checkbox 中至少有一个勾选
    Java实现 蓝桥杯 算法提高 计算行列式
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
  • 原文地址:https://www.cnblogs.com/xunzhen/p/11533480.html
Copyright © 2011-2022 走看看