
【类型】做题记录
文章平均质量分 76
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【UOJ528】【美团杯2020】分形之美
题目链接点击打开链接题目解法观察分形结构,我们可以得到如下性质:(1)(1)(1) 、分形结构具有轴对称性,且 Ai,j=Aj,iA_{i,j}=A_{j,i}Ai,j=Aj,i(2)(2)(2) 、对于每一个 3×33\times 33×3 的单元,中间的元素为 111 ,其四周的元素为 000 ,角落上的元素均相同(3)(3)(3) 、任何情况下不存在相邻的 x ,每一个大小超过 111 的 o 连通块均与一个一级的 o 直接相邻考虑计算 solve(N,xl,xr,yl,yr)sol原创 2020-05-19 14:19:47 · 508 阅读 · 0 评论 -
【UOJ530】【美团杯2020】汉明距离
题目链接点击打开链接题目解法在解决本题之前,首先考虑如下问题:在数轴原点处,一个人开始随机游走,每一时刻,他将以 12\frac{1}{2}21 的概率向正方向走一步,以相同的概率向负方向走一步。求出 NNN 时刻后他所在坐标平方的期望。考虑用动态规划解决该问题,记 dpi,jdp_{i,j}dpi,j 表示从 iii 号点出发, jjj 时刻后角色所在坐标平方的期望。则有:dpi,j={i2j=0dpi+1,j−1+dpi−1,j−12j≥1dp_{i,j}=\left\{\begin{原创 2020-05-19 13:23:24 · 658 阅读 · 0 评论 -
【UOJ532】【美团杯2020】热身题
题目链接点击打开链接题目解法从长到短搜索题目给出的上升序列。每填入一个数字,便检查是否有能够确定的位置,并在产生矛盾时进行剪枝。时间复杂度 O(1)O(1)O(1) 。#include<bits/stdc++.h>using namespace std;const int N = 15;typedef long long ll;template <typename T> void chkmax(T &x, T y) {x = max(x, y); }te原创 2020-05-18 13:09:27 · 412 阅读 · 0 评论 -
【UOJ531】【美团杯2020】最长公共子序列
题目链接点击打开链接题目解法询问长度为 222 的序列 {x,y} (x≠y)\{x,y\}\;(x\ne y){x,y}(x=y) 可以查询 xxx 是否在答案中排在 yyy 的前面。由此,用 std :: stable_sort 或是归并排序对 111 到 NNN 进行排序即可。时间复杂度 O(NLogN)O(NLogN)O(NLogN) 。#include "lcs.h"#include <bits/stdc++.h>using namespace std;cons原创 2020-05-18 13:08:24 · 472 阅读 · 0 评论 -
【UOJ529】【美团杯2020】114514
题目链接点击打开链接题目解法可以发现,在给定的序列 114514114514114514 中,每个 444 之前均有一个 111 。因此,从后向前,将每个 444 与前方最近的一个尚未匹配的 111 匹配,不会导致原本有解的数据无解。进行匹配后,每一个 1−41-41−4 结构的左右端点是分别具有单调性的。那么,剩余的问题就是将给定序列拆分为形如 123212321232 的序列。从左到右进行简单贪心即可,对于一个 222 ,我们会优先将其与 111 匹配。单组数据时间复杂度 O(∣S∣)O原创 2020-05-18 13:07:54 · 649 阅读 · 0 评论 -
【UOJ525】【美团杯2020】平行四边形
题目链接点击打开链接题目解法考虑不存在平行四边形的判断条件,则应当为:对于任意 (i≠j)(i\ne j)(i=j) , Pi−PjP_i-P_jPi−Pj 得到的向量两两不同。注意到题目保证了 N+1N+1N+1 是质数,不妨猜想构造方式与原根 ggg 有关。考虑如下构造:Pi=(i,gi%N)P_i=(i,g^i\% N)Pi=(i,gi%N)则Pi−Pj=(i−j,gj(gi−j−1)%N)P_i-P_j=(i-j,g^j(g^{i-j}-1)\% N)Pi−Pj=(i原创 2020-05-18 13:07:18 · 316 阅读 · 0 评论 -
【UOJ524】【美团杯2020】程序解密
题目链接点击打开链接题目解法利用编辑器的替换功能不难得到大致的程序。对于剩余不能确定的部分,枚举所有可能的情况,根据样例判断是否正确即可。值得关注的突破口有:右大括号、回车、Tab,以及出现了一部分的保留字。#include<bits/stdc++.h>const int MAXN = 1e3 + 5;using namespace std;int weight[] = {293309062, 96701749, 694916487, 371591203, 450903345,原创 2020-05-18 13:06:46 · 491 阅读 · 0 评论 -
【UOJ523】【美团杯2020】半前缀计数
题目链接点击打开链接题目解法对于一个所求集合内的子串 TTT ,定义其关键出现位置 (i,j,k)(i,j,k)(i,j,k) ,满足 Lcp(S,T)=iLcp(S,T)=iLcp(S,T)=i 。那么,可以枚举前缀 iii ,统计后缀 i+1i+1i+1 中,不以 Si+1S_{i+1}Si+1 开头的本质不同的子串个数,求和得到答案。因此,我们需要实现一个数据结构,支持向其开头加入一个字符,并询问不以某一特定字符开头的,本质不同的子串个数。用后缀自动机简单实现即可。时间复杂度 O(∣S∣)原创 2020-05-18 13:06:13 · 467 阅读 · 0 评论 -
【UOJ522】【美团杯2020】版本答案
题目链接点击打开链接题目解法关于鲭鱼圣者的之间的战斗,有如下观察:(1)(1)(1) 、在任意时刻,双方阵营中没有圣盾的鲭鱼圣者数量不超过 111(2)(2)(2) 、进攻方的鲭鱼圣者 xxx 进攻后,其余鲭鱼圣者均会重新获得圣盾(3)(3)(3) 、防守方在被进攻前,或是所有鲭鱼圣者均有圣盾,或是刚刚行动的鲭鱼圣者没有圣盾因此,我们可以使用四元组 (x,y,s,t)(x,y,s,t)(x,y,s,t) 来描述一个状态,表示:(1)(1)(1) 、当前进攻方剩余鲭鱼圣者的数量为 xxx ,防原创 2020-05-18 13:05:43 · 690 阅读 · 0 评论 -
【UOJ519】【美团杯2020】查查查乐乐
题目链接点击打开链接题目解法考虑判断某序列是否可以选出子序列 S=xxxllS=xxxllS=xxxll 。则应当从左到右考虑序列个每个元素 xxx ,并维护匹配指针 pospospos ,若 x=Sposx=S_{pos}x=Spos ,则令 pos=pos+1pos=pos+1pos=pos+1 ,判断最后 pospospos 是否为 666 即可。因此,不难发现,对于一个序列,只需要保存 pospospos 作为状态就可以了。由此设计动态规划解决问题即可。时间复杂度 O(T×N)O(T\原创 2020-05-18 13:05:03 · 364 阅读 · 0 评论 -
【CodeForces】Codeforces Round 621
比赛链接点击打开链接官方题解点击打开链接Problem A. Cow and Haybales按照题意模拟即可。单组数据时间复杂度 O(N+D)O(N+D)O(N+D) 。#include<bits/stdc++.h>using namespace std;const int MAXN = 105;typedef long long ll;template <...原创 2020-02-18 17:23:36 · 735 阅读 · 1 评论 -
【CodeForces】Codeforces Round 614
比赛链接点击打开链接官方题解点击打开链接Problem A. NEKO’s Maze Game注意到保证了 (1,1)(1,1)(1,1) 和 (2,n)(2,n)(2,n) 始终不会出现障碍,能够从 (1,1)(1,1)(1,1) 到达 (2,n)(2,n)(2,n) 当且仅当没有出现路径被隔断的情况。那么,维护隔断路径的点对的数量 AnsAnsAns ,每次修改后 O(1)O(1...原创 2020-01-20 15:28:50 · 613 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 13
Codeforces 679E Bear and Bad Powers of 42不难发现数列中的元素不可能达到很大,我们只需要考虑 424242 的前若干个幂。考虑没有赋值操作的做法,则可用线段树维护区间中最接近 424242 的下一个幂的数与这个幂的差值,在区间加时,只需要在线段树上 DFS 找到差值变负的位置更新其与 424242 下一个幂的差值即可。由于一个数导致进行 DFS 的次数...原创 2020-01-18 20:42:45 · 937 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 12
Codeforces 634F Orchestra若枚举矩形的上下边界,则问题显然可以 O(n)O(n)O(n) 解决。那么,考虑枚举矩形的上边界,再从上到下枚举矩形的下边界,则我们需要一边插入点,一边动态维护上面问题的答案。若直接实现,需要使用平衡树。事实上,我们可以从下到上枚举矩形的下边界,则只需要链表就可以维护了。时间复杂度 O(r2+rnk)O(r^2+rnk)O(r2+rnk) ...原创 2020-01-18 20:41:49 · 529 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 11
Codeforces 590E Birthday首先,可以用 AC 自动机计算出字符串的包含关系。注意到包含关系构成了一个偏序集,剩余的问题本质上是要求出最长反链。由 Dilworth 定理,可以得到,最长反链的大小在数值上等于最小链划分的大小。这里,最小链划分指的是将偏序集划分为尽可能少的元素两两可比的子集,这样的子集称为链。传递闭包后,最小链划分可以转化为 DAG 上的最小路径覆盖问...原创 2020-01-18 20:39:24 · 665 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 041
比赛链接点击打开链接官方题解点击打开链接Problem A. Table Tennis Training若 A,BA,BA,B 奇偶性相同,则答案为 B−A2\frac{B-A}{2}2B−A 。否则,答案为 Min{A+B−1,2N−A−B+1}2\frac{Min\{A+B-1,2N-A-B+1\}}{2}2Min{A+B−1,2N−A−B+1} 。时间复杂度 O(1)O(1...原创 2019-12-30 13:50:44 · 847 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 10
Codeforces 576D Flights for Regular Customers考虑由一个时刻 iii 可达的点集 SiS_iSi 计算时刻 i+1i+1i+1 可达的点集 Si+1S_{i+1}Si+1 ,这可以由每个时刻可用的边集计算,其本质是一次矩阵乘法。因此,使用快速幂和 bitset 优化之,可以得到一个时间复杂度 O(MLogV×N3w)O(MLogV\times \...原创 2019-12-26 09:32:11 · 808 阅读 · 2 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 9
Codeforces 566C Logistical Questions考虑如下做法:选择一条边 (x,y)(x,y)(x,y) ,计算 costx,costycost_x,cost_ycostx,costy ,若 costxcost_xcostx 较小,则只考虑将中心设置在 xxx 所在的子树,否则,只考虑将中心设置在 yyy 所在的子树。考虑其正确性,首先,移除必须在节点处设置中心的...原创 2019-12-26 09:28:49 · 955 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 8
Codeforces 528C Data Center Drama考虑存在解的必要条件,显然,各个点的度数应为偶数,且 MMM 也应为偶数。任意一张满足以上条件的图都存在一条长度为偶数的欧拉回路,取路上奇数位的边为正向,偶数位的边为反向即可构造一组解法。因此,任意用最少的步数将图改造为满足以上条件的图即可。时间复杂度 O(N+M)O(N+M)O(N+M) 。#include<bit...原创 2019-12-26 09:27:16 · 557 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 7
Codeforces 504E Misha and LCP on Tree在树上进行字符串哈希即可。本题的第 11 个测试点卡了利用自然溢出的字符串哈希。时间复杂度 O(NLogN+MLogN)O(NLogN+MLogN)O(NLogN+MLogN) 。#include<bits/stdc++.h>using namespace std;const int MAXN = 3...原创 2019-12-26 09:26:05 · 514 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 6
Atcoder Regular Contest 97Problem F. Monochrome Cat若原树中存在一个黑色的叶子,那么我们可以将其删去而不影响答案。重复这个过程,我们会得到一棵仅包含白色叶子的树,显然,这棵树中所有的节点都会被访问至少一次。対该树进行树形 DP ,记:$ dp_{i,0} $ 表示从 $ i $ 号点的父亲出发,完成对 $ i $ 子树的访问后回到 $ i...原创 2019-12-26 09:25:22 · 411 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 5
Atcoder Regular Contest 89Problem F. ColoringBalls首先考虑如何判断一个给定的序列是否能够得到。显然,连续的相同颜色可以被替换为一个,并且,每一段不包含 W 的区间都可以分开考虑。可以发现,分开的区间分为如下几种:(1)(1)(1) 、RRR ,需要操作序列:rrr(2)(2)(2) 、B,RB,BRB,RB,BRB,RB,BR ,需要操...原创 2019-12-26 09:24:40 · 562 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 4
Atcoder Grand Contest 35Problem C. Skolem XOR TreeNNN 为 222 的次幂时无解,因为不可能有路径在那一位上异或和为 111 ,以下算法对于剩余情况均给出了一组构造。对于一个异或和为 000 的点集,我们可以将其仿照样例的解排成一排,即可满足这些点的限制。注意到对于 444 的倍数 NNN ,有 N⊕(N+1)⊕(N+2)⊕(N+3)=0...原创 2019-12-26 09:23:52 · 466 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 3
Atcoder Grand Contest 30Problem C. Coloring Torus考虑 KKK 是 444 的倍数的情况,取偶数 N=K2N=\frac{K}{2}N=2K ,令ai,j=(i+j)%N+1+i%2×Na_{i,j}=(i+j)\%N+1+i\%2\times Nai,j=(i+j)%N+1+i%2×N不难发现这是一组可行解,并且将所有 i+Ni+Ni+...原创 2019-12-26 09:22:11 · 2614 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 2
Atcoder Grand Contest 25Problem D. Choosing Points考虑对于给定点集 SSS 和输入 D1,D2D_1,D_2D1,D2 ,计算一个大小不小于 S4\frac{S}{4}4S 的独立集 work(S,D1,D2)work(S,D_1,D_2)work(S,D1,D2) 。对于 D1,D2D_1,D_2D1,D2 均为奇数的情况,可...原创 2019-12-26 09:19:48 · 831 阅读 · 0 评论 -
【集训队作业】IOI 2020 集训队作业 试题泛做 1
Atcoder Grand Contest 20Problem D. Min Max Repetition不妨设 A≤BA\leq BA≤B ,对于 A>BA>BA>B 的情况,可以将序列倒置,并将所有的 A 和 B 取反,然后当做 A≤BA\leq BA≤B 的情况处理。由题设,我们要求最长的相同字符长度不超过 L=⌈AB+1⌉L=\lceil\frac{A}{B+1}\...原创 2019-12-26 09:18:16 · 1818 阅读 · 0 评论 -
【BZOJ1488】【HNOI2009】图的同构
【题目链接】点击打开链接【思路要点】考虑Burnside引理或Polya定理,求解总共\(N!\)种点置换中边的染色方案等价类的个数总和,再将答案除以N!。考虑一个点集的置换\(P_{i}\),若将一个置换看做一张由\(N\)个点、\(N\)条边的无向图,那么显然,该图由若干个环组成。记其中每一个环长为\(A_{i}\),\(A\)可以看做一个\(N\)原创 2018-01-11 19:56:47 · 742 阅读 · 0 评论 -
【BZOJ1478】Sgu282 Isomorphism
【题目链接】点击打开链接【思路要点】考虑Burnside引理或Polya定理,求解总共\(N!\)种点置换中边的染色方案等价类的个数总和,再将答案除以N!。考虑一个点集的置换\(P_{i}\),若将一个置换看做一张由\(N\)个点、\(N\)条边的无向图,那么显然,该图由若干个环组成。记其中每一个环长为\(A_{i}\),\(A\)可以看做一个\(N原创 2018-01-11 20:14:38 · 473 阅读 · 1 评论 -
【UOJ179】线性规划
【题目链接】点击打开链接【思路要点】单纯形法模板题,数据很强,错误的实现很可能无法通过Extra Test。【代码】#includeusing namespace std;const int MAXN = 55;const long double eps = 1e-8;const long double I原创 2018-01-12 08:58:37 · 784 阅读 · 0 评论 -
【BZOJ1000】A+B Problem
【题目链接】点击打开链接【思路要点】仔细读题,注意空间限制。【代码】#includeusing namespace std;#define MAXN 5000int main() { int a, b; scanf("%d%d", &a, &b); printf("%d\n", a + b); return 0;原创 2018-01-12 09:02:17 · 470 阅读 · 1 评论 -
【BZOJ1189】【HNOI2007】紧急疏散evacuate
【题目链接】点击打开链接【思路要点】问题中存在一种类似于流量限制的人流限制,考虑用网络流解决本题。枚举答案,对于每个时刻的每个位置分别建立一个点,简单建图后运行最大流,观察是否满流即可。常见的网络流\(Dinic\)算法中建立了反向边,因此可以在\(Ans=x\)的残量网络上加点后直接继续运行\(Ans=x+1\)的结果。最终图中的点数与边数均为\(原创 2018-01-12 09:54:57 · 469 阅读 · 0 评论 -
【BZOJ1001】【BeiJing2006】狼抓兔子
【题目链接】点击打开链接【思路要点】直接运行\(Dinic\)算法即可,注意内存限制。本题使用\(std::vector\)离奇\(Runtime Error\),令笔者不解。本题也可以将最大流问题对偶为最小割,使用最短路算法求解,复杂度为\(O(N*MLogN*M)\)。【代码】#includeusing namesp原创 2018-01-12 10:10:18 · 373 阅读 · 0 评论 -
【BZOJ3144】【HNOI2013】切糕
【题目链接】点击打开链接【思路要点】若距离限制\(D≥N\),显然我们可以通过取每一条纵轴上的最小值求解,但我们也可以将每一条纵轴上的的权值首尾相连,形成一条有向链,将链首与链尾分别于源点和汇点用容量无穷的边相连,用最小割求解。现在考虑距离限制\(D\),若将相邻纵轴上距离恰好为\(D\)的点从较后者向较前者连一条容量无穷的边,在最小割问题中就表示不原创 2018-01-12 10:55:44 · 396 阅读 · 0 评论 -
【BZOJ1002】【FJOI2007】轮状病毒
【题目链接】点击打开链接【思路要点】输入与输出仅包含一个数,考虑找规律。使用欧几里得算法配合\(Matrix-Tree\)定理求解取模一个大质数下问题的答案,并打表。结果如下\(F(1)=1,F(2)=8,F(3)=16,F(4)=45,F(5)=121,F(6)=320,F(7)=841,F(8)=2205\)。发现规律,\(F(i)=3*F(i-原创 2018-01-12 11:10:27 · 349 阅读 · 0 评论 -
【BZOJ1003】【ZJOI2006】物流运输
【题目链接】点击打开链接【思路要点】显然,两次变换线路之间所走的路一定是所能走的最短路。记\(Cost_{i,j}\)表示第\(i\)天至第\(j\)天均能走的路中最短路的长度。那么可以设计简单DP,用\(F_{i}\)表示第一天到底\(i\)天的最小花费,那么显然有转移方程:$$F_{i}=min_{j=0}^{i-1}\{Cost_{j-1,i}原创 2018-01-12 11:32:29 · 450 阅读 · 0 评论 -
【BZOJ3064】【TYVJ1518】CPU监控
【题目链接】点击打开链接【思路要点】题目中提到的操作均为区间操作,考虑使用线段树。若不存在A询问,剩余部分属于线段树的基本操作。考虑将题目先简化一下:若不存在C操作,如何用线段树解决本题?首先,对于区间最大值询问,我们维护区间最大值\(Max\)和区间加标记\(tagadd\),分别表示对应区间的最大值和未下传的区间加标记值,其下传方式显然。其次,对于区原创 2018-01-22 11:35:06 · 766 阅读 · 0 评论 -
【BZOJ1004】【HNOI2008】Cards
【题目链接】点击打开链接【思路要点】题意表明,给定的洗牌方式在加上单位置换后(原本存在就不需要再加了)是一个置换群。考虑Burnside引理或Polya定理。注意到题目有颜色的使用次数的限制,因此不便使用Polya定理,考虑使用Burnside引理,求解每一个置换的本质不同的染色方案数的平均数。显然可以设计动态规划在\(O(N*R*G*B)\)的时空原创 2018-01-22 12:47:46 · 324 阅读 · 0 评论 -
【BZOJ3224】【TYVJ1728】普通平衡树
【题目链接】点击打开链接【思路要点】本题包含了平衡树最基本的操作。是任何学习平衡树都应当先做一遍的题。笔者实现了四种平衡树,Splay、Treap、替罪羊树和非旋转式Treap(以及其可持久化)。【代码】Splay/*Splay Tree Version*/#includeusing namespace std;原创 2018-01-14 19:53:39 · 691 阅读 · 0 评论 -
【BZOJ3223】【TYVJ1729】文艺平衡树
【题目链接】点击打开链接【思路要点】使用可以打标记的Splay来实现区间翻转,时间复杂度\(O(MLogN)\)。代码过于陈旧,风格较丑。【代码】#includeusing namespace std;#define MAXN 100005struct Node { int father, child[2], size,原创 2018-01-14 20:09:05 · 367 阅读 · 0 评论 -
【BZOJ1500】【NOI2005】维修数列
【题目链接】点击打开链接【思路要点】使用Splay维护多个标记进行各种区间操作,代码实现较为困难。内存限制64MB,注意内存回收,避免空间超限。【代码】#includeusing namespace std;#define MAXN 500005#define MAXIN 4500005struct Node { i原创 2018-01-15 09:24:18 · 342 阅读 · 0 评论