「POJ 1151」Atlantis

求多个矩形的面积并

沿 xx 轴扫描,用数据结构维护 yy

这题用到的数据结构很有意思

维护长度为 nn 的序列,支持

  • 区间加法
  • 求序列中大于 00 的数的个数

但是这道题目存在一个特殊的性质:每个数不会减到负,所以问题就简单了

下面是线段树节点合并

1
2
3
4
5
// s 是当前节点
s.sum = s.t
? raw[s.r] - raw[s.l-1]
: (s.l == s.r ? 0 : T[ls].sum + T[rs].sum);

阅读更多

「CH 4302」Interval GCD

主要是记一个结论

a0=0gcdi=1nai=gcdi=1naiai1 a_0 = 0\\ \gcd_{i=1}^na_i=\gcd_{i=1}^n a_i-a_{i-1}

这样,维护区间修改 gcd\gcd 查询就非常方便

注意 gcd\gcd 的写法

1
2
3
4
5
ll gcd(ll x, ll y){
return x && y
? gcd(y, x%y)
: std::max(std::abs(x),std::abs(y));
}
阅读更多

初赛复习

知识点

  • P Problem: 对于任意的输入规模n,问题都可以在n的多项式时间内得到解决;
  • NP(Non-deterministic Polynomial) Problem: 可以在多项式的时间里验证一个解的问题;
  • NPC(Non-deterministic Polynomial Complete) Problem: 满足两个条件 (1)是一个NP问题 (2)所有的NP问题都可以约化到它
  • NP-Hard Problem: 满足NPC问题的第二条,但不一定要满足第一条

( AB )属于 NP 类问题。

  • 存在一个 P 类问题
  • 任何一个 P 类问题
  • 任何一个不属于 P 类的问题
  • 任何一个在(输入规模的)指数时间内能够解决的问题

主定理

T(n)=aT(n/b)+f(n) T(n)=aT(n/b)+f(n)

考虑 A(n)=nlogbaA(n)=n^{\log_b a}f(n)f(n) 的大小

  • f(n)<A(n)f(n)<A(n)O(A(n))O(A(n))
  • f(n)=A(n)logknf(n)=A(n)\log^k nO(A(n)logk+1n)O(A(n)\log^{k+1}n)
  • f(n)>A(n),  c<1,af(n/b)<cf(n)f(n)>A(n),\exist\;c<1, af(n/b)<cf(n)O(f(n))O(f(n))
阅读更多

「USACO 2013」Photo

给定长为 n2×105n\le 2\times 10^5 的序列,你需要将其中 kk 个节点染色,满足 m105m\le 10^5 组条件:[li,ri][l_i, r_i] 中有且仅有一个节点被染色。

最大化 kk

题面数据

阅读更多

「Codeforces 24D」Broken Robot

因为不能向上走,所以可以一行一行考虑

fi,jf_{i,j} 表示从 (i,j)(i,j) 走到最后一行的期望步数,fn,j=0f_{n,j}=0

fi,1=(fi,1+fi,2+fi+1,1)/3+1fi,j=(fi,j1+fi,j+fi,j+1+fi+1,j)/4+1fi,m=(fi,m+fi,m1+fi+1,m)/3+1 \begin{aligned} f_{i, 1}&=(f_{i,1}+f_{i,2}+f_{i+1,1})/3+1\\ f_{i,j}&=(f_{i,j-1}+f_{i,j}+f_{i,j+1}+f_{i+1,j})/4+1\\ f_{i, m}&=(f_{i,m}+f_{i,m-1}+f_{i+1,m})/3+1\\ \end{aligned}

矩阵大概是这样的,需要优化求解

[2/31/3000001/43/41/4000001/43/41/4000001/43/41/4000001/43/41/4000001/43/41/4000001/32/3][fi+1,1/3+1fi+1,2/4+1fi+1,3/4+1fi+1,4/4+1fi+1,5/4+1fi+1,6/4+1fi+1,7/3+1] \begin{bmatrix} 2/3 & -1/3 & 0 & 0 & 0 & 0 & 0\\ -1/4 & 3/4 & -1/4 &0& 0 & 0 & 0\\ 0 & -1/4 & 3/4 & -1/4 & 0 & 0 & 0\\ 0&0 & -1/4 & 3/4 & -1/4 & 0 & 0 \\ 0&0&0&-1/4&3/4&-1/4&0\\ 0&0&0&0&-1/4&3/4&-1/4\\ 0&0&0&0&0&-1/3&2/3\\ \end{bmatrix} \begin{bmatrix} f_{i+1,1}/3+1\\ f_{i+1,2}/4+1\\ f_{i+1,3}/4+1\\ f_{i+1,4}/4+1\\ f_{i+1,5}/4+1\\ f_{i+1,6}/4+1\\ f_{i+1,7}/3+1 \end{bmatrix}
阅读更多

「NOI 2010」炮兵阵地

「Link」

首先观察炮的攻击范围,左右上下完全对称

也就是说,A 打不到 B 和 B 打不到 A 是等价的,于是就考虑左边和上面

一行一行地考虑,正在考虑第 ii

一行内部炮冲突的问题是容易解决的

阅读更多

「洛谷 P2575」高手过招

一行棋盘,若干个棋子,初始状态给出,每次可将棋子移到右侧第一个空格(棋子与空格不一定相邻 如:1101->1011/0111),不能移者输。

阅读更多