自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 P1463 [POI2001] [HAOI2007] 反素数 (ybtoj)

思路:先写出30以内的质数(以其作为因数),再深搜每一种小于n的方案,在这之中选最大值;根据数据范围,发现最多只需要11层即可搜索到答案,保险搜到12层;为了成为最大反素数,存下每一个反素数的本身值,以此来判断大小;因为dfs的反素数的约数只会单调递增,所以可以答案一定合法;dfs存一个last作为前一层的反素数;tips:质数可以单调上升来优化;

2024-07-25 16:31:38 204

原创 ybtoj+E. 【例题5】字符串排序(线段树)

思路:线段树维护字符串,翻转使用子段翻转,时间复杂度 O(26logN)

2024-07-21 19:52:47 163

原创 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

原创 ybtoj+I. 4.数列询问(前缀和+并查集)

思路:建立num数组,表示每一个数到1之间的值,使用前缀和;

2024-07-18 19:30:59 227

原创 ybtoj+C. 【例题3】食物链(NOI 1995)(并查集)

解法一:算距离,使用带边权并查集;

2024-07-18 16:35:06 254

原创 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+D. 【例题4】子串拆分(贪心+KMP)

思路:枚举左右子串长度,以此KMP;方法:如果超过区间,j=ne[j];

2024-07-17 17:02:45 139

原创 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关注的人

提示
确定要删除当前文章?
取消 删除