- 博客(52)
- 收藏
- 关注
原创 最短路,分层图 1266
这种思路还可以处理这样的问题:我们可以最多让k条边的权值为0,求最短路,那么dis[i][j]就是记录从源点到i点用了j次使权值为0的最小边权和。对于这种有限制的最短路题,我们可以采用打表的思路,记录dis[i][j]是从源点到i点速度为j的最短时间,这就是分层图,将情况分类讨论。
2023-05-21 14:44:34
61
原创 1462
于是我们二分费用值,每次只能走小于等于该值的城市,注意如果这个值比起点或终点还小就可以直接输出afk,然后我们只要检查每次走到n点所需的最小血量和血量的大小关系就可以了。看到“最多的费用的最小值”,再结合单调性,可以确定二分答案。链式前向星可以处理重边。
2023-05-19 23:13:50
58
原创 新型城市化 3731
首先考虑求出二分图的左侧点和右侧点,然后源点向左侧点连边,汇点和右侧点连边,然后从左到右连边,跑一边最大流,求出最大匹配。所以我们可以把问题扔到最大匹配上面了。让最大团变大也就是让最大匹配变小。什么情况下最大匹配会变小?原图最大团=补图最大独立集=总点数-补图最小点覆盖=总点数-补图最大匹配数。先明确概念:什么是最大团,补图,最大独立集,最大团,最小点覆盖。下面问题转化为如何求二分图匹配的必须边。这个题问的是,删去哪些边可以使最大独立集变大。于是在残量网络上面跑 tarjan 即可。
2023-05-19 19:31:37
60
原创 种类并查集 luogu1525 2024
带权并查集是权值并查集的分支,对这个题而言,我们要将人分成两部分,保证每一部分的内部的边的最大权值尽可能的小,从贪心的角度考虑,我们肯定是从大权值向小权值遍历,尽可能的将大权值的端点分离,当遇到第一个,必须得在一部分的边就是答案。那么我们如何理解这个带权并查集呢。遍历边时我们先看端点x,y是不是已经在同一监狱了,如果不在,那么有两种可能,第一就是x在a监狱,y在b监狱,相连;这个题要读明白题意,就是a是b的天敌,c是a的天敌,能推导出c是b的猎物。开两倍空间,1~n是a监狱,n+1~2*n是b监狱。
2023-05-18 17:21:30
62
原创 P3092 [USACO13NOV]No Change G 状压dp
思路:dp[i] 表示使用状态i的硬币能买到的最多物品数,然后寻找比i状态多用一个硬币的 下一个状态 也就是状态 i&(1<<j) 进行转移。
2023-05-12 23:55:49
109
原创 字符串哈希 判断回文串,相反串
题意大致是:给你一个n (小于 3e5),表示字串长度,再把这个字符串 s 给你。要求把这个字符串分成四份,第四份必须是一个回文串,第一份的正序和第三份的逆序必须相等,求第二份的最短长度,每一份都可以是一个空字符串。思路大致是,用字符串哈希判断第四串是不是回文,如果是,就二分的查找前面的一三串,时间复杂度O(NlogN)。
2023-05-09 11:55:25
237
原创 2022蓝桥杯国赛,机房,最近公共祖先lca,倍增,tarjan,树链剖分板子。
【代码】2022蓝桥杯国赛,机房,最近公共祖先lca,倍增,tarjan,树链剖分板子。
2023-05-05 17:12:42
113
原创 推导部分和,python,蓝桥杯,并查集
其中第 i 个部分和是下标 li 到 ri 的部分和 ∑j=liri=Ali+Ali+1+⋯+Ari, 值是 Si。对于一个长度为 N 的整数数列 A1,A2,⋯AN, 小蓝想知道下标 l 到 r 的部分和 ∑i=lr=Al+Al+1+⋯+Ar 是多少?对于所有评测用例, 1≤N,M,Q≤105,−1012≤Si≤1012,1≤li≤ri≤N。对于 60%60% 的评测用例, 1≤N,M,Q≤10000,−109≤Si≤109。
2023-04-07 13:39:29
72
原创 第八大奇迹,python,蓝桥杯,线段树,树套树
或者第k大呢,k是变的,这样就只能用树状数组套线段树了,但是python这个语言效率和空间的使用实在是,难崩。我把node类删了,换成了数组,不然光初始化10e5*40的tree数组就得2s,就是这样还是只能过50%。思路:本质上是动态区间求第k大问题,由于k被固定且很小,所以最朴素的算法是线段树维护区间前八大的值。别不信邪,我用cpp分别写了朴素线段树和树套树,都能ac,但是你们看时空效率。一言难尽,树状数组套线段树多么精美的算法到python这成了fv,还不如维护一个朴素的线段树好用。
2023-04-05 01:16:33
119
原创 估计人数蓝桥杯python匈牙利算法
思路:想做图论,不想天天线段树,就去搜了题,这个正好见过,可相交的最小路径覆盖,建图跑匈牙利就可以了,匈牙利也很简单,就一个深搜,数据规模二百,也不用任何优化。当然二分图还有一个km算法也很重要,就是匈牙利的加强版。ps:不相交的话,就把弗洛伊德那一段代码删了就是答案。
2023-04-03 21:46:50
126
原创 最优包含蓝桥杯python线性dp
否则 dp[i][j]=min(dp[i-1][j],dp[i-1][j-1],dp[i][j-1]) 依次对应的操作是删除,修改,插入。如果s[i]==t[j] 则dp[i][j]=min(dp[i-1][j-1]-1,dp[i][j])如果s[i]==t[j] 则dp[i][j]=min(dp[i-1][j-1]-1,dp[i][j])否则 dp[i][j]=min(dp[i-1][j-1],dp[i][j-1])初始化所有dp[i][j] = 目标串的长度。编辑距离的转移方程是。
2023-04-03 19:55:09
171
原创 取球游戏蓝桥杯python简单博弈sg函数
每个人从盒子中取出的球的数目必须是:1,3,7 或者 8 个。轮到某一方取球时不能弃权!今盒子里有 n 个小球,A、B 两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A 是否能赢?然后是 n 个整数,每个占一行(整数<10e4),表示初始球数。程序则输出 n 行,表示 A 的输赢情况(输为 0,赢为 1)。先是一个整数 n (n<100),表示接下来有 n 个整数。
2023-04-03 14:50:19
227
原创 高僧斗法,蓝桥杯,python,简单博弈
两位参加游戏的法师分别指挥某个小和尚向上走任意多级的台阶,但会被站在高级台阶上的小和尚阻挡,不能越过。输入数据为一行用空格分开的 N 个整数,表示小和尚的位置。台阶序号从 1 算起,所以最后一个小和尚的位置即是台阶的总数。输出为一行用空格分开的两个整数: A,B,表示把 A 位置的小和尚移动到 B 位置。若有多个解,输出 A 值较小的解,若无解则输出 -1。仪式结束后,有时会有"高僧斗法"的趣味节目,以舒缓压抑的气氛。对于已知的台阶数和小和尚的分布位置,请你计算先发指令的法师该如何决策才能保证胜出。
2023-04-03 14:19:49
62
原创 作物杂交,搜索,蓝桥杯,python
思路:这个题不难,主要是别被绕住,考虑使用一个未知种子的其中一个获得方案(i+j->x),去获得该种子,其时间是,获得时间max(i,j)+生长时间max(i,j),再在不同方案中取最小就可以了。输入的第 1 行包含 4 个整数 N,M,K,T,N 表示作物种类总数 (编号 1 至 N),M 表示初始拥有的作物种子类型数量,K 表示可以杂交的方案数,T 表示目标种子的编号。第 1 天至第 5 天,将编号 1 与编号 2 的作物杂交,得到编号 3 的作物种子。输出一个整数,表示得到目标种子的最短杂交时间。
2023-04-02 18:32:52
129
原创 蓝桥杯最长不下降子序列,线段树python
给定一个长度为 N 的整数序列: A1,A2,⋯,AN。请你计算如何修改可以使修改后的数 列的最长不下降子序列最长, 请输出这个最长的长度。最长不下降子序列是指序列中的一个子序列, 子序列中的每个数不小于在 它之前的数。对于所有评测用例,1≤K≤N≤105,1≤Ai≤106。对于 50%50% 的评测用例, 1≤K≤N≤10000;对于 30%30% 的评测用例, 1≤K≤N≤1000;第二行包含 N 个整数 A1,A2,⋯,AN。对于 20%20% 的评测用例, 1≤K≤N≤100;
2023-04-02 14:36:10
939
原创 重新排序线段树python
【评测用例规模与约定】 对于 30% 的评测用例,n, m ≤ 50;对于所有评测用例,1 ≤ n, m ≤ 105,1 ≤ Ai ≤ 106,1 ≤ Li ≤ Ri ≤ 106。第二行包含 n 个整数 A1, A2, · · · , An,相邻两个整数之间用一个空格分隔。接下来 m 行,每行包含两个整数 Li、Ri ,相邻两个整数之间用一个空格分 隔。【样例说明】 原来的和为 6 + 14 = 20,重新排列为 (1, 4, 5, 2, 3) 后和为 10 + 14 = 24,增 加了 4。
2023-04-01 13:28:02
53
原创 蓝桥杯修改数组python 并查集
当修改 Ai 时,小明会检查 Ai 是否在A1 ∼ Ai−1 中出现过。如果新的 Ai 仍在之前出现过,小明会持续给 Ai 加 1 ,直 到 Ai 没有在 A1 ∼Ai−1 中出现过。给定一个长度为 N 的数组 A=[A1,A2,⋅⋅⋅,AN],数组中有可能有重复出现的整数。小明会依次修改A2,A3,⋅⋅⋅,AN。输出 N 个整数,依次是最终的A1,A2,⋅⋅⋅,AN。第二行包含N 个整数 A1,A2,⋅⋅⋅,AN。其中,1≤N≤10e5,1≤Ai≤10e6。
2023-03-31 18:03:23
41
原创 李白打酒加强版 蓝桥杯 线性dp python
思路,dp[i][j][k]表示到第i个地方经过了j个花,壶里有k 点酒的情况数量。请你计算李白这一路遇到店和花的顺序, 有多少种不同的可能?对于 100%100% 的评测用例:1≤N,M≤100。这一路上, 他一共遇到店 N 次, 遇到花 M 次。对于 40%40% 的评测用例: 1≤N,M≤10。话说大诗人李白, 一生好饮。没注意要求最后一个必须是花,调了十好几分钟。显里没酒 ( 0 斗) 时遇店是合法的。一天, 他提着酒显, 从家里出来,但是没酒时遇 花是不合法的。逢店加一倍, 遇花喝一斗。
2023-03-31 17:16:59
417
2
原创 蓝桥杯字串分值和,python
思路:一开始我是对着这个示例进行模拟,没发现什么规律,然后我考虑每种字符如何对答案产生贡献,发现每种字符的贡献就是考虑这个字符在字串中作为第一个子串和中间字串(很明显,我只需统计每个字符在字串中作为第一个子串(黑色串)和中间字串(包括末尾)(蓝色串)出现的次数能保证不多不漏。包括末尾)出现的次数。举个例子 ababa。
2023-03-31 16:28:32
143
原创 厕所杯寻找整数,扩展中国剩余,python
扩展中国剩余的板子题,一是自己没用过python写exgcd,也不是很明确python在除法过程中的隐藏的类型转换,最重要的是一个模数写错了,导致一直不对(sb厕所杯!有一个不超过 10e17 的正整数 n,知道这个数除以 2 至 49 后的余数如下表所示,求这个正整数最小是多少。
2023-03-31 13:09:29
135
原创 全排列的价值蓝桥杯python
这个题我用dp的思路想了好长时间,没看懂,突然看到了大佬的解法,很神奇,从每一位期望的角度统计贡献,很厉害,当然大佬用快速幂求逆元确实有些慢了,我来写一下用扩欧求逆元。原文链接:https://blog.youkuaiyun.com/qq_45351872/article/details/124478888。40 分数据 n < 20 ,70 分数据 n < 5000 ,100 分数据 n < 1 0e6。
2023-03-31 10:43:38
165
原创 全球变暖python,简单bfs,蓝桥杯
由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。思路:bfs,我记得去年写这个题只写了80%,今年再看,是我当时太菜了。请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。照片保证第1行、第1列、第N行、第N列的像素都是海洋。以下N行N列代表一张海域照片。
2023-03-30 13:17:53
82
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人