BUPT 2017 summer training (16) #2B 题意 有一些二维直角坐标系上的整数坐标的点,找出严格包含这些点的只能八个方向走出来步数最少的路径,输出最少步数. 题解 这题要求严格包含的路径.实际上答案就是不严格包含的+4步. 也可以加上每个点上下左右的四个点再跑凸包. 最少步数就是凸包上相邻两点的\(max(\Delta x,\Delta y)\)之和. 其实这题也可以不求凸包,用平行于对角线的四条边非严格包含地去围这些点,若相交的地方不在格点上,我们四边都往外扩展后,也…
BUPT 2017 Summer Training (for 16) #3A 题意 给你三个矩形,需要不重叠不留空地组成一个正方形.不存在输出-1,否则输出边长和这个正方形(A,B,C表示三个不同矩形). 题解 我的做法是直接枚举三个是否旋转90度,然后考虑两种组成,|||和=|,枚举3的排列. 其实可以先计算面积s,如果r=sqrt(s)不是整数则无解.然后找到一个较长边为r的矩阵先输出,再输出剩下两个. 代码 #include <cstdio> #include <algorithm…
BUPT 2017 summer training (for 16) #1I 题意 字符串s(1 ≤ |s| ≤ 10 000),有m(1 ≤ m ≤ 300)次操作,每次给l,r,k,代表将r位置插入l位置前,执行k(1 ≤ k ≤ 1 000 000)次.输出最后的s. 题解 等价与将字符串的[l...r-k]和[r-k+1...r]两部分调换一下. k对r-l取模一下.然后模拟. 还有种方法是将两部分分别翻转,再整个字符串翻转一下. 也可以用stl的rotate函数. 代码 #includ…
BUPT 2017 summer training (for 16) #1H 题意 每个节点是黑色or白色,经过一个节点就会改变它的颜色,一开始在1节点.求一条路径使得所有点变成黑色. 题解 dfs时每个节点的孩子处理完,这时候如果颜色是白色,那么再去一下父亲节点再回来,就变成黑色了. 如果是1号点,那就去它的孩子节点,再回来,再去它孩子节点. 代码 #include <cstdio> #define N 200005 struct edge{ int to,next; }e[N<<…
Dreamoon and Stairs 题意翻译 题面 DM小朋友想要上一个有 \(n\) 级台阶的楼梯.他每一步可以上 \(1\) 或 \(2\) 级台阶.假设他走上这个台阶一共用了 \(x\) 步.现在DM想知道 \(x\) 是否可能为 \(m\) 的倍数.如果可能,输出 \(x\) 的最小值.如果不可能,输出 \(-1\) 输入 两个正整数 \(n,m (n \le 10000,m \le 10)\) 输出 按要求输出 \(x\) 或 \(-1\) 题目描述 Dreamoon wants…
CF546B Soldier and Badges 题意翻译 给 n 个数,每次操作可以将一个数 +1,要使这 n 个数都不相同, 求最少要加多少? \(1 \le n \le 3000\) 感谢@凉凉 提供的翻译 题目描述 Colonel has \(n\) badges. He wants to give one badge to every of his \(n\) soldiers. Each badge has a coolness factor, which shows how mu…
Description 有一个 01 序列 \(a_1,a_2,\cdots,a_n\),初始时全为 \(0\). 给定 \(m\) 个长度,分别为 \(l_1\sim l_m\). 每次可以选择一个长度为某个 \(l_i\) 区间,对其进行翻转操作(\(0\to 1,1\to 0\)). 求最少的操作次数,使得最后有且仅有 \(k\) 个位置为 \(1\)(\(k\) 个位置给定),其余为 \(0\). \(1\leq n\leq 10^4,1\leq k\leq 10,1\leq m\leq…
Description 定义 \(f(x)\) 表示 \(x\) 的各个数位之和.现在要求 \(\sum_{i=l}^rf(i)\bmod a\). 显然 ans=solve(l,r)%a; if(ans<=0) ans+=a; 会在 \(\sum_{i=l}^rf(i)\equiv 0\pmod a\) 时输出错误.给定 \(a\),请你构造一个 Hack 数据. \(1\leq a\leq 10^{18}\),构造出的 \(l,r\) 需满足 \(1\leq l\leq r\leq 10^{…
题目大意 如果两棵树可以通过重标号后变为完全相同,那么它们就是同构的. 将中间节点定义为度数大于 \(1\) 的节点.计算由 \(n\) 个节点,其中所有的中间节点度数都为 \(d\) 的互不同构的树的数量. 答案对大质数取模.\(1\leq n\leq 1000,2\leq d \leq 10,10^{8}\leq \text{mod} \leq 10^9\). Solution Part 1 先来思考一个组合问题:在 \(x\) 个方案中不分顺序地选 \(t\) 种,可重复.求方案数. 这里…
给定 \(n\times m\) 的网格图,有些格子有障碍,无障碍且相邻的格子之间连边形成图.保证 \((1, 1)\) 无障碍,保证无障碍格子连通. 将网格图黑白染色,相邻格子颜色不同,\((1, 1)\) 为黑色. 构造一棵生成树,使得以 \((1, 1)\) 为根时,所有叶子都为白色.注意:即使 \((1, 1)\) 度数为 \(1\),也不能视为叶子. link. 拟阵交. 黑白染色后每条边最多连一个黑点.考虑构造拟阵 \(M_1 = (E, \mathcal I_1)\) 表示删除独立…