自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 NEUQACM预备队必做题第十周

把所有的仇敌关系按从大到小排序依次处理,把敌人的敌人合并到一起。如果发现一对仇敌已经在同一个集合里则输出他们的怨气值并结束。思路:把所有的行和所有的列看成二分图的两部分,每一个矩阵上的黑格代表所处的行和列可以匹配。只有在最大匹配数为n时,游戏才有解。思路:匈牙利算法模板。

2023-12-17 21:54:48 346 1

原创 NEUQACM预备队第九周必做题

思路:bfs,将河蟹全部放在奇数步的位置或者全部放在偶数步的位置,然后检查每一条边,如果边的两端都有或都没有河蟹则impossible。思路:反向建边,按编号从大到小顺序作为起点进行搜索,并且每次搜索不需要清空vis数组,访问一个点时直接将其答案更新为当前起点编号。思路:用Tarjan算法找出所有的割点,再对每一个割点判断其是否将给出的两个点分割。思路:每过一天就用修好的村庄更新所有村庄的最短路径,直到所询问的天数。

2023-12-10 21:57:28 334 1

原创 NEUQACM预备队第八周必做题

思路:用两个vis数组分别表示本次搜索中已被访问过的节点和本次搜索开始之前已被访问过的节点。搜索时如果遇到本次搜索前已被访问的节点,则直接退出;如果遇到本次搜索时访问过的节点,则用此时的步数减去当时的步数得到环的长度。每次更新时把当前所访问的节点和最短距离放入优先队列,每次取出堆顶即距离最短的节点作为起点。思路:在dijikstra的基础上加一个记录最短路数量的数组ans,把ans[1]初始化为1,更新最短距离时令此处的最短路数量等于上一个节点的最短路数量,如果最短距离相等则加上上一个节点的最短路数量。

2023-12-05 16:16:17 377 1

原创 NEUQACM预备队必做题第七周

思路:遍历所有数字,遇到非0数字则从这里开始搜索,把搜索到的非0数字都改成0,搜索的次数就是答案。思路:dfs,因为找到一次就可以直接退出所以不需要回溯。思路:dfs+回溯,用位运算优化防超时。思路:dfs模板,需要回溯。

2023-11-25 17:14:23 318

原创 NEUQ-ACM预备队必做题第六周

先把起始状态(位置为起点,step为0)入队,然后不断访问队首元素,把下一步能到达的且未访问的楼层都入队,step加1,并将队首出队,直到访问到目标楼层或队列为空(搜索完了,无法到达)。思路:依然是bfs。先把所有格子初始化为-1,每次访问到一个格子就记录下此时的step,直到队列为空。思路:逆向思维,被围住的0不好搜,搜索没有被围住的0。开一个大一圈的二维数组并且周围都为0,方便bfs。思路:并查集+路径压缩。把能联通的洞都合并到一棵树里,然后直接遍历查询是否有能联通上下表面的树。

2023-11-17 22:35:46 50 1

原创 NEUQACM预备队必做题第五周

思路:对于每一种物品,考虑剩余任何容量大小时是否放入该物品,即取该容量下无此物品时的最大价值(dp[j][i-1])和去掉该物品所占体积后的最大价值与该物品的价值的和(dp[j-a[i]][i-1]+b[i])的较大值。思路:对于可观看次数大于1的樱花,将其分解为1次,2次,4次.。对于每一种物品,由于可以无限放置,在遍历容量时从小往大遍历,并且比较时与本行比较,不退回到上一种物品。思路:由于每种物体只有一个,遍历容量时从大往小遍历,相当于比较时与不包含该物体时的情况比较。

2023-11-08 22:48:51 32 1

原创 NEUQACM预备队必做题第四周

思路: 易知对于只有一个数的数列来说包含该数的最长上升序列长度为1,那么每新增一个数,遍历它前面所有小于它的数,将包含其的最长上升序列长度最大的加上1得到包含新数的最长上升序列长度,若前面没有小于它的数则记为1。思路:用二维数组构造一个坐标系,将左边界和上边界的值记为1,然后按从左到右,从上到下的顺序遍历二维数组,将不可进入的点的值记为0,其他点的值为左边一点的值加上上面一点的值。最后输出目标点的值。思路:取第一个数与0的较大者为a(1),对之后的第i个数,取其与a(i-1)的和与0的较大者为a(i)。

2023-10-31 15:11:02 35 1

原创 NEUQ-ACM预备队必做题第三周

思路:设最后一个输出的数是k,则序列的总数等于k前的k-1个数的输出序列数与k后的n-k个数的输出序列数的乘积,而序列中的n个数都可以被最后一个输出,所以输出序列数符合卡特兰数的特征。用卡特兰数公式c(2n,n)/(n+1)求解。最后一步上k个台阶的方式数的总和再加1,用循环得出结果。当n>k时,遍历n前的k个情况累加。思路:n=2与n=3等价,n=4与n=5等价。当n为1时,显然结果为1。之后每当n增加1时,增加了在第二位放置(n+1)/2的选择,因此f(n+1)=f(n)+f((n+1)/2)。

2023-10-26 20:44:47 34

原创 NEUQACM预备队第二周必做题

思路:首先,两个士兵相遇后各自掉头跟穿透过去没有区别。假设所有士兵都能穿透,则最小时间为每个士兵离开独木桥的最小时间的最大时间;最大时间为两端两名士兵走到对面的时间较大的一个。(至于特殊情况,直接打表)思路:因为第一堆只能与第二堆移动,因此可以直接用第二堆的书使第一堆变为平均数(假设一堆书的数量可以为负数),然后将第二堆视作第一堆。思路:按接水所需时间由小到大排序,用结构体储存每个人的序号。思路:贪心算法,每次选择结束得最早的可参加的比赛参加。

2023-10-17 21:16:11 35

原创 NEUQ-ACM预备队第一周必做题

思路:将要搜索的数与搜索范围内中间数(序号为左端点与右端点序号的平均数向下取整)比较,如大于则将搜索范围的左端点序号改为中间序号加一,否则将搜索范围的右端点序号改为中间序号。当中间序号与左端点序号相等时,若搜索数等于中间数,则输出中间序号;思路:先将输入的数排序,再将相邻两数的差传入数组b,再将最大的差的所有因数依次传入数组c,再从最大的因数(即最大的差本身)开始遍历数组c,判断是否能整除数组b中所有的数,能则结束遍历,得到最短等差数列的公差,最后计算并输出最短等差数列的长度。思路:先将输入的坐标排序。

2023-10-10 17:08:43 67 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除