题目如下:示例1输入6412231346000000输出14示例2输入6412231346000020输出1题目链接题解or思路:首先如果我们理解题意了,这个题是顶级诈骗。因为是无向图,我们需要记录图中环的大小&环中的炸弹数所以我们可以使用带权并查集来维护。设:环的大小为:cnt环icnt_{环i}cnt环i环中的炸弹数为:cnt炸icnt_{炸i}cnt炸i最终炸弹数的和为:sumsumsum我们可以分两种情况:最终所有节点的炸弹数为000那么答案就是∑cnt环i∗cnt环i\sumcnt_{环i}*cnt_{环i}∑cnt环i∗cnt环i因为:在同一个连通块中任意一点能到达任意一点
文章目录一、AcWing3956.截断数组(中等)1.实现思路2.实现代码二、AcWing3729.改变数组元素(中等)1.实现思路2.实现代码三、AcWing1460.我在哪?(简单)1.实现思路2.实现代码四、AcWing3768.字符串删减(简单)1.实现思路2.实现代码五、AcWing3777.砖块(简单)1.实现思路2.实现代码一、AcWing3956.截断数组(中等)题目描述给定一个长度为nnn的数组a1,a2,…,ana_{1},a_{2},…,a_{n}a1,a2,…,an。现在,要将该数组从中间截断,得到三个非空子数组。要求,三个子数组内各元素之和都相等。请问,共有多少
蓝桥杯3月刷题集训-A【枚举&模拟】Day3文章目录蓝桥杯3月刷题集训-A【枚举&模拟】Day3一、扫雷二、含2天数一、扫雷我们首先读取输入中的方格图,将其保存在一个二维数组grid中。然后,遍历方格图中的每一个方格,对于每个空白方格,遍历其周围八个方格,统计其中地雷的数量,输出结果;对于每个有地雷的方格,直接输出9。在输出时,每一行输出结束后需要换行,以便下一行的输出。#读取输入,n行m列的方格图n,m=map(int,input().split())grid=[]foriinrange(n):row=list(map(int,input().split()))grid.append(row
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴二分查找哈希表一、题目1、原题链接1460.我在哪?2、题目描述农夫约翰出门沿着马路散步,但是他现在发现自己可能迷路了!沿路有一排共N个农场。不幸的是农场并没有编号,这使得约翰难以分辨他在这条路上所处的位置。然而,每个农场都沿路设有一个彩色的邮箱,所以约翰希望能够通过查看最近的几个邮箱的颜色来唯一确定他所在的位置。每个邮箱的颜色用A…Z之间的一个字母来指定,所以沿着道路的N个邮箱的序列可以用一个长为N的由字母A…Z组成的字符串来表示。某些邮箱可能会有相同的颜色。约翰想要知道最小的K的值,使得他
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴一维差分区间合并一、题目1、原题链接3729.改变数组元素2、题目描述给定一个空数组V和一个整数数组a1,a2,…,an。现在要对数组V进行n次操作。第i次操作的具体流程如下:从数组V尾部插入整数0。将位于数组V末尾的ai个元素都变为1(已经是1的不予理会)。注意:ai可能为0,即不做任何改变。ai可能大于目前数组V所包含的元素个数,此时视为将数组内所有元素变为1。请你输出所有操作完成后的数组V。输入格式第一行包含整数T,表示共有T组测试数据。每组数据第一行包含整数n。第二行包含n个整数a1,
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴树状数组一、题目1、原题链接3662.最大上升子序列和2、题目描述给定一个长度为n的整数序列a1,a2,…,an。请你选出一个该序列的严格上升子序列,要求所选子序列的各元素之和尽可能大。请问这个最大值是多少?输入格式第一行包含整数n。第二行包含n个整数a1,a2,…,an。输出格式输出最大的上升子序列和。数据范围对于前三个测试点,1≤n≤4。对于全部测试点,1≤n≤105,1≤ai≤109。输入样例1:210040输出样例1:100输入样例2:419710输出样例2:20样例解释*对于样例1,
今天我们先来讲一下状态压缩dp(也称状压dp)。状压dp,顾名思义,就是把状态压缩起来。比如对于8*8的棋盘,每个位置可以放一个棋子,对于在第i行第2个位置和第6个位置放了棋子,我们可能需要8维或9维数组表示。因此我们就有了把一行状态压缩成一个数字的做法。一般我们会转化为二进制,如果每个位置可以有3种状态,那我们可以采用三进制。这样只需要一个大小为2^8的一维数组我们就可以存下所有状态,这就是状态压缩。eg1•现在有n*m的方格棋盘,和无限的1*2的骨牌,问有多少种方法能用骨牌铺满棋盘。•1m) { return; } if(i==m) { ++tot; from[tot]=pr
今天我们先来讲一下状态压缩dp(也称状压dp)。状压dp,顾名思义,就是把状态压缩起来。比如对于8*8的棋盘,每个位置可以放一个棋子,对于在第i行第2个位置和第6个位置放了棋子,我们可能需要8维或9维数组表示。因此我们就有了把一行状态压缩成一个数字的做法。一般我们会转化为二进制,如果每个位置可以有3种状态,那我们可以采用三进制。这样只需要一个大小为2^8的一维数组我们就可以存下所有状态,这就是状态压缩。eg1•现在有n*m的方格棋盘,和无限的1*2的骨牌,问有多少种方法能用骨牌铺满棋盘。•1m) { return; } if(i==m) { ++tot; from[tot]=pr
文章目录第一题AcWing4870.装物品一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第二题AcWing4871.最早时刻一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第三题AcWing4872.最短路之和一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第一题AcWing4870.装物品一、题目1、原题链接4870.装物品2、题目描述已知,每个背包最多可以装5件物品。请你计算,要装下x件物品最少需要多少个背包。输入格式一个整数x。输出格式一个整数,表示所需背包的最少数量。数据范围所有测试
文章目录第一题AcWing4870.装物品一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第二题AcWing4871.最早时刻一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第三题AcWing4872.最短路之和一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第一题AcWing4870.装物品一、题目1、原题链接4870.装物品2、题目描述已知,每个背包最多可以装5件物品。请你计算,要装下x件物品最少需要多少个背包。输入格式一个整数x。输出格式一个整数,表示所需背包的最少数量。数据范围所有测试