zoukankan      html  css  js  c++  java
  • 2020.08.05【省选B组】模拟 总结

    今天比赛做得超级(不)爽。。。
    估分:(10 + 0 + 30 + 0 = 40)
    实际:(0 + 0 + 30 + 0 = 30)
    我晕了,暴力也打错了。。。。。。

    (T1)

    隔了一天才回来打(T1)(2020.8.6)),发现自己已经习惯(爱上)了三进制转移。
    我们对于一个格子有三个状态,黑色,白色,和任意色。转移的时候是一个个格子转移(轮廓线(DP))。
    转移要保证该格子上面一个格子最后要是白色或任意色。
    操作有三种:不操作,改变自己的颜色(黑白互换),改变周围的颜色(并且自己颜色变成任意色)。
    然后有一点要注意的是:我们发现,改变周围颜色的时候下面的也会改变,但有一点可以解决:
    我们发现之后上面的颜色是任意色的时候才会改变这个格子的颜色,所以转移时判断一下即可。

    (T2)

    这道题。。。竟然是网络流。。。
    我们需要解决炮台相交的问题,可以发现相交实际上出现了一条路径。
    规定炮台路径都是由纵向走向横向。对于每条边的边权即为该炮台打到的(max)减去当前格子的(val)
    但注意到可以会出现有路径横纵变换多次的情况,于是将每个点拆成两个点,一个点走横向,一个点走纵向,然后将走纵向的点向横点连一条(inf)的边即可。
    现在的问题转化成了一道最小割模型,跑最大流即可。

    (T3)

    改完(T4)(T3)。(* ̄︶ ̄)
    这道题很明显可以看出是一道点分治,但我不会快速求经过当前重心的路径答案。
    然而这个操作确实很麻烦。
    我们假设当前节点(x)的父亲是(fa),然后我们可以发现:

    [f[x]=f[fa]+size_-hb[c[x]] ]

    其中(f[x])表示这一次的(x)的答案,size_表示根节点走这条路径这个儿子以前的子树大小,而(hb[c[x]])表示以前子树中包含(c[x])颜色的路径数。
    这样我们正着来一遍,然后倒着来一遍,最后减去重复计算每个点到重心的答案即可。
    表示打起来超级不方便。。。

    (T4)

    正解线性基。而且操作极骚,有点难想。
    首先很容易将题目转化,成每次修改两个点的权值,求(n)个数的子集异或最大值。
    (FK)大佬说:“如果是两个数可以用(trie)乱搞,而多个数则可以用线性基”
    但是这个线性基是要支持修改的。而有个结论。
    就是对于加入线性基的数,删除时间越晚的越优。
    这样我们就可以对于每个线性基的数存一个删除时间点。
    对于删除时间更晚的,我们可以将插入的值与线性基的值交换,然后继续做下去。
    可以证明这样不会影响线性基的正确性。
    删除我们如果找到删除时间相同的就将这位的值删去,否则不需要修改。
    查询最大值直接贪心扫一遍即可。

    总结

    以后一定要把每一次比赛当做正式比赛来做,我做到后面竟然没有打暴力的心思了。。。危!危!危!
    最好每道题都均衡分配时间,不要死在一道题上了
    加油加油,中考成绩出了,再接再厉!

    转载需注明出处。
  • 相关阅读:
    SQLServer2008设置开启远程连接
    C# 调用 SQL server 初探
    在同一网关下ping不通其他电脑
    SQL server 2008 安装报错 reporting services catalog database file existence
    Sql Server中一次更新多列数据
    Git warning push.default is unset
    删除右键菜单中的Git
    Java多线程中Lock的使用
    ConcurrentHashMap如何保证线程安全
    Java多线程之ThreadLocal
  • 原文地址:https://www.cnblogs.com/jz929/p/13439625.html
Copyright © 2011-2022 走看看