- 博客(18)
- 收藏
- 关注
原创 P1463 [POI2001] [HAOI2007] 反素数 (ybtoj)
思路:先写出30以内的质数(以其作为因数),再深搜每一种小于n的方案,在这之中选最大值;根据数据范围,发现最多只需要11层即可搜索到答案,保险搜到12层;为了成为最大反素数,存下每一个反素数的本身值,以此来判断大小;因为dfs的反素数的约数只会单调递增,所以可以答案一定合法;dfs存一个last作为前一层的反素数;tips:质数可以单调上升来优化;
2024-07-25 16:31:38
204
原创 K. 5.二进制(ybtoj)(树状数组)
思路:考虑pow(2,k)对答案,应该为k+1位,此位不会对答案产生影响,于是,对于x和a[i],取k;if(y>>k是1,那么pow(2,k)到pow(2,k+1)-1的个数即为答案;(开log pow(2,20)个树状数组(20个))
2024-07-20 20:21:26
162
原创 acwing368银河/ybtoj恒星的亮度题解
当x,y强连通,x,y一定相等,即为col[x]=col[y],否则不合法,输出-1;算法:差分约束+trajan+拓扑dp;时间复杂度: O(n+m);求出f数组的最小值;
2024-07-20 15:01:45
164
原创 最大半连通子图(luogu,ybtoj,acwing均有)
题意分析:发现,最大半连通子图与强连通分量类似,也是一种强连通分量,求最大数量,就是求出本图中缩点后的一个单链,找出其中权值最大的,可以运用拓扑dp来实现,设f[v]是以v为终点的最大权值,ans为点数(题目答案),d【v】为点v权值;状转:f[v]=f[u]+d[v],ans[v]=ans[u](f[v]<f[u]+d[v);
2024-07-20 14:30:49
219
原创 文本生成器(JSOI2007)(信息学奥赛一本通)(luogu)(ybtoj)
思路:考虑容斥原理,求出所有随机的方案,减去不可行的方案,得出最终结果;考虑dp,求一个字母的前缀不可行方案,最终遍历每个结尾字母;题目解析:让你求出所有含单词的文章数量;ac自动机来求出ne数组(fail指针)总:ac自动机+dp+容斥原理;
2024-07-19 19:18:10
216
原创 ybtoj+I. 4.最短字符串(ac自动机+状态压缩dp+bfs)
思路:构建ac自动机,插入字符串时,在末尾打上标记,操作完毕,ne(fail)树跑到底,每个字符都标记上可以到达的子串,由ne继承,最后跑一遍bfs,字符到达最后一个(遍历完成),就输出当前已经遍历的长度,(打标记时使用状态压缩至二进制,易实现继承操作。
2024-07-18 20:16:32
162
原创 ybtoj+luoguP2444+E. 【例题5】病毒代码(POI2000)
思路:先构建出一个ac自动机,将他优化成tire图,标记含有病毒代码的点P的flag=1,bfs这个图,从根节点开始,标记过的点不走,如果最后形成自环,则可以安全代码,否则bfs结束,没有安全代码;涉及算法(bfs+ac自动机+tire图优化);
2024-07-18 20:01:29
175
原创 ac自动机(A. 【例题1】单词查询+B. 【例题2】单词频率)
本题主要是查询,可以建立一个cnt数组,和tire树中含义一样,最后定义一个ans,将ans加上查询到的cnt,输出ans就行了。如有疑问可以来私信问我,本人会在第一时间内回复。ac自动机含义:tire+KMp;
2024-07-17 21:06:18
133
原创 c++使用树状数组维护的普通平衡树(可以过洛谷题)
add(正常的树状数组函数),code:(没什么可解释的)sum(正常的树状数组函数),code:(没什么可解释的)函数:add,sum,query,two_point;query(通过排名查询数本身),code{通过这四种函数的组合求前驱,后继;
2024-07-17 19:15:06
570
原创 ybtoj+H. 4.前缀询问(tire树+贪心)
方法:每往tire树中插入一个字符串,都求出他的前缀的最大值的区间(预处理);查询的时候,按照他的每一个字符,找出他的在tire树中的前缀;数据结构:使用结构体来维护,存储last和len,并分为k叉树,记为tr数组;思路:创建一个tire树,最大0长即为两个一之间的区间最大值;
2024-07-17 18:58:35
158
原创 ybtoj+D. 【例题4】阅读理解(tire树)
思路:使用exist来标记单词结尾,最后输出标记,标记是句子编号。直接使用bool 数组会爆空间,考虑bitset;
2024-07-17 17:14:24
160
原创 ybtoj+G. 3.字符串题(贪心+KMP)
方法:先找不能作为pre[i]的前面的字母,将其标记,最后遍历26个字母,未被标记就选择;思路:根据求ne数组来反着推文本串。
2024-07-17 17:09:08
224
原创 ybtoj+H. 4.字符串匹配 (贪心+KMP)
实现:存下一个数的前一个与他相同的距离,然后kmp比较;思路:想到用一个last数组来存下交换前与交换后;数据结构:使用last数组来维护;
2024-07-17 16:58:00
269
原创 ybtoj+D. 【例题4】荷马史诗 (树形数据结构+贪心)
使用结构:大根堆,维护一个每个子节点的数值与深度,从深到浅将每个节点的子节点的数值合并在父节点上,最后输出根的深度;方案:构建出一个类似于trie树的树,之后对其进行移动子树操作,使整棵树的最大深度最小;思路:观看此题,脑海中第一时间就想到了trie树;
2024-07-17 16:49:01
394
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人