• STOI补番队胡策


    ROUND 1

    第一轮是我出的。

    比赛情况:

    #1 NanoApe 300 (完美AK)

    #2 && #3 swm_sxt / ccz  200

    A.candy

    这道题就是个nim游戏, 我们知道当且仅当选出的各堆糖果的异或和为0时,先手必败.

    这样问题转化为从N个数中选1一些数使得他们的异或和为0的方案数.

    30%,O(2^N) DFS.

    假如只有询问, 那么可以直接用类似01背包的dp解决.

    for i = 1 ~ 1024

      dp(i, x) += dp(i-1, x^w_i);

    dp(i, x)表示考虑了前i个糖果, 异或和为x的方案数. 时间复杂度O(1024*N)

    加入操作, 直接再来1次O(1024)的dp即可.

    删除操作, 暴力做的话会TLE, 但是只能暴力.

    暴力做就可以拿60%.

    注意到加入操作不超过10, 我们可以时光倒流, 这样加入操作变成了删除操作, 删除操作变成了假如操作, 删除时暴力重新dp就不会TLE了。

    B.233

    暴力, 期望得分0~60, 给出了详细的数据范围,就是想看你们的乱搞能力.

    100%,莫队算法.

    首先, 拆去绝对值, 用数据结构(树状数组/线段树/平衡树/暴力)维护, 那么我们可以O(log N)的时间来从[L, R]的答案算出[L-1, R]或者[L+1, R]或者[L, R-1]或者[L, R+1]的答案

    假如我们当前知道了[L, R]的答案, 然后想得到[L', R']的答案, 那么代价就是O((|L-L'|+|R-R'|) log N)

    离线, 令m=N^0.5, 将询问[l, r]按 l / m为第一关键字, r为第二关键字排序.

    然后按这样的的顺序去计算, 每次都是暴力移动, 时间复杂度O(N^1.5 log N)

    C.D

    高斯消元求出f数组. f(u) = sigma(f(v)+w(u,v)) / degree(u), degree(u)为结点u的出度.

    跑1遍tarjan, 就变成了DAG, 然后DAG求最长链就是经典问题了...dp就可线性求解.

    ROUND 2

    这次是czllgzmzl大爷出的。

    第一题是个最小路径覆盖,转化一下,就可以用O(n^2)的dp水过去....这是这场比赛我唯一AC的题目

    t2写到一半弃疗了, 打了t2,t3暴力就滚粗了= = 140垫底无误

    Round 3

    这场是child出题

    写暴力混了个并列#2...... 70+30+40+30=170 

  • 相关阅读:
    Direct2D 变换
    DWrite 文字
    Windows基础窗体编程
    .net delegate(委托类型)
    详说new和overrid区别
    类与结构区别
    IIS的Gzip压缩
    ASP.NET 状态服务和session丢失问题解决方案
    Fiddler使用
    Castle系列教程(转)
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/5244541.html
Copyright © 2020-2023  润新知