ACM入门
文章平均质量分 69
dplovetree
华东师大 数据学院在读
展开
-
2021牛客多校5 Double Strings
Double Strings题意:给你两个字符串sss和ttt,长度都小于等于5000,求有多少种子序列,使得s和t的子序列长度相同, 但是sss的子序列组成的字符串的字典序比 ttt 的小。思路:字典序小,即前缀相同的部分,有一位的字典序小,之后只要取长度相同即可。我们可以用 dp[iii] [jjj],来预处理出,sss的前iii位,和ttt的前jjj位,前缀相同的方案数。转移方程即为:dp[iii] [jjj] = dp[iii - 1] [jjj] + dp [iii] [jjj -原创 2021-08-23 19:58:11 · 91 阅读 · 0 评论 -
Codeforces Round #739 (Div. 3)解题报告
文章目录ABCDEF1F2A题意:找出第k个既不是3的倍数也不以3结尾的数思路:1≤t≤100,1≤k≤10001\le t\le100,1\le k\le10001≤t≤100,1≤k≤1000由样例得k=1000k=1000k=1000时,答案等于166616661666,所以暴力枚举1∼16661\sim16661∼1666即可#include<bits/stdc++.h>using namespace std;int ans[1010], now;bool pan(int原创 2021-08-19 03:08:50 · 592 阅读 · 0 评论 -
Educational Codeforces Round 111 (Rated for Div. 2) C 补题
Manhattan Subarrays(思维)题意:定义 d ( a , b ) 指的是 a和b的曼哈顿距离。认为一个点的三元组 {a,b,c} 是不好的指,d (a,b) = d (a,c) + d(b,c) ;给你一个长度2e5的数组A,问有多少个字串满足不存在不好的三元组 { (A[i] , i ),(A[j] ; j) ,(A[k] , k) }。思路:通过绝对值等式,我们不难发现如果一个三元组是不好的,只有可能是d(a,c)=d(a,b)+d(b,c); (a<b<c);原创 2021-08-06 04:14:37 · 176 阅读 · 0 评论 -
AC自动机
AC 自动机AC自动机 本人也只做了几道模板题,不太会应用 orz前置知识:KMP、trie树AC自动机适用于多模式串匹配问题,如问几个模式串在文本串分别在文本中出现的次数;首先,多字符串我们建立trie树来减少时间、空间复杂度。其次我们在匹配的过程中,为了达到高效,我们需要再建立一个失配指针,指向深度最深的和当前节点有公共后缀的节点。当我们匹配文本串的时候,我们优先遍历存在的节点,如果没有需要的节点了,我们就跳fail指针继续下去。以上就是普通的,比较简单的AC自动机了。接下来我们来讲重原创 2021-07-30 20:32:10 · 80 阅读 · 0 评论 -
0-1 字典树(异或小能手)
0-1字典树相信大家都会字典树了,字典树可以用来节省空间复杂度, 即 最简单的多个单词 公用一个字母节点。如果在字典树上建fail边,就变成AC自动机啦(这个有机会下次说)。今天的主角 0-1 字典树,还能节约时间复杂度!0-1字典树,顾名思义每个节点不是0就是1,0-1字典树最多有32层,每层代表一个二进制位。他能实现 诸如 异或不等式的问题,在每个数字在边插入时边维护答案。这里有三道例题,以后自己看得时候,不要嫌弃自己现在的代码 吃藕 555~Hdu 6955 Xor sum题意:给你原创 2021-07-27 22:07:35 · 280 阅读 · 1 评论 -
线段树合并——小学六年级必读经典
线段树合并是对于权值线段树来说的。前置知识:权值线段树,动态开点线段树;如果以上两个知识点都还没点亮的话,建议出门右转,我帮你 return( bushi那么我们就发车啦!线段树合并,顾名思义,就是建立一颗新的线段树保留原本两个线段树的信息。考虑 我们合并到线段树a,线段树b的pos位置上:如果a有pos位,b没有,直接return a;如果b有pos位,a没有,直接return b;如果已经合并到叶子节点了,就直接把b上pos位的值加到a的pos位上,return a;递归处理左右子原创 2021-07-23 20:06:09 · 445 阅读 · 0 评论 -
2021-07-22
SOS DPMr.I has two sequence Ai and Bi of length n,(0≤i≤n−1).Define an array C of length n, where Ck=max{AiBj}, satisfying (i&j≥k).& is the button under binary Bitwise AND operation.Please calculate the value of ∑n−1i=0Ci, modulo 998244353.The原创 2021-07-22 22:06:37 · 183 阅读 · 0 评论 -
2021-7-16 个人赛 补题
No Time to Dry题意:给你2e5个数,和2e5组询问。序列代表的是最后涂成的油漆,大的数只能涂在小的数上面,而小的数不能涂在大的数上面。每次询问一个区间,求最小的操作数使得涂成上面需要的序列。思路:线段树 + 单调栈涂油漆必备套路,单调栈,能预处理处最初的涂色操作数。这道题的核心在于 离线(想到了,可惜没写),这个数据量在线是不可能的。先把处理出next数组,就能跳同一个数的下一个位置,那么我们就把询问离线,按照l为第一关键字,r为第二关键字排序,当区间的左边界移动时,用nex原创 2021-07-16 21:31:26 · 89 阅读 · 0 评论 -
2021-7-15 个人赛 补题
Do You Know Your ABCs? 2题意:给你N个数( 4<=N<=7 ),分别是A、B、C、A+B、A+C、B+C、A+B+C中的N中;已知1<=A<=B<=C,求根据给出的数,能确定多少种三元组(A.,B,C);思路:根据鸽巢原理,从给定的至少四个数中,一定能得出A+B+C,不是已经得到了就是可以从已知的某两个数中加出来,这样就得到了A+B+C;同样根据鸽巢原理,我们用得到的A+B+C减去原来的 X 那么至少能得到A、B、C中的两个,这样我们从原来的原创 2021-07-15 19:38:36 · 87 阅读 · 0 评论 -
2021-7-14 个人赛 补题
D:Cow Photography II题意:n头牛(n<=20000),有一个隐藏序列。题目提供五个序列,都是从隐藏序列变化过来,每次可能有0头或多头牛会移动,但在五个序列中,每头牛最多只能移动一次,要求还原最初的隐藏序列。思路:因为每头牛最多只会移动一次,所以任意两头牛的先后次序最多只会改变两次,所以在五张照片中,序号在前面多的牛,排在前面。根据复杂度我们可以通过sort+重写比较函数来n logn地还原隐藏序列。这道题在比赛中做了好久,一个半小时都没做出来。想到了依靠先后次序关系,原创 2021-07-14 20:10:01 · 142 阅读 · 0 评论 -
2021-7-13个人赛 补题
G:Dance Mooves I题意:n头牛排成一排,初始时编号为i的牛在第i个位置有k次交换,每次会交换a,b两个位置的牛这k次交换将按顺序,无限循环执行下去最后问每头牛能够到达的位置的个数题解:可以先按照题意模拟一遍,求出k次交换后每头牛所在位置p[i],并记录在这k次交换中每头牛到过的地点的集合题目要求无限次循环交换,但可以发现,加入编号为i的牛经过一遍交换后到达位置j,编号为j的牛经过一遍交换后到达位置k,那么编号为i的牛在经过两遍交换后也能够到达位置k(路径继承性)所以可以借助并原创 2021-07-13 21:07:15 · 104 阅读 · 0 评论 -
2021-7-12 个人赛 补题
B:Above the Median题意:给你一个大小100000的序列,求出有多少区间他们排序之后的中位数大于等于X。最开始的想法就是大于等于X的数赋值为1,小于X的数赋值为0,那么满足条件的区间就是 区间和大于等于区间长度的一半( sum > = (len + 1) / 2 )考虑优化 n²的复杂度,参考倍增的思想,如果一个区间中1的数量为 x,此时的区间长度为 len,那么此时的指针可以直接跳到(2*x+1)的位置,此时不管跳过的区间中 0 / 1 的情况是怎么样的,都满足条件,那么直接加原创 2021-07-12 21:37:13 · 137 阅读 · 0 评论 -
HDU-5044、洛谷P3995 Tree 树上差分 好题
HDU-5044 Tree 树上差分 好题树上差分 运用 普通差分思想,在树上用一个数组模拟差分,能实现 区间修改 (边和点都可以)和 单点查询 操作,能比线段树快。既然是模拟一维差分,实现的原理,就是在线段头部+1,线段尾部-1;这样能实现 O(1) 修改, O(n) 查询的功能。先讲点权的区间修改:比如 让 点u 到 v 之间路径上所有点+1,想象以 u-v 路径上深度最小的点(即最近公共祖先 lca ) 把线段分成两段,这样一条线段就分成了两个线段,这两个线段分别处于左子树和右子树;那么只需要原创 2021-03-02 21:53:27 · 340 阅读 · 3 评论 -
1-24综合场 补题
概率DP1-24打了一场综合场,状态在往下走,感觉很自闭,这张倒数了,无情补题ing;H - Sticker AlbumThe Sticker Album of the ICPC 2020 Nlogonian Subregional just came out! Competitive programming hooligans all over the country are buying albums and collecting stickers, to celebrate the compe原创 2021-01-24 23:15:34 · 366 阅读 · 0 评论 -
线段树、树状数组例题
线段树、树状数组例题1.17刚练的线段树和树状数组,热乎着~洛谷3373 线段树2题目描述如题,已知一个数列,你需要进行下面三种操作:将某区间每一个数乘上 x将某区间每一个数加上 x求出某区间每一个数的和输入格式第一行包含三个整数 n,m,p分别表示该数列数字的个数、操作的总个数和模数。第二行包含 n个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。接下来 m 行每行包含若干个整数,表示一个操作,具体如下:操作 1: 格式:1 x y k 含义:将区间 [x,y]内每原创 2021-01-18 10:04:14 · 955 阅读 · 0 评论 -
【线段树】小学六年级必须会的知识点
【线段树】入门相信大家在胎教期间已经学会了线段树的定义。如果还没有学明白的话,详见:1.树的入门:https://blog.csdn.net/m0_51772480/article/details/1111512962.树的基础算法:https://blog.csdn.net/solemntee/article/details/111051966接下来,我们直接上例题,大家好好体会。【例题】敌兵布阵:Description:C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek原创 2020-12-28 17:10:06 · 157 阅读 · 0 评论 -
匈牙利算法(二分图求最大匹配)
匈牙利算法(二分图求最大匹配)过山车——中级Time Limit: 1000MS Memory Limit: 32768KDescriptionRPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow愿原创 2020-12-25 15:51:14 · 209 阅读 · 0 评论 -
最小生成树(优先队列)
最小生成树(优先队列)最小生成树例题:最小生成树Kruskal算法Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 227 Accepted: 124Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了连接两个城镇需要花费的代价。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少花费多少代价就可以完成工程?Input输入包原创 2020-12-25 15:25:24 · 333 阅读 · 2 评论