vis
  • 2025-01-23【做题记录】2025提高刷题-dp
    A.Min-FundPrison(Medium)考虑一个边双连通分量一定不可能分为合法的两部分,于是进行缩点。缩完后显然是一个森林。设\(dp_{i,j,0/1}\)表示第一堆有\(i\)个点,第二堆有\(j\)个点,两堆点有没有用一条边连起来的最小花费。对于每棵树,考虑将它加入第一堆/加入第二堆/一部分加
  • 2025-01-22洛谷OI_树的刷题笔记
    整个笔记注意力惊人,慎入......持续更新。P2700逐个击破能卡住我的黄题已经很少见了,但这道题确实又是一个。唉,只能说自己依然是蒟蒻吧。不过,由于题目很容易理解,加上自己因为刷难题身心俱疲,“玩”一下这种简单的题目也算是种放松。不能因为刷题,把自己学算法的乐趣搞没了。先
  • 2025-01-20BFS及其优化
    BFS及其优化BFS可实现问题:[连通块](DFS也行)[最短路](DFS又行)[曼哈顿距离](DFS好像大概也许行)大概步骤:1.起点入队列,打标记。2.弹出队首进行操作。3.按照题目要求加入队列新点并打标记。例题:1.accoders【一本通提高篇广搜的优化技巧】山峰和山谷2065思路
  • 2025-01-20最短路径dijkstra
    dijkstra本质上的思想是贪心,它只适用于不含负权边的图.我们把点分成两类,一类是已经确定最短路径的点,称为"白点",另一类是未确定最短路径的点,称为"蓝点"dijkstra的流程如下初始化dis[start]=0,其余节点的dis值为无穷大.找一个dis值最小的蓝点x,把节点x变成白点.遍历x的所
  • 2025-01-18例题_树基础 P5318
    洛谷P5318分析关键词n篇文章m条参考文献引用关系x文章有y参考文献BFS&&DFS结果步骤定义不仅要定义关键词,还要再定义一个容器这里用\(set\)set<int>e[100009];注意要初始化输入输入nmxy这几个关键字计算过程分两步深搜广搜输出先调用函数,在
  • 2025-01-17最短路(floyd,dijkstra,spfa)
    最短路[floyd]思考枚举k作为中转点来进行赋最小值,原转移为a[k][i][j]=min(a[k][i][j],a[k-1][i][k-1],a[k-1][k-1][j]);经空间压缩后为a[i][j]=min(a[i][j],a[i][k]+a[k][j]);注:为多远最短路核心代码:voidfloyd(){ for(intk=1;k<=n;k++){ for(inti=1;i<=n;i++){
  • 2025-01-16Living-Dream 系列笔记 第92期
    最小路径点覆盖在一张DAG上,求一个路径的集合,使得它们两两不相交,且覆盖所有的点。结论:答案即为\(总点数-最大匹配\)(于是\(总点数-最大匹配=总点数-最小点覆盖=最大独立集=最大团=最小路径点覆盖\))。证明:不妨转换角度,从研究路径转为研究点。因为路径两两不交,所以每条路径都
  • 2025-01-16日常训练2025-1-16
    日常训练2025-1-16C.AddZerosrating:1500https://codeforces.com/problemset/problem/2027/C思路(转化为图)我们把公式化成|a|=a_i+i-1,即满足这个公式的位置会给长度加i-1所以相当于从a_i+i-1---->a_i+i-1+i-1建一条有向边,跑一个dfs即可。
  • 2025-01-15最小费用最大流
    #ifdefONLINE_JUDGE#else#defineQiu_Cheng#endif#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;//typedeflonglongll;constintN=5e3+520,mod=1e9+7;constintinf=INT_MAX,INF=0x3f3f3f3f3f;//constintmod1=4697620
  • 2025-01-14Living-Dream 系列笔记 第90期
    鲜花:其实一直想改一下笔记的形式,以一个算法专题作为一篇博文的内容。这个系列到100期就完结吧。二分图最大独立集选择最多的点,使得这个点集中的点互相没有连边。答案显然为\(n-最小点覆盖=n-最大匹配\)(\(n\)为总点数)。但是好像最小点覆盖那一期忘记写了,所以解释一下为什么
  • 2025-01-14旅游巴士
    旅游巴士一看题啥也不会注意到数据点范围,发现有特殊性质ai=0,也就是说,每个景点没有时间限制,所以在分层图上跑BFS最短路就行了。设dis[i][j]为到第i个点时,在时刻t时刻到达,记录为tmodk=j,分为j层。考虑正解,假设现在到达了u号点,在t时刻,要去往点v,开放时间为w,如果现
  • 2025-01-11题解:P2296 [NOIP2014 提高组] 寻找道路
    条件第一步,要能到达\(t\)点,建反图跑一遍。记录哪些点可行。第二步,扫描每个点,若其旁边均为标记过的,说明点的出边所指向的点都直接或间接与终点连通。记录这个点第二次第三步,在原边枚举每条边,若两个节点均被记录了第二次,加入一个新图,否则扔掉。对新图进行BFS即可。代码:#inc
  • 2025-01-11CF1759F题解
    BriefDescription给你一个\(n\)位的\(p\)进制数,第\(i\)位为\(a_i\)。请问最少要让该数加多少次\(1\),可以让数码\(0,\cdots,p−1\)都出现过(包含在中间过程出现)。Solution因为是\(p\)进制,不难发现答案一定不会超过\(p−1\),也就是说在最坏情况下就是其最后一位加至
  • 2025-01-11[ABC311D] Grid Ice Floor
    前言:题解看不懂,太高深了(我太蒻了),于是自己写了一篇。思路:bfs大法,记录新的单次滑倒的中点(撞石头),并记录经过的点,总之还是很简单的。代码:#include<bits/stdc++.h>usingnamespacestd;constintN=210;intn,m;intvis[N][N],cnt[N][N];intdx[4]={0,0,-1,1};intdy[4
  • 2025-01-10P1792 [国家集训队] 种树
    题意:给一个长度为n的环形数组,你要选m个数,满足没有任意两个数的位置相邻,求总和最大。一开始没仔细看数据范围写了个dp暴力,想着枚举第1个点选还是不选两次dp取最大值。(属于痴心妄想)后面自己也是看的题解。我们先贪心选最大的,那么它两边就不可以选了,但有可能选两边比选这个更好,那
  • 2025-01-08蓝桥杯跳蚱蜢-python
    题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。如下图所示:有 9只盘子,排成1个圆圈。其中8只盘子内装着8只蚱蜢,有一个是空盘。我们把这些蚱蜢顺时针编号为1~ 8。每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到
  • 2025-01-03题解:AtCoder [ARC176D] Swap Permutation
    题意原题链接给定一个长度为\(n\)的排列\(p\),并执行以下操作\(m\)次:选择\(1\leqi<j\leqn\),交换\(p_i\)和\(p_j\)。定义一个序列\(p\)的权值为\(\sum_{i=1}^{n-1}|p_i-p_{i-1}|\)。求在\(\binom{n}{2}^m\)种可能的操作后,\(p\)的价值之和。答案对\(998244353\)
  • 2025-01-03日常训练2025-1-3
    日常训练2025-1-3C.Saragarating:1400https://codeforces.com/problemset/problem/2045/C思路(Trick)题目说至少要将缩写拆分成2个非空子串,我们就思考一下分成两个的情况假设一个缩写由三部分组成,为:a+b+c则必须满足,a+b是S的前缀,c是T的后缀,且a是S的前缀,b+
  • 2025-01-03题解:CF2044D Harder Problem
    CF2044DHarderProblem思路构造一个\(1\simn\)都出现了一次的数列(这样每个数都是众数了),然后只要保证在数组\(a\)里面出现了的数在最前面就好了。AC代码#include<bits/stdc++.h>usingnamespacestd;#defineN200005longlongt,vis[N],cnt,n,a[N];intmain(){ cin
  • 2024-12-31Bellman-Ford\SPFA单源最短路算法
    Bellman-Ford单源最短路算法不采用SPFA实现的Bellman-Ford算法"题目中的图没有特殊性质时,若SPFA是标算的一部分,题目不应当给出Bellman–Ford算法无法通过的数据范围"Bellman-Ford的原理如下先枚举节点,在枚举边,每进行一轮循环,对图上所有的边都尝试进行一次松弛操作,当
  • 2024-12-28n皇后问题
    我们首先从第一行开始放,然后对第一个皇后所在的这一行和这一列进行标记,再对四个角的地方进行标记,标记的就是接下来不能放的位置#include<iostream>usingnamespacestd;constintN=15;intans=0;intvis[N][N];//开一个棋盘数组,用来进行标记intn;voiddfs(intdep)/
  • 2024-12-27P11454 [USACO24DEC] 2D Conveyer Belt S
    题目大意详细题目传送门一个\(n\cdotn\)的网格\(a\)。每个网格有传送带。其中L,R,U,D就分别代表把传送带上的物体移动到左右上下方向的格子。如果送出了边界就代表送出去了。然后还有?是代表还没有在这个网格上建传送带。\(Q\)次操作,每一次将\(a_{x,y}\)从原先的?
  • 2024-12-27数据生成器1.0
    开发日志:12.27:根据李煜东小蓝书制作了一款随机数据生成器,目前支持数据类型:A:生成长度为n整数序列。B:生成m个[1,n]的子区间。C:生成一颗n个节点的无向树。D:生成一幅n个节点,m条边的无向图。E:生成一幅n个节点的链,加上m条边。其中,C,D,E可自行决
  • 2024-12-27题解:CF2051C Preparing for the Exam
    CF2051CPreparingfortheExam思路其实莫非就三种情况:所有题目都会:所有试卷也都会。有\(\ge2\)道题目不会:所有试卷都不会。有\(1\)道题目不会:假设这道题目是\(x\),那么遍历数组\(q\)寻找是否有\(q_i=x\),如果有则输出\(1\),否者输出\(0\)。AC代码时间复杂度为
  • 2024-12-25P11331 题解
    blog。写了好几天,人都要死了。提供一个不同的切入口,方便大家理解这个分段是在干嘛,以及一个更容易的线段树DS。题解一堆废话,大家看看就行(\(O(N^3)\)先把\(a_i\ne-1\)且无论如何无法成为前缀max的位置ban掉。由于答案只与premax的位置有关,于是设\(dp_{i,j}\)表示确定