这名用户暂未设置签名。
追踪最近的用户名外显变动记录。
最近的文章、讨论、云剪贴板与社区记录
# 置换 - 一个集合 $X$ 到自身的双射(即一一对应)$\sigma$ 称为 $X$ 的一个置换。如果集合 $X$ 上还有 **全序** 关系,则它的一个置换也常被称作一个 **全排列** 。 ## 表示方法 1. 双行表示法 集合 $X=\{x_{1},x_{2},\dots,x_{n}\}$ 上的置换可以表示为…
- 在仅能移动一个怪物的情况下,改变原矩形四条边中的一条,即移走处于“边界”处的怪物显然是最优的。故使用 set 排序,每次删除一个“边界”上的点($x$ 或 $y$ 为最大/最小)后进行计算取最小值。 - 判断能否将原矩形“边界”处的怪物移动到新矩形的内部,即新矩形内部是否有空间放置一个怪物。考虑特殊分布情况:$(1…
由于 $n\le12$,很自然的想到状压 dp,根据题意可知对于被选择的 $n$ 个数字,要求任意两个不能同行、同列、同层,那么根据鸽巢原理,每一层都要有且仅有一个数字被选择,我们可以通过 dfs 每一层保证层数的不同。 但仅仅只是简单暴力 dfs 是肯定会超时的,所以需要记忆化当前层的状态,我们对 $row、col$…
1. 处理出第四个点: 由于题目数据只给出每个城市中的三个随机的机站,需要处理出第 $4$ 个点,考虑当前三个点构成的直角三角形,构成矩形对角线(即直角三角形斜边)的两点为 $(x_1,y_1),\ (x_2,y_2)$,直角顶点为 $(x_3,y_3)$,由对称性可以得到第四个点的坐标为:$x=x_1+x_2-x_3…
用快速幂的方法将每个对应幂压入栈中,符合先入先出的遍历顺序,用栈来辅助递归。 ```cpp while(!num.empty()) { if(num.top() == 1) { cout << 2; num.pop(); if(!num.empty()) cout << '+'; } else if(num.top()…