百练专题

道路 Road(百练,POJ)

题目链接: 1724 -- ROADS (poj.org) 题目描述: 思路: 这题目乍一看,是一个含有2个标尺的单源最短路问题,挺难处理的。 既然没法直接用最短路处理,那我们就“记录信息”,将花费的时间也记录进dp数组,然后跑“状态最短路”。 用f[i][j] 表示到达点i 且 总花费时间为j的最短距离,然后跑堆优化的dijkstra算法就好。由于不含有负边权,因此可以搞一个vis数

Wireless Network(百练,POJ)

题目链接: http://bailian.openjudge.cn/tm2019/F/ 2236 -- Wireless Network 题面描述: 思路: 这题开了10s,所以可以暴力点,每次修复一个点,就将该点相连的那些边建出来,总的时间复杂度为: O(nm)。关键在于如何判定两个点是否是连通的。 刚开始我直接暴力DFS,发现T了,可能是用了DFS之后导致整个题的常数有点大。

百练--2746 -- 约瑟夫问题

2746:约瑟夫问题 总时间限制:  1000ms  内存限制:  65536kB 描述 约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。 输入 每行是用空格分开

贪心(百练1328):安放雷达(区间问题)

总时间限制: 1000ms 内存限制: 65536kB 描述 Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And

并查集求解百练2790:迷宫

并查集(union-find sets)求解:百练 2790 迷宫 http://bailian.openjudge.cn/practice/2790 描述 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四

百练 4116 拯救行动(bfs)

描述 公主被恶人抓走,被关押在牢房的某个地方。牢房用N*M (N, M <= 200)的矩阵来表示。矩阵中的每项可以代表道路(@)、墙壁(#)、和守卫(x)。英勇的骑士(r)决定孤身一人去拯救公主(a)。我们假设拯救成功的表示是“骑士到达了公主所在的位置”。由于在通往公主所在位置的道路中可能遇到守卫,骑士一旦遇到守卫,必须杀死守卫才能继续前进。现假设骑士可以向上、下、左、右四个方向移动,每移

贪心算法-(百练)1083:Moving Tables

描述 The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in the following figure. The floor has 200 rooms each on the north side and south side along the c

踩方格(百练 4982 深搜)

踩方格 查看提交统计提示提问 总时间限制:  1000ms   内存限制:  65536kB 描述 有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设: a.    每走一步时,只能从当前方格移动一格,走到某个相邻的方格上; b.    走过的格子立即塌陷无法再走第二次; c.    只能向北、东、西三个方向走; 请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要

【Python百练——第4练】简易的管理菜单系统

💐作者:insist-- 💐个人主页:insist-- 的个人主页 理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里 ❤️欢迎点赞👍收藏📁评论📒 目录 一、题目和要求 1. 题目 2. 要求 二、实现程序的思路 三、代码如下 前言 今天的练习题中,你将作为一名餐厅经理,负责管理餐厅的菜单。你需要使用Py

百练oj:最佳加法表达式,超过了long long范围,用自定义Bigint类解决

题目链接:http://cxsjsxmooc.openjudge.cn/2021t2summer/014/ 按照老师的思路写了代码,思路详见代码注释 #include <bits/stdc++.h>#define mem(a, n) memset(a, n, sizeof(a))#define max_len 52 //bigint类中最多储存位数+1using namespace std

【Python 百练成钢】卡片游戏、铁轨问题、移动小球

文章目录 前言1.卡片游戏🏄‍♂️问题描述🪐问题分析🪐代码实现🪐 2.铁轨问题🏊‍♂️问题描述🪐问题分析🪐代码实现🪐 3.移动小球🏋️‍♂️问题描述🪐问题分析🪐代码实现🪐 ฅʕ•̫͡•ʔฅ 前言 两日不见,超级想念🤡。由于在学校比较忙停更了两天,但是算法题还是在继续写的🤥。今天分享一下在与队列栈相关的算法题。在Python中是没有内置的栈结构的,不像

百练-3723围棋

原文 描述围棋的棋盘上有19*19条线交织成的361个交点,黑棋和白棋可以下在交点上。我们称这些交点为“目”。 一个目的上下左右四个方向,称之为“气”,如果一个目的四个方向都被某一种颜色的棋子占据,那么即使这个目上并没有棋子,仍然认为这个目被该颜色棋子占据。 如下图中,四个黑棋中心的交点,由于被黑棋包围,因此我们认为这个目属于黑棋, 黑棋拥有4+1=5目 在棋盘的

大数减法(百练ID2736)

描述 求两个大的正整数相减的差。 输入 共2行,第1行是被减数a,第2行是减数b (a > b) 。每个大整数不超过200位,不会有多余的前导零。 输出 一行,即所求的差。 样例输入 99999999999999999999999999999999999999999999999999 #include<iostream>#include<string>#include<c

括号匹配问题(百练ID3704)

描述 在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注. 输入 输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母, 字符串

大整数加法(百练ID2981)

描述 求两个不超过200位的非负整数的和。 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。 输出 一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。 样例输入 2222222222222222222233333333333333333333 样例输出 55555555555555555555 #in