UR系列
文章平均质量分 89
.
Hypoc_
这个作者很懒,什么都没留下…
展开
-
UOJ Easy Round #5 题解
A 题目给的限制相当于要使最后所有没被弄坏的格子形成一棵树。 主要到,树需要满足:点数 −-− 边数 =1=1=1。不难猜到当 kkk 很大的时候肯定不能形成树,因为坏掉的格子只能堵住旁边的四条边,而总边数为 2×n×m+n+m2\times n\times m+n+m2×n×m+n+m,所以点数的最大值为: 2×n×m+n+m−k+1 2\times n\times m+n+m-k+1 2×n×m+n+m−k+1 当点数大于这个时,直接输出No,否则直接并查集判是否为树即可。 然而这个上界只是我口胡的,所原创 2020-11-26 17:01:15 · 182 阅读 · 0 评论 -
UOJ Easy Round #4 题解
A 不难发现一些性质: 在最优解中,每个叶子到根的路径上的黑点数,等于最浅的叶子结点的深度。 对于任意一个点,都满足:它到子树内任意一个叶子结点的路径上黑点数量都相同。不妨记 f(i)f(i)f(i) 表示 iii 到子树内的叶子节点所经过的黑点数量。 考虑一个树的链剖分,每个点将子树内包含最浅的叶子节点的儿子作为浅儿子。 于是就有一个贪心:先根据性质 111,可以先将根节点往下的浅链上所有点染黑。然后考虑浅链上一个点 xxx 的一个深儿子 yyy,根据性质 222,我们就可以确定它的 f(y)f(y)原创 2020-11-25 18:40:41 · 285 阅读 · 0 评论 -
UOJ Easy Round #3 题解
A 相信大家都会,简单讨论一下就好了。 设起点在 (0,0)(0,0)(0,0),然后让 n,mn,mn,m 减一,这样方便些。 不妨设 n≤mn\leq mn≤m,那有两种情况: n≤1n\leq 1n≤1,则向下走一步后,向右走两步然后不断fn即可,注意判 mmm 的奇偶性。 否则先向下走一步,再向右走一步,接着不断fn走到第 nnn 行,然后向右走一步,再不断fn即可。 需要注意的是,第二种情况后面是向右走一步而不是走两步,因为之前已经向右走过一步了,这大概是个小坑点。 代码如下: #includ原创 2020-11-17 15:30:20 · 130 阅读 · 0 评论 -
UOJ Round #9 部分题解
A 做完之后翻了翻题解,发现正解是二分? 不过都能AC,时间都是 0ms0ms0ms,差不多了…… 显然,要找的点肯定要尽可能排列成正方形,这样可以使得他们之间存在的电线数尽可能多。 然后可以发现,当点数多起来时,比如说取了一个边长为 10410^4104 的正方形,那么他们之间需要 108(108−1)2\frac {10^8(10^8-1)} 22108(108−1) 条电线,然而他们之间一开始存在的电线只有 2×104×(104−1)2\times10^4\times(10^4-1)2×104×(1原创 2020-11-13 22:33:37 · 158 阅读 · 0 评论 -
UOJ Round #8 题解
A 显然走路策略不是一直向左就是一直向右,不是一直向下就是一直向上。 假如 a[i]!=a[i+1]a[i]!=a[i+1]a[i]!=a[i+1],那么此时不管 b[j]b[j]b[j] 是什么,从 (i,j)(i,j)(i,j) 走到 (i+1,j)(i+1,j)(i+1,j) 时间必然都 +1+1+1,所以可以发现,横向移动与竖向移动之间互不影响,所以我们求一个前缀和与后缀和,每次看看向左还是向右,向上还是向下就好了。 代码如下: #include <cstdio> #include &l原创 2020-11-13 21:56:49 · 244 阅读 · 0 评论 -
UOJ Easy Round #2 题解
A 这是手玩样例 222 的图: 不难发现,|| 可以看做一个分界点,需要考虑每一段连续 && 的贡献。 一段长度为 kkk 的 && 会产生 111 个返回值为 111 的手机,这个手机会直接不执行后面的所有操作。然后还会产生 kkk 个返回值为 000 的手机,这些手机会直接开始进行下一个 || 后面的操作。 于是可以记录一个 prodprodprod,表示前面所有 && 段产生的返回值为 000 的手机的乘积,每次遇到一个新段时,令 ansansans原创 2020-11-12 15:50:06 · 240 阅读 · 0 评论 -
UOJ Round #7 部分题解
A 可以想到用阶乘进位制来将 mmm 拆分掉,但是很可能导致某一位的系数乘权值不是 n!n!n! 的系数,题解采用的方法是用反过来的阶乘进位制,即第 iii 位的权值是 n×(n−1)×...×(i+1)n\times (n-1)\times ... \times (i+1)n×(n−1)×...×(i+1),并且这一位满 iii 进 111,这样可以保证第 iii 位的系数小于 iii,那么系数乘权值就一定是 n!n!n! 的约数了。 代码如下: #include <cstdio> #defi原创 2020-11-11 15:46:59 · 194 阅读 · 0 评论 -
UOJ Round #6 题解
A 显然可以找到这样一条关系: hi+1≡(hi−ti×26n−1)×26+ti(modp) h_{i+1} \equiv (h_i-t_i\times 26^{n-1})\times 26+t_i \pmod p hi+1≡(hi−ti×26n−1)×26+ti(modp) 移项得到: ti≡hi+1−26hi1−26n(modp) t_i \equiv \frac {h_{i+1}-26h_i} {1-26^{n}} \pmod p ti≡1−26nhi+1−26hi(modp) 于是我原创 2020-11-11 12:12:01 · 207 阅读 · 0 评论 -
UOJ Round #5 题解
C 膜一膜神仙就会了。 如果你对下面的莫反有什么疑问的话,可以看看这个。 首先大力推推柿子,显然有:lcm(i,j)=ijgcd(i,j)lcm(i,j)=\frac {ij} {\gcd(i,j)}lcm(i,j)=gcd(i,j)ij,代入得: ∑j=1nid×jd×gcd(i,j)c−d×xj≡bi \sum_{j=1}^n i^d \times j^d \times \gcd(i,j)^{c-d} \times x_j \equiv b_i j=1∑nid×jd×gcd(i,j)c−d×xj原创 2020-11-11 08:11:31 · 207 阅读 · 1 评论 -
UOJ Round #4 题解
A 设 f[i][j]f[i][j]f[i][j] 表示 a=i,b=ja=i,b=ja=i,b=j 时必胜还是必败,然后做个 dpdpdp 即可。 由于只有当 j=1j=1j=1 时,iii 可能很大,但容易发现当 i>ni>\sqrt ni>n 时,两个人都只能操作 aaa,因为一操作 bbb 就超过 nnn 了,所以判断一下 n−an-an−a 的奇偶性即可。 当 j>1j>1j>1 时,iii 的枚举范围很小,直接暴力枚举转移即可。 如果 ij>ni^j&原创 2020-11-10 19:52:46 · 324 阅读 · 0 评论 -
UOJ Round #3 题解
A 不难发现,sgcd(a,b)=gcd(a,b)/mindiv(gcd(a,b))\text{sgcd}(a,b)=\gcd(a,b)/\text{mindiv}(\gcd(a,b))sgcd(a,b)=gcd(a,b)/mindiv(gcd(a,b)),其中 mindiv(x)\text{mindiv}(x)mindiv(x) 表示 xxx 最小的因子。 先将 a1a_1a1 质因数分解,每次就可以 O(a1的质因子个数)O(a_1的质因子个数)O(a1的质因子个数) 找到这个 mindiv\t原创 2020-11-10 10:57:16 · 132 阅读 · 0 评论 -
UOJ Round #2 题解
A 由于并不需要使操作次数尽可能少,所以还是很容易构造的。 直接将每个左括号放到前 nnn 位,然后剩下右括号就在后 nnn 位,这就合法了。 代码如下: #include <cstdio> #include <cstring> int n,now=0; char s[200010]; int main() { scanf("%s",s+1); n=strlen(s+1); printf("%d\n",n/2); for(int i=1;i<=n;i++) if(s原创 2020-11-09 21:55:41 · 206 阅读 · 0 评论 -
UOJ Round #1 部分题解
A 不难发现是要找一个 xxx 使这个东西最小:∑i=1nai mod x+⌊aix⌋\sum_{i=1}^n a_i \bmod x+\lfloor \dfrac {a_i} x \rfloor∑i=1naimodx+⌊xai⌋。 推一推: ∑i=1nai−x×⌊aix⌋+⌊aix⌋=(∑i=1nai)−(x−1)×∑i=1n⌊aix⌋ \begin{aligned} &\sum_{i=1}^n a_i-x\times \lfloor \frac {a_i} x \rfloor+\lflo原创 2020-11-09 17:13:28 · 189 阅读 · 0 评论 -
UOJ Easy Round #1 题解
A 由于 a,ba,ba,b 都是 ggg 的倍数,于是可以写成 a=gx,b=gya=gx,b=gya=gx,b=gy。 推一推: ab=glxyg2=glxy=lg \begin{aligned} ab&=gl\\ xyg^2&=gl\\ xy&=\frac l g \end{aligned} abxyg2xy=gl=gl=gl 当 x=lg,y=lgx=\sqrt{\dfrac l g},y=\sqrt{\dfrac l g}x=gl,y=gl 时,x+yx+yx原创 2020-11-06 09:28:11 · 159 阅读 · 0 评论 -
UOJ【UR #12】实验室外的攻防战 题解
题目传送门 题目大意: 给出一个序列 AAA,问是否能在若干次操作后得到序列 BBB,每次操作选择一个 iii,如果第 iii 比 i+1i+1i+1 位的大那么交换他们的位置。 题解 显然,假如存在两个数 i,ji,ji,j,满足 i<ji<ji<j,并且在 AAA 序列中,iii 在 jjj 前面,而在 BBB 序列中,iii 在 jjj 后面,那么就无解,因为永远无法将 i...原创 2020-04-06 16:45:20 · 192 阅读 · 0 评论 -
UOJ【UR #11】元旦老人与汉诺塔 题解
题目传送门 题目大意: 给出汉诺塔的起始状态和最终状态,问有多少种走法在 mmm 步以内从起始状态到达最终状态。 题解 跑一发暴力可以发现,要将一根柱子上的 777 个圆盘全部移到另一个柱子上,需要 127127127 步,也就是说,100100100 步以内最多移一个柱子的 777 个圆盘,三根柱子就是 212121 个,而仔细想想发现,每次只能移动最上面的圆盘,也就是说,一个状态只有三个后续状...原创 2020-04-01 16:29:52 · 235 阅读 · 0 评论 -
UOJ 【UR #4】追击圣诞老人 题解
题目传送门 题目大意: 生蛋老人要找前 kkk 条最短路,生蛋老人可以在节点之间飞跃但是有某些限制,到达一个节点 xxx 就要停 w[x]w[x]w[x] 秒,节点可以重复经过。 题解 提前说一句,窝很菜,莫有AC,卡到 979797 分尽力了……(可恶的extra test) 要找前 kkk 小,用堆肯定没的说,考虑简单的暴力:先将所有点加入到堆里,每次取出最小值,然后将这个点走一步之后能到达的...原创 2020-03-13 19:49:11 · 396 阅读 · 0 评论 -
UOJ #11.【UTR #1】ydc的大树 题解
题目传送门 题目大意: 给一棵由黑白点组成的树,如果一个黑点无法到达所有离他最远的点,他就会不开心,问有多少种方式使得删掉一个白点后不开心的黑点数最大。 题解 首先这题用到一个结论:树上任意一点到离他最远的点的路径一定经过树的中心(不是重心),那么对于这题,我们就可以先找到树的中心,将它定为树根,这样可以保证每条到最远点的路径都经过根。 我们都知道,找树的中心要先找树的直径,因为这题只有黑点要找最...原创 2020-03-06 08:54:31 · 510 阅读 · 1 评论