- 2025-01-09穷举vs暴搜vs深搜vs回溯vs剪枝系列一>字母大小写全排列
题目: 解析: 代码: privateList<String>ret;privateStringBufferpath;publicList<String>letterCasePermutation(Strings){ret=newArrayList<>();path=newStringBuffer();dfs(s,0);return
- 2025-01-09[NOI2018] 你的名字的题解
[NOI2018]你的名字Solution:考虑一下\(l=1,r=\left|S\right|\)的时候怎么做,其实比较简单,我们对\(S,T\)都建立出SAM,利用这个求得\(p_i\),表示\(T_{i-p_i+1,i}\)在\(S\)上是一个连续子串,设\(fir_i\)表示\(T\)的SAM中,节点\(i\)代表的\(endpos\)中的最小值(事实上
- 2025-01-09C语言文件处理中的常见函数整理
这里只是整理了一小部分常见的并附上了使用代码,希望对你有帮助!注意:这些函数都是建立在文件之上的,必须有打开文件、读写文件、关闭文件的流程才能使用一.顺序读写1.fputc从文件中读取一个字符写文件的原理:光标一开始在最开始的位置,读取/写入一个字符,就往后调一个光标
- 2025-01-09P5360
有点牛的题。一个可能比较前置的技巧是LCT维护MST的方法,具体来说就是加边的时候,如果两边原本就是连通的,那么就把路径上的最大边权拿出来和要加的边进行比较,选择更优的那一个。这个技巧启示我们,在MST中只有任意两点的路径的最大边权是重要的,并且两张图的MST是支持进行合并
- 2025-01-09[CF2057F] Formation 做题记录
link对我比较有意义的一道题目。我们先逐步分析,对于单个询问,先钦定最大值位置\(i\),我们现在的目标是最大化\(a_i\)的值。这显然有单调性,考虑二分一个\(mid\)表示最终值,那么会出现一个\(l(l\lei)\)以及一个序列\(c_{0\dotsl-1}\)有\(c_i=\lceil\dfrac{mid}{2
- 2025-01-09简单词法分析器的设计
实验名称设计简单词法分析器。实验内容根据相关状态转换图写算法,将输入串分解成单词串。实验目的运用词法分析原理及方法,设计、编制并调试一个具体的扫描器,加深对词法分析原理的理解及词法分析方法的应用能力。上机环境设计思想(流程)首先我们应该确认待分析的五类简单
- 2025-01-08【C语言】打印菱形
目录前言一、题目介绍1.1问题描述1.2输入描述1.3 输出描述1.4示例 二、基本思路三、代码实现3.1基本框架3.2pirnt函数的实现四、效果展示 五、完整代码前言在牛客网刷题时碰到的一道题,基础语法篇中的BC8牛牛的字符菱形,我相信在其它地方也有类似的
- 2025-01-08Luogu P2292 HNOI2004 L 语言 题解 [ 紫 ] [ AC 自动机 ] [ 状压 dp ]
L语言:很好的一道状压dp题。思路看到这题,首先可以想到一个很暴力的dp,设\(dp_i\)表示考虑到第\(i\)位能否被理解,暴力匹配字符串转移即可。第一个优化也很显然,暴力匹配字符串换成AC自动机即可。但是时间复杂度变成了\(O(m|T||S|)\)的,显然会被卡。状压与位运算优化
- 2025-01-08C++ Qt练习项目 QChar功能测试
个人学习笔记代码仓库GitCode-全球开发者的开源社区,开源代码托管平台新建项目设计UI1、拖入group box去掉名字2、拖入2个LineEdit3、拖入两个Label4、拖入两个PushButton5、点栅格布局1、拖入GroupBox2、拖入4个PushButton3、点栅格布局1、拖入G
- 2025-01-08打卡信奥刷题(561)用C++信奥P7343[普及组/提高] 【DSOI 2021】电子跃迁
【DSOI2021】电子跃迁题目背景“如果能证明大统一理论,这个世界将焕然一新。”“量子……量子……就差一点……”“嘶……哦。我想我明白了。”题目描述在你的视野下,出现了一排电子,他们分别拥有不同的能量。你需要做的是通过将相邻电子互换的方法,将电子排的有序。有
- 2025-01-07CF2057E2 Another Exercise on Graphs (hard version) 题解
感觉和[NOI2018]归程有点像(?考虑对每个询问二分答案,设二分到的答案是\(x\),要判断路径上的\(k\)大值是否能不大于\(x\),只需先将价值不大于\(x\)的所有边的边权设为\(0\),其他边设为\(1\),跑一遍\(a\)到\(b\)的最短路,看最短路长度是否不大于\(k\)即可。因为\(x\)的
- 2025-01-07Luogu P3041 USACO12JAN Video Game G 题解 [ 紫 ] [ AC 自动机 ] [ 动态规划 ]
VideoGamesG:弱智紫题,30min切了,dp思路非常板。多模式串一看肯定就是要建出AC自动机,然后在fail树里下传标记,预处理每个节点到达后的得分。然后设计\(dp_{i,j}\)表示第\(i\)个字符,AC自动机里匹配节点在\(j\)的最大答案,刷表法转移即可:\[dp_{i+1,ch_{j,c}}\gets\ma
- 2025-01-07题解:P1541 [NOIP2010 提高组] 乌龟棋
基础动态规划。这道题的题目条件显然满足阶段性和无后效性,那么有一个直观的思路就是把当前所处格子和四种卡片的使用次数作为状态。但是如果按照上面的想法,数组空间是无法开下的,所以我们稍微变一下思路,把四种卡片的使用数量作为状态,对于当前所处格子的话可以直接计算出来,这样数
- 2025-01-07P8037 [COCI2015-2016#7] Prokletnik 题解
题意定义一个区间$l,r$为好的当且仅当最小值为$a_l$且最大值为$a_r$或最大值为$a_l$且最小值为$a_r$。我们先考虑最小值为$a_l$且最大值为$a_r$的,另一个我们翻转过来在搞一遍就好了。先考虑将询问离线按$r$排序,容易发现,对于每个右端点$r$对应的合法左端点是
- 2025-01-07将字符型数字转换成int型
直接使用ASCII码字符数字的ASCII码和实际数字之间有一个固定偏移量,'0'的ASCII值为48。所以可以通过减去'0'来完成转换:charch='5';intnum=ch-'0';cout<<num<<endl;//输出:5在转换之前,可以使用std::isdigit检查字符是否为数字,避免意外输入导致错误。
- 2025-01-06省选训练赛 #17 题目 D 补题记录
具有一定Educational意义。题意:一张无向图,将其分解为若干组基环树森林,求至少需要分解多少组。\(n,m\le2000,\\sumn,\summ\le2\times10^4\)充分利用基环树森林的性质:若为内向基环树,那么每个点的出边至多只有一条。转化:我们相当于给图中的边定向,使得所有点出边数量
- 2025-01-06编程题-删除字符串中所有相邻重复项
题目:给出由小写字母组成的字符串 s,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在s上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。解题:充分理解题意后,我们可以发现,当字符串中同时有多组相邻重复项
- 2025-01-05线段树进阶练习专题
小白逛公园题目大意:求一段区间里最大子段和思路:有空补(code:#include<bits/stdc++.h>usingnamespacestd;constintMAXN=500100;intm,n;inta[MAXN];inlineintread(){ intx=0,f=1; charch=getchar(); while(ch>'9'||ch<'0'){ if(ch==
- 2025-01-05最大权闭合图
0.前言参考文献:胡伯涛《最小割模型在信息学竞赛中的应用》本文总结了上书最大权闭合图一章节核心内容及其应用。如有错误请指出。1.最大权闭合图对于有向图\(G=(V,E)\)的一个子图,如果其点集\(V_1\)中点的后继都还在\(V_1\)中,则称其为原图的一个闭合图。而最大权闭合
- 2025-01-05ABC387F
题目还是很不错的。我们对于每一个\(i\),直接对\(a_i\)向\(i\)连一条边,很容易发现这是一个基环树。那我们直接按照套路来,考虑一个环对答案的贡献,显然环如果合法,则所有颜色相同,直接把它看成一个点即可。缩点后那剩下的解释一棵树了,我们考虑dp,设\(dp_{u,j}\)表示以\(u\)
- 2025-01-04【题解】AT agc057A Antichain of Integer Strings
记\(f(x)\)为最小的大于\(x\)的\(y\),使得\(x\)是\(y\)的子串。易得:\[f(x)=\min(10x,x+10^{|x|})\]其中\(|x|\)表示\(x\)的位数。可以发现,\(f(x)\)为一个严格单调递增的函数。考虑贪心策略,显然选小的数不如选大的数优,因为小的数更有可能成为别的数的子串。于是,我
- 2025-01-0401.03 CW 模拟赛 T4. ring
前言找原题未遂了()\(\rm{HD0X}\)大佬讲了没听懂啊思路无敌了,看起来似乎很困难,不知道补不补的掉首先发现不好处理成一种简单的问题,肯定是想有哪些方法可以处理这种问题\(\rm{TJ}\)的不太看得懂你可以树状数组维护区间和,每次对于一个环暴力修改\(\mathcal{O}(s
- 2025-01-03树状数组的扩展
二维区间修改+查询例题题目是求\(\sum\limits_{i=1}^n\sum\limits_{j=1}^ma_{i,j}\)我们可以定义一个差分数组\(d_{i,j}=a_{i,j}+a_{i-1,j-1}-a_{i-1,j}-a_{i,j-1}\)易知\(a_{i,j}=\sum\limits_{x=1}^{i}\sum\limits_{y=1}^jd_{x,y}\)接着我们可以利用差分来简化题意,我
- 2025-01-02数据结构:串
文章目录串的基本概念串的相关操作串的代码与运行结果串的基本概念1.串长:串的长度(字符个数)称作串长。2.空串:长度为0的字符串。3.主串:包含所有子串的串为主串。4.子串:串中任意连续的字符组成的子序列称为该串的子串。串的相关操作串的操作有生成串,复制串,串连接,
- 2025-01-01超级树状数组
超级树状数组,就是用树状数组来进行区间修改+区间查询操作的东西,好处是和线段树相比快了不少。例题首先先来复习一下普通的树状数组inttree[MAXN];intlowbit(intx){ returnx&-x;}voidupdate(intx,intd){ while(x<=n){ tree[x]+=d; x+=lowbit(x);