nE
  • 2024-09-10树形DP做题回顾(上)
    题目一 ​​​​Problem-2196大致意思就是求每个点为根的最大深度;对于这个问题,很快速的我们可以想到跑两次dfs,第一次预处理出以u为根的子树的第一,二深的深度,第二次dfs进行树形dp,从u->v时推出v的最大深度,用up[v]来存储;代码如下:注意分走到第一大和第二大的路径上的决策,以
  • 2024-09-07单双链表
    AcWing826.单链表模板题:实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第k个插入的数后面的一个数;在第k个插入的数后插入一个数。现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第k个插入的数并不是指当前链表
  • 2024-09-04KMP 算法
    \(Question:\)给定一个模式串P和一个主串S,求模式串P在主串S中出现的位置(字符串下标均从1开始)\(Solution:\)模式串中next函数next[i]表示模式串P[1,i]中相等前后缀的最长长度运用双指针:i扫描模式串,j扫描前缀初始化ne[1]=0,i=2,j=0;ne[1]=0;
  • 2024-09-01新赛道-2024年CSP-J/S 十一连测(四)-T1
    题目描述王老师脑袋一拍,定义了乘加运算!他定义 a∗bc=(a+b)×c 。而且他觉得用括号来规定运算的先后顺序太麻烦了,他给乘加运算定义了一个权值的系数(为乘加运算的下标),权值大的乘加运算先进行。例如下面的表达式:=====​9 ∗34​ 9 ∗12​ 1 ∗23​ 6 ∗41​ 29 ∗34
  • 2024-08-23Trie 学习笔记
    在此记录若干Trie好题。1.洛谷P3732[HAOI2017]供给侧改革点击查看题面给定一个长度为\(n\)的\(\texttt{01}\)字符串\(S\)。令\(\operatorname{data}(L,R)\)表示:在字符串\(S\)中,起始位置在\([L,R]\)之间的这些后缀之中,具有最长公共前缀的两个后缀的最长公
  • 2024-08-22164. 可达性统计 topsort
    //164.可达性统计.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*https://www.acwing.com/problem/content/166/给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。输入格式第一行两个整数N,M,接下来M行每行两个整数x,
  • 2024-08-22K取方格数(最大费用流)
    题目描述给定\(n\timesm\)的方格\(a[1..n][1..m]\),每个格子有一个数。从\((1,1)\)出发走到\((n,m)\)一共不超过\(K\)次,只能往右往下走,走过的位置的数会变成\(0\)。问经过的位置的数字之和的最大值是多少。输入第一行包含一个正整数\(T(1\leqT\leq10)\),表示测试数据的组数
  • 2024-08-20欧拉回路 模版dfs stack两种版本
    stack堆栈代替dfs版本//欧拉模版.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///**https://loj.ac/p/10105有一天一位灵魂画师画了一张图,现在要你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次。一共两个子任务:这张图是无向图。(50分
  • 2024-08-18单链表
    //单链表#include<iostream>usingnamespacestd;constintN=1010;inthead,e[N],ne[N],idx;//初始化voidinit(){ head=-1; idx=0;}//插入voidadd_to_head(intx){ e[idx]=x; ne[idx]=head; head=idx; idx++;}//将x插到下标为k的点的后面voidadd(
  • 2024-08-16KMP算法
    KMP算法介绍KMP(Knuth-Morris-Pratt)算法是一种高效的字符串匹配算法,用于在主串(text)中查找模式串(pattern)。KMP通过预处理模式串,避免了在匹配失败时回溯主串,提高了匹配效率。其时间复杂度为O(n+m),其中n是主串的长度,m是模式串的长度。KMP算法的关键思想KMP算法的核心思想
  • 2024-08-13最大独立集
    //最大独立集.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*http://oj.daimayuan.top/course/14/problem/799给你一张二分图,图中没有重边,你需要求出这张图中最大独立集包含的顶点个数。最大独立集是指:在图中选出最多的点,满足他们两两之间没有边相连。
  • 2024-08-12860. 染色法判定二分图
    //860.染色法判定二分图.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///*https://www.acwing.com/problem/content/description/862/给定一个n个点m条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数
  • 2024-08-11[赛记] 暑假集训CSP提高模拟18
    T2T4不太可做,所以没改Mortis20pts原题:Luogu[ABC302G]Sortfrom1to4赛时用$set$乱搞拿了20pts,事实证明确实是乱搞;考虑交换只有三种情况:a在b上,b在a上,需要一次;a在b上,b在c上,c在a上,需要两次;a在b上,b在c上,c在d上,d在a上,需要三次;这里的在什么什么上是指原数组
  • 2024-08-09[lnsyoj2246/luoguCF979D]Kuro and GCD and XOR and SUM
    题意给定集合\(S\),初始为空,进行\(q\)次修改或查询操作:修改操作将\(x\)加入集合;查询操作给定\(x,s,k\),要求找到满足\[\max_{u\inS,u+x\les,k|\gcd(u,x)}\{u\oplusx\}\]的最小的\(u\)。sol集合、异或、可查可改,可以自然地想到0/1-Trie。我们假设\(k=1\),此时不需
  • 2024-08-08ρars/ey 题解
    给个链接:ρars/ey。我们考虑一个树上背包。设\(f_{u,i}\)表示在\(u\)号节点的子树内删除\(i\)个点的最小代价。显然有答案为\(f_{1,siz_1-1}\)。接下来我们考虑转移。看这一张图:这里红圈内的东西为当前的\(siz_u\),绿圈部分为\(siz_j\)。我们枚举\(x\)为\(u\)子
  • 2024-08-07kmp算法(c++)
    kmp算法的简单介绍从主串中快速找到与要找的串的相同位置如果使用暴力算法去求解这个问题,时间复杂度为O(i*j)=>很大kmp算法则是对这类问题的优化因整理过于麻烦,,详细的介绍可以参照这篇博客,,花时间看完就明白了,写的很棒!!!kmp算法详细介绍下面是自己学习的一些注意的地
  • 2024-08-02[lnsyoj2232]永恒
    题意给定一个由小写字母和数字组成的字符串\(s\),给定\(n\)个模式串\(t\),对第\(i\)个字符串\(t_i\),使得字符串\(s\)满足:删除其中任意多个字符,使\(s\)形式为T+Date,其中,T为模式串\(t_i\),Date为任意一个真实存在的日期。求对于每一个\(t_i\),求满足条件的\(s\)的
  • 2024-07-30多项式基础内容小记
    0.基础知识:关于多项式的定义:多项式:一个形如\(f(x)=\sum_{i=0}^na_ix^i\)的有限和式被称为多项式。系数:多项式第\(i\)项的系数在上面就表示为\(a_i\)。度(次数):多项式中最高次数的项的次数就被称为该多项式的度,也称次数。多项式表示法:多项式有两种表示法:
  • 2024-07-29图的建图(hjyowl讲解)
    上次讲了一些图的概念,如下:图论基础概念(详细讲解)-CSDN博客今天我们讲一下c++如何构建一个图,大概有三种方法。第一种:邻接矩阵存图,这个很简单,一个二维数组代表两个点之间是否有边/边权长度,便利的时候直接枚举n个点,看有没有链接(直接判断有没有值)。优点:好理解简单粗暴好写,稠密
  • 2024-07-29深度优先搜索
    树和图的框架#include<iostream>#include<algorithm>usingnamespacestd;constintN=10010;inth[N],e[N],ne[N],idx;voidadd(inta,intb){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}intmain(){ memset(h,-1,sizeof(h));}数和图的深度优先遍
  • 2024-07-28KMP
    基础下文的字符串下标皆从\(1\)开始。考虑定义一个数组\(ne_i\),指的是设字符串\(t\)的前\(i\)位为\(s\)。字符串\(s\)的前\(ne_i\)位与后\(ne_i\)位完全相同,且\(ne_i\)取到了最大值,并且\(ne_i\)不为字符串\(s\)的长度。是不是觉得很绕?我们举一个例子来更好
  • 2024-07-25单链表
    题目大意实现一个单链表,链表初始为空,支持三种操作:(1)向链表头插入一个数;(2)删除第k个插入的数后面的数;(3)在第k个插入的数后插入一个数现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作
  • 2024-07-17zotero使用教程集锦
    文章目录0、背景1、[标准论文参考文献添加方法——Zotero入门使用教程](https://blog.csdn.net/sdf57/article/details/108710861?spm=1001.2014.3001.5502)2、博主[木槿花开的秋天](https://blog.csdn.net/2301_80044952?type=blog)的系列教程Last、总结0、背景以前
  • 2024-07-14[ABC206E] Divide Both 的题解
    题目大意求出从\(l\)至\(r\)中满足以下条件的\((x,y)\)的个数。\(\gcd(x,y)\ne1\)且\(\gcd(x,y)\nex\)且\(\gcd(x,y)\ney\)。其中\(1\lel\ler\le10^6\)。思路正难则反,所以可以求出所有互质或者是相互倍数的\((x,y)\)的对数,在将其减去所有的方案数就是
  • 2024-07-09SPFA算法模板和判断负环
    851.spfa求最短路-AcWing题库852.spfa判断负环-AcWing题库#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;intn,m,k;inth[N],e[N],idx,w[N],ne[N];intq[N],tt=-1,hh=0;voidadd(inta,intb,intc){ e[idx]=b; ne[idx]=h[a]; w[idx]=c;