暑假8-14

最近两天三考,问题很多

昨晚那场正的有些意外,不是意外自己挂了,而是意外别人5个AK的,但我觉得这题一点也不水(可能上次做达哥的题做怕了)

T1  N15 状态数 $2^15$不需要转移,直接dfs枚举,然而脑子一抽把b和d放反了

T2  网格上的无向无环森林计联通块数,就是$点数-边数$,再利用二维前缀和$\Theta(1)$查询

  需要注意边界情况,和一般的二维前缀和不太一样

T3  暴力:$\Theta(n^2)$枚举相交的点并去重、计数

  根据贡献的计算方式$\frac{x\times(x-1)}{2}$联想实际意义,即:两条过点的线段的方案数,那么最终答案就是算所有的两两相交的方案数

  优化至$\Theta(C_n^2)$

  再根据本题线段的特性:纵坐标递增;如果两个线段总坐标递增,横坐标递减,一定相交,那么总答案就是求横做标的逆序对个数

  挨个求需要$\Theta(n \log n)$,仍超时

  再想横坐标数组$x[ ]$的特性,是:在% mod意义下的等差数列$x_1+(n-1)\times a$,不模是完整的等差数列,去模后就是很多段等差数列

  公差是$a$,说明每隔$a$一定出现一个$x$

  已知$x_{i-1}$的逆序对个数$m$(包含了$x_{i-1}$之前的$k$个等差段),要推$x_i$的逆序对,只需用$m$减去之前 每个段中都有的一个 大于$x_{i-1}$而小于$x_i$的数 共$k$个

  这样只需求每个等差段开头的一个数的逆序对数便可以推出整个段的逆序对数,总复杂度:$\Theta(n + a\times \log a)$

做这类题还是要从原题意下手,一步一步分析题目性质,逐渐把暴力优化到可过的复杂度

今天上午一场考试又挺难的

T1  模拟,记录每次翻折后翻折点的位置和区间左右端点,新的翻着时,推新的位置,更新左右端点,总$\Theta(n^2)$

T2  类欧几里德思想,通过把方程规模不断缩小,得出一层答案(其实边界条件是特判出来的)后迭代回去出得出最初答案

  虽说$L,R$范围$1\times10^9$,但中间过程会乘爆$int$,还得开$long long$.

posted @ 2019-08-15 06:32  DuanYue  阅读(134)  评论(0编辑  收藏  举报