zoukankan      html  css  js  c++  java
  • 模拟测试28

    T1:虎

    观察性质,贪心。

    首先看到求最小次数,但是没有权值,想到可能不是DP,可能是个贪心。

    看数据范围,1e6,O(n)或log,但这题没什么可用的数据结构。(现在想想log可能来自二分,但去想二分的check发现依然可以贪心。)

    类似杂题1里的szn。找规律发现,取反操作,重合部分是没用的。2+1的lca以上可以去掉,2+2同样可以省去,在同一子树内部转移。

    边的几种关系分类讨论一下。需要操作的只有0->1.同一子树内部一对互消,有剩下的转移到父节点向上连的边。(合并)

    这样决策是不会更差的。

    T2:阴阳

    (话说,联系T1,莫不是......虎符咒......)

    观察性质,容斥。

    网格题求最值很可能是网络流。

    计数题可能是DP。

    有些有特殊性质可以转化为序列。

    计数可以前缀和。

    手模,每行都有一个黑白分界点,且有单调性。

    分为四类:(白左,黑左)×(升,降)。

    比较巧妙的做法是旋转矩阵90度,减小码量。

    由于网格位置限制,分界点每行有范围。

    处理出黑色白色在每行的左右边界即可。

    转移是sigma形式,可以前缀和把n^3优化为n^2。

    但是我们发现过不了样例。

    再次手模,发现有的状态计算了多次。

    开始只想到把竖着的算了多次,但是没想到横着的也算了多次。还有全黑全白也是。

    这些可以处理出黑白的全局左右上下边界,计算出多算的情况数。

    注意:全黑全白要考虑黑白有几个没出现过。

    考试时卡在横着的处理上,没调出来。

    方法应该是画几个例子,能看出来。

    3、山洞。

    60:m<=1000:n^2.

    100:1e9,矩阵乘,循环节除法魔法。本题都用到。

    记得去看循环矩阵。

    首先60% nmDP比较好写。

    其次尝试去掉m=1e9.

    直接矩阵不行,因为转移不重复。但是发现以n为循环节,i%n是相同的。

    发现由于是环,具体到哪里不重要,重要的是距离出发点的位置。

    所以fj+k=fj*fk.(下标%n意义下)。

    (其实就是个循环矩阵)

    于是可以DP到n处理出循环节部分,m%n的余数可以在过程中算出来。

    然后就是循环矩阵了。O(n^2log)

    注意矩阵乘是+=不是=。

    要去看循环矩阵

    Informatik verbindet dich und mich. 信息将你我连结。
  • 相关阅读:
    Java中的import
    C语言中变量的理解
    C语言中变量的储存类别
    android通话流程浅析RIL层
    IOS(数据持久化1)
    IOS(CGContent画曲线)
    IOS XML的类型数据的解析
    truncate narrow string converted from unicode string
    复习:C语言中的转义字符
    Note of using static_cast
  • 原文地址:https://www.cnblogs.com/seamtn/p/11391398.html
Copyright © 2011-2022 走看看