Codeforces 707D Persistent Bookcase
链接
题意
给出\(n \times m (1 \leq n, m \leq 10^3)\)矩阵,初始全为0。有\(q (1 \leq q \leq 10^5)\)个操作,可以将一个点置0,将一个点置1,将一行的数字翻转,或回到之前某次操作的状态。对于每次操作输出矩阵中1的个数。
思路
对操作建树,然后在树上dfs求解。
代码
1 |
|
给出\(n \times m (1 \leq n, m \leq 10^3)\)矩阵,初始全为0。有\(q (1 \leq q \leq 10^5)\)个操作,可以将一个点置0,将一个点置1,将一行的数字翻转,或回到之前某次操作的状态。对于每次操作输出矩阵中1的个数。
对操作建树,然后在树上dfs求解。
1 | #include <cstdio> |
给出\(n(1 \leq n \leq 10^9)\),输出与\(n\)能够组成直角三角形的两条边的长度,无解输出-1。
1 | #include <cstdio> |
给出三角形三个顶点坐标,求三角形外接圆半径。
套用外心模版。
1 | #include <cstdio> |
给出三角形的三条高的长度,求三角形的面积。
设三角形的三边为\(a\)、\(b\)、\(c\),对应的高分别为\(h_a\)、\(h_b\)、\(h_c\),三角形的面积为\(s\)。
显然
\[a = \frac{2s}{h_a}, \space b = \frac{2s}{h_b}, \space c = \frac{2s}{h_c}\]
又因为
\[s = \sqrt{p \left( p - a \right) \left( p - b \right) \left( p - c \right)}\] \[p = \frac{1}{2} \left(a + b + c\right) = s\left(\frac{1}{h_a} + \frac{1}{h_b} + \frac{1}{h_c} \right)\]
化简得
\[s = \frac{1}{\sqrt{\left( \frac{1}{h_a} + \frac{1}{h_b} + \frac{1}{h_c} \right) \left( -\frac{1}{h_a} + \frac{1}{h_b} + \frac{1}{h_c} \right) \left( \frac{1}{h_a} - \frac{1}{h_b} + \frac{1}{h_c} \right) \left( \frac{1}{h_a} + \frac{1}{h_b} - \frac{1}{h_c} \right)}}\]
1 | #include <cstdio> |
给出三个点, 问这三个点最少是正几边形的顶点。
之前组队赛做过,三个点在正多边形的外接圆,三个点的两两关于圆心的夹角是正多边形相邻两点圆心角的倍数,枚举正多边形的边数依次检验即可。
1 | #include <cstdio> |
给出三条边作为三角形的中线,求三角形的面积,不合法输出“-1.000”。
三角形的中线可以组成三角形,其面积是原三角形面积的\(\frac{3}{4}\)。
1 | #include <cstdio> |
给出三角形的三个顶点坐标,求三个Malfatti Circle的半径。
参考维基百科中对Malfatti Circle的介绍,其半径公式为:
\[r_1 = \frac{r}{2 \left(s - a\right)} \left( s + d - r - e - f \right)\]
式中\(s\)为三角形的周长,\(d\)、\(e\)、\(f\)分别为\(A\)、\(B\)、\(C\)三个顶点到三角形内心的距离。其余两个Malfatti Circle的半径计算与之同理。
1 | #include <cstdio> |
如图,给出\(P\)、\(Q\)、\(R\)三个点的坐标和\(m1:m2\)、\(m3:m4\)、\(m5:m6\)的值。求\(A\)、\(B\)、\(C\)的坐标。
由梅涅劳斯定理可得:
\[\frac{AR}{RP} \cdot \frac{PQ}{QB} \cdot \frac{BD}{DC} = 1\]
即:
\[\frac{AR}{RP} \cdot \frac{PQ}{QB} = \frac{m_5}{m_6}\]
设
\[k_1 = \frac{m_5}{m_6}, \space k_2 = \frac{m_1}{m_2}, \space k_3 = \frac{m_3}{m_4}\]
化简得:
\[\frac{AR}{RP} = k_1 \left( \frac{BP}{PQ} + 1 \right)\]
同理可得,
\[\frac{BP}{PQ} = k_2 \left( \frac{CQ}{QR} + 1 \right), \space \frac{CQ}{QR} = k_3 \left( \frac{AR}{RP} + 1 \right)\]
解得:
\[\frac{AR}{RP} = \frac{k_1k_2k_3 + k_1k_2 + k_1}{1 - k_1k_2k_3}\]
\[\frac{BP}{PQ} = \frac{k_1k_2k_3 + k_2k_3 + k_2}{1 - k_1k_2k_3}\]
\[\frac{CQ}{QR} = \frac{k_1k_2k_3 + k_3k_1 + k_3}{1 - k_1k_2k_3}\]
然后利用向量乘法很容易解决了。
1 | #include <cstdio> |
两个梯子放置在交叉靠在墙上,长度分别为\(x\)和\(y\),交点离地面的高度为\(c\),求两个墙间的距离。
根据相似关系列方程,二分答案。
1 | #include <cstdio> |
给出一个三角形和它的三个旁切圆,求指定部分的面积。具体见原题。
利用旁切圆半径公式即可。
1 | #include <cstdio> |