随笔分类 - 基本算法--------------------------
摘要:【题目】 " 2303. 「NOI2017」蚯蚓排队" 【题意】给定n条长度不超过6的蚯蚓,初始各自在一个队伍。m次操作:1.将i号蚯蚓和j号蚯蚓的队伍合并(保证i为队尾,j为队首)。2.将i号蚯蚓和它后面的蚯蚓分离成两个队。3.询问:给定字符串S和正整数k,求f(每个长度为k的子串)的乘积。其中f
阅读全文
摘要:【题目】 " 2302. 「NOI2017」整数" 【题意】有一个整数x,一开始为0。n次操作,加上a 2^b,或询问2^k位是0或1。$n \leq 10^6,|a| \leq 10^9,0 \leq b,k \leq 30n$。 【算法】压位+线段树 【参考】 "GXZlegend" 先考虑以每
阅读全文
摘要:【题目】 "1510 最小化序列" 【题意】给定长度为n的数组A和数字k,要求重排列数组从而最小化: $$ans=\sum_{i=1}^{n k}|A_i A_{i+k}|$$ 输出最小的ans,$n \leq 3 10^5,k \leq 5000, 10^9 \leq A_i \leq 10^9$
阅读全文
摘要:【题目】 "E. NN country" 【题意】给定n个点的树和m条链,q次询问一条链(a,b)最少被多少条给定的链覆盖。$n,m,q \leq 2 10^5$。 【算法】树上倍增+二维数点(树状数组) 先从半链角度考虑 。将每条给定链和每个询问拆成向上的一段和向下的一段。那么假设询问的半链最低端
阅读全文
摘要:【题目】 "51Nod 1273 旅行计划" 【题意】给定n个点的树和出发点k,要求每次选择一个目的地旅行后返回,使得路径上未访问过的点最多(相同取编号最小),旅行后路径上所有点视为访问过,求旅行方案。$n,k \leq 5 10^4$。 【算法】贪心 首先显然是访问所有叶子节点,先按叶子节点深度从
阅读全文
摘要:【题目】 "贝壳找房户外拓展(中等)" 【题意】给定$n \times m$的棋盘,q次操作:1.在一个列区间设置p和q。2.询问一个行区间,初始x为0,从左到右x=x p+q,求x。3.撤销一次设置操作。保证所有1和3都在2前面。$n,m,q \leq 10^5$。 【算法】扫描线+线段树 【题解
阅读全文
摘要:【题目】 "C.Big Secret" 【题意】给定数组b,求重排列b数组使其前缀异或和数组a单调递增。$n \leq 10^5,1 \leq b_i \leq 2^{60}$。 【算法】异或 为了拆位分析,先考虑一个简单的问题:已知一个合法b数组和一个数字"1",求数字”1“是否能插入? 容易发现
阅读全文
摘要:【题目】F. Substrings in a String 【题意】给定小写字母字符串s,支持两种操作:1.修改某个位置的字符,2.给定字符串y,查询区间[l,r]内出现y多少次。|s|,Σ|y|<=10^5,time=6s。 【算法】Bitset 【题解】假设S的长度为n,那么对每个字符建一个长度
阅读全文
摘要:【题目】D. Huffman Coding on Segment 【题意】给定n个数字,m次询问区间[l,r]的数字的哈夫曼编码总长。1<=n,m,ai<=10^5。 【算法】哈夫曼树+莫队+分块 【哈夫曼树】哈夫曼树又称最优构造树,n个数字的哈夫曼树是含有n个给定权值叶子的点权路径和最小的二叉树。
阅读全文
摘要:【题目】F - Yakiniku Restaurants 【题意】给定n和m,有n个饭店和m张票,给出Ai表示从饭店i到i+1的距离,给出矩阵B(i,j)表示在第i家饭店使用票j的收益,求任选起点和终点的最大(收益-代价)。n<=5000,m<=200。 【算法】单调栈+矩阵差分 【题解】直接枚举区
阅读全文
摘要:【题目】E - Symmetric Grid 【题意】给定n*m的小写字母矩阵,求是否能通过若干行互换和列互换使得矩阵中心对称。n,m<=12。 【算法】模拟 【题解】首先行列操作独立,如果已确定行操作,那么两个在对称位置的列要满足条件必须其中一列反转后和另一列相同,或m为奇数且此列在中间。 已确定
阅读全文
摘要:【题目】F. k-substrings 【题意】给定长度为n的串S,对于S的每个k-子串$s_ks_{k+1}...s_{n-k+1},k\in[1,\left \lceil \frac{n}{2} \right \rceil]$,找到满足[奇数长度][严格子串][同时是前缀和后缀]的最长子串。n<
阅读全文
摘要:【题目】C - Remainder Game 【题意】给定n个数字的序列A,每次可以选择一个数字k并选择一些数字对k取模,花费2^k的代价。要求最终变成序列B,求最小代价或无解。n<=50,0<=ai,bi<=50。 【题解】首先需要一些性质: 1.一个数字取模k后,再取模>=k的数字就没有意义,因
阅读全文
摘要:【题目】AtCoder Regular Contest 092 D - Two Sequences 【题意】给定n个数的数组A和数组B,求所有A[i]+B[j]的异或和(1<=i,j<=n)。n<=200000。 【算法】二分+模拟 【题解】将答案分成(A[i]+B[j]-A[i]^B[j])的异或
阅读全文
摘要:【题目】B. Restoration of string 【题意】当一个字符串在字符串S中的出现次数不小于任意子串的出现次数时,定义这个字符串是高频字符串。给定n个字符串,求构造出最短的字符串S满足着n个字符串都是高频字符串,若不存在输出NO,若存在多个输出字典序最小的一个。n<=10^5,Σ|si
阅读全文
摘要:【题目】D. Picking Strings 【题意】给定只含'A','B','C'的字符串,支持以下变换:1.A - BC 2.B - AC 3.C - AB 4.AAA - empty string(左边变成右边) 给定S串和T串,q次询问,每次给出S串的一个子串x和T串的一个子串y,求x是否能
阅读全文
摘要:【题目】D. Best Edge Weight 【题意】给定n个点m条边的带边权无向连通图,对每条边求最大边权,满足其他边权不变的前提下图的任意最小生成树都经过它。n,m<=2*10^5,1<=wi<=10^9。 【算法】最小生成树+倍增LCA+并查集 【题解】首先求出图的一个最小生成树M,则所有边
阅读全文
摘要:【题意】给定n*m的网格,起点和终点位置,一些格指定下一步的方向,一些格任意。要求为方向任意的格确定方向,使起点可以走到终点。n,m<=50。 【算法】BFS 【题解】这道题最好用BFS,因为DFS容易陷入死路。 BFS过程中访问过的点标记vis,记录前驱后不用再访问,这是由于: 由于路径不可能走环
阅读全文
摘要:【题意】给定n个点的树,m次询问,每次给定ki个特殊点,一个点会被最近的特殊点控制,询问每个特殊点控制多少点。n,m,Σki<=300000。 【算法】虚树+倍增 【题解】★参考:thy_asdf 对询问建立虚树,然后DFS统计虚树上每个点被哪个点控制,记为belong[x]。 统计的方法是从下往上
阅读全文