自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【树形dp】洛谷P1352 没有上司的舞会

这道题中,并没有提及这棵树的根节点是什么,所以我们要找到根节点,便于最后输出。在之前我们假设每个点 i 的父节点是他自己,后面建图时改为正确的根节点。要注意的是,如果要选择点t,先把f[t][1]加上t点的happy值。然后搜索,如果他的父节点还是自己,那他就是根节点root。建边纯纯模板,先不放部分代码。

2024-06-09 13:55:16 405 1

原创 P1311 [NOIP2011 提高组] 选择客栈

答案是肯定的:我们发现只要得知一个点b(编号较大的客栈的位置),判断离他最近的咖啡馆的位置,记录这个咖啡馆之前与b色调数目相同的点的个数,一直累加,就能得到答案。直接计算出此咖啡馆前所有包含颜色的数字的个数,因为我们不知道后面出现的颜色到底有几种,最后res+=我们枚举到的这个点颜色相同的个数-1。`i=2:Pc=3<=3 可以做咖啡馆,sum[0]=1,sum[1]=1(他自己);以此类推~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2024-05-19 08:53:54 851

原创 [NOIP2018 提高组] 旅行

深度优先搜索,我们先进行预处理,求出每一个点可以到的其他点都是什么,然后在主函数中,逐个判断字典序的大小,最后输出。循环,找字典序(一位一位找)字典序小的就memcpy(A,B,sizeof(A)) 即将B字符串赋值给A,循环找与他相邻的点,如果这个点没有被标记过 或者 都没有到达终点并且与现在所在连接的两个点不同时,dfs。由小到大排序,便于后面比较字典序且搜索时保证由小到大。预处理完后,如果cnt==n,说明每个点都已经走过了。仔细看完题目之后,我们发现就是求路径的字典序最小。标记这个点表示已经经过。

2024-04-21 09:23:56 419 1

原创 [CSP-S 2022] 假期计划

遍历链表,如果从start点到相邻的e[i]点换成次数大于从 t 结点+1(即加了一次换车),则替换dist值并且入队,标记。三个要点:是否连通(我们在预处理时已经将大于转车次数的叉出去了),是否不等(两个点之间不等),是否为最大值。在符合从家到第i个点转车次数小于k的情况下,将从x到第4个景区的经过的点存为i,再将f[]排序,取最大值。从start点开始,到每一个点的换车次数初始值为最大值,到自己的换车次数设置为零,然后进队。首先预处理,存每个点从此处到达另外图中所有的点需要转车的次数。

2024-03-30 22:13:32 506

原创 【语法】vector

vector 定义时 g为一维数组 g[ ] 为二维数组。auto: 自动识别后面的变量是什么类型。

2024-03-24 12:40:08 255 1

原创 【线性dp】子串

我们发现,每次更新sum时,每次 f, sum 都与上一轮有关(也就是 j-1)时我们所学的数组空间优化,我们采取相似做法,循环时倒着循环。但这里要定义两个数组:sum 和 f。如上图,我们总结出了这个公式。但是,根据数据大小,我们发现。

2024-02-08 10:20:51 550

原创 【线性dp】合唱队形

翻译成(人话):有一个数列,找出一个位置,使他左边为上升子序列,右边为下降子序列。为了方便写代码,我们可以都写成最长上升子序列:一个从左向右,一个从右向左。我们可以枚举每一个数,计算出他左边最长上升子序列,右边最长下降子序列。最后,枚举每一个数,将他最长上升子序列+最长子序列长度,找出最大值。

2024-02-05 15:37:48 456 1

原创 【深度优先搜索习题】 分成互质组

n n个数p[20] 存数group[20][20] 最多可能有N个组, 每个组可能有N个数 存的是数的序号(保证可以连续性访问)st[20] 标记每个数是否用过res=20 组数的最大值是n个数两两互质。

2024-01-02 00:12:02 1185 1

原创 【模板代码】辗转相除法gcd(图像证明法)

1. 由上图我们可以知道每次下一轮出现的小正方形是一定可以构成上一轮的大正方形的,因为下一轮小正方形的边长可以构成上一轮大正方形的边长。如上图,这是一个a*b的长方形,我们以短边为第一个正方形的边长。我们发现,第一轮进行完之后,如果a>b,此时r=b(较小数),b=a(较大数), a=r(较小数)如上图:我们继续分割小正方形,此时小正方形的边长变为b%a,要分割的新矩形长a宽b%a。2. 如上图所示,我们知道b>a,但如果输出的时候a>b,此时程序还成立吗?求a,b 的最大公约数,就是求。

2023-12-30 21:48:06 423 1

原创 P1019 [NOIP2000 提高组] 单词接龙

1. 由于最后连接好的字符个数要最大,所以重合部分要尽可能地少。3. 不能有单词含单词的现象。2. 每个单词最多出现两次。

2023-12-30 21:26:33 375 1

原创 【代码模板】完全背包

v[i] :第i个物品的体积w[i]:第i个物品的价值f[i][j] :前i个物品放入体积为j的物品后,最大价值。

2023-12-23 22:28:06 1018 2

原创 【代码模板】01背包

v[i] :第i个物品的体积w[i]:第i个物品的价值f[i][j] :前i个物品放入体积为j的物品后,最大价值。

2023-12-23 20:09:03 485 3

原创 课堂笔记 string 使用

【代码】课堂笔记 string 使用。

2023-12-17 14:16:55 65 1

原创 【模板代码】最长上升子序列模板

a[] 输入序列f[i] 以i为结尾的最长上升子序列长度n 输入序列长度len (输出)最长子序列的长度初始化 f[ ] 为最大值 0x3fl 当前最长上升子序列位置下标最左端 初始值为0r 当前最长上升子序列位置下标最右端mid 当前最长上升子序列位置下标中间。

2023-12-10 15:51:21 414 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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