d
  • 2024-09-13Dijkstra求最短路
    Dijkstra求最短路849.Dijkstra求最短路I给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出−1。输入格式第一行包含整数n和m。接下来m行每行包含三个整数x,y,z,表示存
  • 2024-09-09最短编辑距离
    算法1(线性DP)$O(n^2)$1.状态定义f[i][j]:所有将a[1~i]变成b[1~j]的操作方式的操作次数的最小值2.状态计算:如何分类:分类方式一般考虑的是最后一步a的前i个字母,b的前j个字母,共有三种操作;1.删除:a[1到i-1]==b[1到j],删除a[i],即方程为f[i-1][j]+1;2
  • 2024-09-08【算法笔记】三种背包问题——背包 DP
    前言背包(Knapsack)问题是经典的动态规划问题,也很有实际价值。01背包洛谷P2871[USACO07DEC]CharmBraceletSAtCoderEducationalDPContestD-Knapsack1有\(n\)个物品和一个总容量为\(W\)的背包。第\(i\)件物品的重量是\(w_i\),价值是\(v_i\)。求解将哪些物品装入背包
  • 2024-09-08AtCoder Beginner Contest 318 G - Typical Path Problem 题解
    G-TypicalPathProblem题目大意给定一张\(N\)个点、\(M\)条边的简单无向图\(G\)和三个整数\(A,B,C\)。是否存在一条从顶点\(A\)到\(C\),且经过\(B\)的简单路径?数据范围:\(3\leN\le2\times10^5\)\(N-1\leM\le\min(\frac{N(N-1)}2,2\times10^5)\)\(1\leA
  • 2024-09-08AtCoder Beginner Contest 260 A~F 题解
    A-AUniqueLetter题目大意给定一个长度为\(3\)的字符串\(S\)。输出\(S\)中出现正好一次的字母(任意,如abc中,三个字母都可为答案)。如果没有,输出-1。数据保证\(S\)的长为\(3\),且由小写英文字母组成。输入格式\(S\)输出格式输出任意符合条件的答案。样例\(S\)输出
  • 2024-09-08AtCoder Beginner Contest 241 (Sponsored by Panasonic) D~F 题解
    D-SequenceQuery题目大意我们有一个空序列\(A\)。请依次处理\(Q\)个命令,每个命令有三种类型,每种类型的格式如下:1x:将\(x\)加入\(A\)(不去重)2xk:求在\(A\)的\(\lex\)的元素中,第\(k\)大的值。3xk:求在\(A\)的\(\gex\)的元素中,第\(k\)小的值。\(1\leQ\le2\times10^5
  • 2024-09-08AtCoder Beginner Contest 244 D~F 题解
    D-SwapHats题目大意有\(3\)个Takahashi,他们帽子的颜色分别为\(S_1,S_2,S_3\)。我们现在想通过正好\(10^{18}\)次操作,使得\(S_i=T_i\)。每次操作如下:选择\((i,j)\),交换\(S_i\)和\(S_j\)。试问能否达成目标?输入格式\(S_1~S_2~S_3\)\(T_1~T_2~T_3\)输出格式如果能达
  • 2024-09-08最短编辑距离
    算法1(线性DP)$O(n^2)$1.状态定义f[i][j]:所有将a[1~i]变成b[1~j]的操作方式的操作次数的最小值2.状态计算:如何分类:分类方式一般考虑的是最后一步a的前i个字母,b的前j个字母,共有三种操作;1.删除:a[1到i-1]==b[1到j],删除a[i],即方程为f[i-1][j]+1;2
  • 2024-09-08订正
    include<bits/stdc++.h>usingnamespacestd;defineintlonglongintn,m,k;inta[500010];intst;strings;signedmain(){cin>>n>>m;for(inti=0;i<n;i++)a[i]=i+1;for(inti=1;i<=m;i++){cin>>s;intd=0,cur=0;while('0
  • 2024-09-05POJ - 3150
    题解题意:题面很臭很长。大意是,有一个大小为N的环,给出M,K,D,以及N个数。我们进行K次操作,每次操作把距离当前点不超过D的累加到当前点,结果模M。思路:因为要进行K次,每次的原则是一样的,我们可以想到用矩阵来优化,如果i能到达j,把么base[i][j]=1;则结果ans=A(base^K)。但是需要优化,时间复杂
  • 2024-09-04POJ - 3150
    题解题意:题面很臭很长。大意是,有一个大小为N的环,给出M,K,D,以及N个数。我们进行K次操作,每次操作把距离当前点不超过D的累加到当前点,结果模M。思路:因为要进行K次,每次的原则是一样的,我们可以想到用矩阵来优化,如果i能到达j,把么base[i][j]=1;则结果ans=A(base^K)。但是需要优化,时间复杂
  • 2024-09-01浅谈分层图
    #用途-解决一些在带权图中,最多$k$次优惠**一条边权**#基本步骤1.分成$k+1$层,从$0$好开始,每层图与原图一样。其中第$i$层图是用了$i$次优惠到达的图。2.对于所有边,若在第$i$层图中,那么就新连一条边从$u$指向第$n+1$层图的$v$,权值为**优惠的值**。3.
  • 2024-08-31codeforces写题随录 ##1
    菜鸡刷题比赛日记之数学知识相关[https://codeforces.com/contest/2007/problem/C](C.DoraandC++)这题包含加A和加B,此处应该先考虑特殊情况a=b,若不进行如何操作的话,初始答案应该是res=a[n]-a[1](排序之后),然后进行操作,想想该如何最小化极差。为了便于计算,先将数组中每个数字
  • 2024-08-0614. a+aa+...=sum
    题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。代码:#include<stdio.h>#include<stdlib.h>voidtest(){intsum=0;inta;inttemp;intn;scanf("%d%d",&a,&
  • 2024-07-29每日一题- CF1991G
    考场真是困傻了,这都不会横的放左边k列,竖的放上边k行,优先放能消的位置#include<bits/stdc++.h>usingnamespacestd;intt,n,m,k,q,a[105][105];chars[1005];intx[105],y[105];intmain(){ scanf("%d",&t); while(t--){ scanf("%d%d%d%d",&n,&m,&k
  • 2024-07-22luoguP3398 仓鼠找 sugar
    思路图论,最简单的解法:LCA加路径长度判断不等式代码#include<bits/stdc++.h>usingnamespacestd;constintN=100010;intf[N][25],d[N],dis[N],T,n,m,tot,t,ver[2*N],next1[2*N],head[N];queueq;voidadd(intx,inty){ver[++tot]=y;next1[tot]
  • 2024-07-201005:地球人口承载力估计 题解
    题目链接题目描述假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供\(x\)亿人生活\(a\)年,或供\(y\)亿人生活\(b\)年。为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?解题思路经典的牛吃草问题,只是换了一个问法而已。可以戳这里,也
  • 2024-07-20最大矩形(水题)合集???
    前言刷水题,被水题刷。。。悬线法要比单调栈好写的多。P1387最大正方形悬线法#include<bits/stdc++.h>usingnamespacestd;constintN=105;intn,m,a[N][N],l[N][N],r[N][N],up[N][N],ans;intmain(){ scanf("%d%d",&n,&m); for(inti=1;i<=n;i++) for(intj=1
  • 2024-06-09AcWing算法基础课笔记——求最短路算法
    目录朴素dijkstra算法——模板题AcWing849.Dijkstra求最短路I题目代码堆优化版dijkstra——模板题AcWing850.Dijkstra求最短路II题目代码Bellman-Ford算法——模板题AcWing853.有边数限制的最短路题目代码spfa算法(队列优化的Bellman-Ford算法)——
  • 2024-05-30区间和(C++)
    题目描述】给定一个全部为零的数列,规定有两种操作,一是修改某个元素,二是求区间的连续和。【输入】输入数据第一行包含两个正整数n,m(n≤100000,m≤500000) ,以下是m 行,每行有三个正整数k,a,b (k=0 或1,a,b≤n ).k=0 时表示将a 处数字加上b ,k=1 时表示询问区间[a,b
  • 2024-05-29【回溯】洛谷P1135奇怪的电梯
    题目描述呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第 
  • 2024-05-23[USACO06DEC] Wormholes G(spfa判断环)
    [USACO06DEC]WormholesG题目背景英文题面见此链接题目描述John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John的每个农场有m
  • 2024-05-21翻译
    MasteringLPegbyRobertoIerusalimschy(Version1.0)LPegisapattern-matchinglibraryforLua,basedonParsingExpressionGrammars.LPegperformsalltasksofatypicalregexsystem,butitgoeswellbeyondthat.Amongothertasks,wecanwriteentir
  • 2024-05-1920240519刷题总结
    T1(数学化审题)541。观察到其实和最初功率没有关系,功率就是个系数,于是可以把系数提出来。于是定义f[i]为功率为1,i~n最长信息。直接转移就好。#include<iostream>#include<algorithm>#include<cstdio>#include<algorithm>usingnamespacestd;constintN=100010;
  • 2024-04-22分块(板子)
    “优雅的暴力”——分块分块是一种暴力的优化,虽然效率比线段树、树状数组等数据结构低的多\((N+Q)\sqrt{N}\),但是更加灵活。分块的思想是把整个区间分成几个部分,对于要处理的区间包括两个部分“整块”,和区间边缘的“零散块”,“零散块”直接暴力,“整块”进行整体操作即可。