- 博客(30)
- 收藏
- 关注
原创 东华OJ 进阶84 发现环(dfs)
如想要访问节点正在被访问,说明有环,环为想要访问的节点 至 现在所在的节点,myPrint的逻辑是先找到path中想要访问的节点(环的头部),然后把path之后的元素排序用set输出。(查了ds..) 用dfs,用arr记录访问状态 0 1 2 未访问 正在访问 已访问,path记录路径,dfs两个参数k,fa 是访问结点和节点父亲(两个节点不成环)对于100%的数据, 1 <= N <= 100000, 1 <= a, b <= N。按从小到大的顺序输出在环路上的电脑的编号,中间由一个空格分隔。
2026-03-02 10:24:27
144
原创 东华OJ 进阶83 拉马车(简单题)
当轮到B出牌时,他的牌K与桌上的纸牌序列中的K相同,则把包括K在内的以及两个K之间的纸牌都赢回来,放入自己牌的队尾。B方:[Q, 6, K, 4, K, X, 7, 8, 2, K, 5, A, J, K, 5]B方:[5, J, 5, Q, 6, K, 4, K, X, 7, 8, 2, K]赢牌的一方继续出牌。也就是B接着出5,A出K,B出J,A出A,B出5,又赢牌了。A方:[K, 8, X, K, A, 2, A, 9, 5, A]B方:[2, 7, K, 5, J, 5, Q, 6, K, 4]
2026-03-01 21:05:40
226
原创 东华OJ 进阶79 正则问题
例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。建立一个栈,不是“)”就入栈,碰到“)”出栈,下面的代码在洛谷上可以AC,但是在东华过不了。一个由x()|组成的正则表达式。输入长度不超过100,保证合法。小明想求出这个正则表达式能接受的最长字符串的长度。这种不是很常规的dfs写法 我的呆脑子确实很难想。只由 x ( ) | 组成的正则表达式。这个正则表达式能接受的最长字符串的长度。章节: 基本练习(字符串)
2026-03-01 19:00:18
120
原创 东华OJ 进阶80 分巧克力
可能存在多个边长都能切出K块,而更大的边长也可能满足条件(例如两块10×10的巧克力,K=8时,边长4和5都能切出8块,但最大边长应为5)。为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。当然小朋友们都希望得到的巧克力尽可能大,你能帮小Hi计算出最大的边长是多少么?例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。(1 <= N, K <= 100000)输出切出的正方形巧克力最大可能的边长。
2026-02-27 10:32:27
242
原创 东华OJ 进阶82 九宫幻方
现在小明准备将一个三阶幻方(不一定是上图中的那个)中的一些数抹掉,交给邻居家的小朋友来进行还原,并且希望她能够判断出究竟是不是只有一个解。小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。三阶幻方又被称作九宫格,在小学奥数里有一句非常有名的口诀:“二四为肩,六八为足,左三右七,戴九履一,五居其中”,通过这样的一句口诀就能够非常完美的构造出一个九宫格来。章节: 深度优先搜索。
2026-02-25 15:54:00
235
原创 东华OJ 进阶62 剪格子
本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。记录已经选择的格子selected,在每一次搜索中找到可以选择但是没有选择的格子,然后搜索这些格子。网上去找AC代码,OJ上是能过的,但是我感觉从一开始的思路就是错的。输出一个整数,表示在所有解中,包含左上角的分割区可能包含的最小的格子数目。如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60。
2026-02-25 14:55:43
256
原创 东华OJ 进阶74 地宫取宝
dp[x][y][maxx][num]代表在x,y位置,已有宝藏最大值为maxx-1,已有宝藏num个的情况下,到达终点符合规定的方法。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。每个格子放一件宝贝。输入一行3个整数,用空格分开:n m k (1<=n,m<=50, 1<=k<=12)所以在终点处,可能的方法 1.不拿 原来的宝藏有k个 2.拿 原来的宝藏有k-1个。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝。
2026-02-23 18:15:25
189
原创 东华OJ 进阶30 盾神与砝码称重
有一天,他在宿舍里无意中发现了一个天平!这个天平很奇怪,有n个完好的砝码,但是没有游码。于是他准备去称一称自己的东西。他准备好了m种物品去称。神奇的是,盾神一早就知道这m种物品的重量,他现在是想看看这个天平能不能称出这些物品出来。但是盾神稍微想了1秒钟以后就觉得这个问题太难了,于是就丢给了你。输出m行,对于第i行,如果第i个物品能被称出,输出YES否则输出NO。第二行为n个数,表示这n个砝码的重量。第三行为m个数,表示这m个物品的重量。第一行为两个数,n和m。,用他的剪枝办法终于AC了。
2026-02-22 10:16:38
249
原创 东华OJ 进阶17 棋盘多项式
变换一下棋子,还可以有八车问题,八马问题,八兵问题,八王问题,注意别念反。在这道题里,棋子换成车,同时棋盘也得换,确切说,是进行一些改造。比如现在有一张n*n的棋盘,我们在一些格子上抠几个洞,这些洞自然不能放棋子了,会漏下去的。与普通的皇后问题不同,由于有洞的存在,在棋盘的同一行中可能放置多个棋子,所以只能一个格子一个格子尝试,不能和传统的一排一排搜索。此题,给你棋盘的规模n,以及挖洞情况,求放k个车的方案数(k从0到最多可放车数)接下来n行,每行n个用空格隔开的数字0或1,0的形状表示洞,1表示没有洞。
2026-02-19 09:52:51
141
原创 东华OJ 进阶16 8皇后改
规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大。棋盘上的数字范围0~99。章节: 深度优先搜索。所能得到的最大数字和。
2026-02-19 09:47:05
119
原创 东华OJ 进阶13 2n皇后
给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。说明:同一条对角线是指包括两条主对角线的所有对角线,n=5时的棋盘从左上往右下有9条对角线,从右上往左下也有9条对角线。输入的第一行为一个整数n,表示棋盘的大小。章节: 深度优先搜索。
2026-02-18 16:29:08
168
原创 东华OJ 进阶71 城市建设
对于100%的数据,1 <= n <= 10000,1 <= m <= 100000,-1000<=c<=1000,-1<=w_i<=1000,w_i≠0。栋栋拿到了允许建设的道路的信息,包括每条可以建设的道路的花费,以及哪些地点可以建设码头和建设码头的花费。对于50%的数据,1<=n<=100,1<=m<=1000,-50<=c<=50,w_i<=50;对于20%的数据,1<=n<=10,1<=m<=20,0<=c<=20,w_i<=20;建设第2、3、4条道路,在地点4、5建设码头,总的花费为9。
2026-02-18 10:08:36
407
原创 东华OJ 进阶65 大臣的旅费
聪明的J发现,如果不在某个城市停下来修整,在连续行进过程中,他所花的路费与他已走过的距离有关,在走第x千米到第x+1千米这一千米中(x是整数),他花费的路费是x+10这么多。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。J大臣想知道:他从某一个城市出发,中间不休息,到达另一个城市,所有可能花费的路费中最多是多少呢?输入的第一行包含一个整数n,表示包括首都在内的T王国的城市数。输出一个整数,表示大臣J最多花费的路费是多少。
2026-02-17 11:00:11
407
原创 东华OJ 进阶57 危险系数
y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。输入数据第一行包含2个整数n(2 <= n <= 1000), m(0 <= m <= 2000),分别代表站点数,通道数;但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。接下来m行,每行两个整数 u,v (1 <= u, v <= n;最后1行,两个数u,v,代表询问两点之间的危险系数DF(u, v)。
2026-02-16 09:29:44
167
原创 东华OJ 进阶56 网络寻路
节点间的通信是双向的。但注意,路径是有方向的:如果中间边是 (B,C),那么方向是 B→C。如果中间边是 (C,B),则对应另一类路径 A'→C→B→D'。总路径数=∑每条边 (u,v)2×(deg(u)−1)×(deg(v)−1)总路径数=每条边 (u,v)∑2×(deg(u)−1)×(deg(v)−1)接下去有M行,每行为两个整数 u 和 v,表示节点u 和 v 联通(1<=u,v<=N , u!枚举每一条无向边作为“中间边”,即路径中的 (B,C)。边 (A,B)、(B,C)、(C,D) 均存在。
2026-02-16 08:01:24
384
原创 东华OJ 进阶55 九宫重排(BFS)
如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。如果无论多少步都无法到达,则输出-1。显然是按从上到下,从左到右的顺序记录数字,空格记为句点。我们把第一个图的局面记为:12345678.输入第一行包含九宫的初态,第二行包含九宫的终态。把第二个图的局面记为:123.46758。输出最少的步数,如果不存在方案,则输出-1。
2026-02-15 21:19:46
118
原创 东华OJ 进阶52 k倍区间
给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。因此,在统计前缀和的同时,可以统计k区间的数量,之前有几个相同的前缀和,k区间就可以加相同数量。由于连续区间的和就是两个前缀和相减,只要两个前缀和相同,其区间和为k的倍数。(1 <= N, K <= 100000)按序,统计每一个数字的前缀和(模k) 第一个数字的前缀和为0。输出一个整数,代表K倍区间的数目。
2026-02-15 21:17:43
160
原创 东华OJ 进阶51 青蛙跳杯子(BFS)
如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。本题的任务就是已知初始局面,询问至少需要几步,才能跳成另一个目标局面。2. 隔着1只其它的青蛙(随便什么颜色)跳到空杯子里。3. 隔着2只其它的青蛙(随便什么颜色)跳到空杯子里。其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子。X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。输出要求为一个整数,表示至少需要多少步的青蛙跳。输入为2行,2个串,表示初始局面和目标局面。1. 跳到相邻的空杯子里。章节: 宽度优先搜索。
2026-02-14 20:56:25
209
原创 东华OJ 进阶50 分考场(回溯法)
以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n) 表示第a个人与第b个人认识。第一行,一个整数n(1<n<100),表示参加考试的人数。将一个人分别放入已有的教室,如果都不能,就新开一个教室。为了公平,要求任何两个认识的人不能分在同一个考场。输出一行,包含一个整数,表示最少分几个考场。第二行,一个整数m,表示接下来有m行数据。求至少需要分几个考场才能满足条件。n个人参加某项特殊考试。章节: 深度优先搜索。
2026-02-14 17:27:34
143
原创 东华OJ 进阶43 最小操作数
数组A中共有n个元素,初始全为0。你可以对数组进行两种操作:1、将数组中的一个元素加1;2、将数组中所有元素乘2。求将数组A从初始状态变为目标状态B所需要的最少操作数。如果所有元素都是偶数,则将整个数组除以 2(相当于正向操作中的乘 2)。如果某个元素是奇数,则将其减 1(相当于正向操作中的加 1)。我们统计逆向操作的次数,即为正向操作的最少次数。第一行一个正整数n表示数组中元素的个数。第二行n个正整数表示目标状态B中的元素。输出一行表示最少操作数。章节: 宽度优先搜索。
2026-02-10 09:14:22
112
原创 东华OJ 进阶40 排列数
把这道题看作是进制转换,但需要从高位开始确定,最高位基数是A9,接下来是A8....求0~9十个数的全排列中的第n个(第1个为0123456789)。算出一位之后,从0-9的数组中取出相应的数字,并将其删除。一行,包含一组10个数字的全排列。一行,包含一个整数n。章节: 深度优先搜索。
2026-02-03 10:27:24
202
原创 东华OJ 进阶39 最大乘积
第2行依次给出这n个数,其中每个数字的范围满足:a[i]的绝对值小于等于4。第1行给出总共的数字的个数n和要取的数的个数m,1<=n<=m<=15,dp[i][j][0] 在前j+1个数字中,选择i+1个数字,乘积的最小值。dp[i][j][1] 在前j+1个数字中,选择i+1个数字,乘积的最大值。对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢?嘿嘿,记录一下自己做出的第一道动态规划题,虽然题还是比较简单的。每组数据输出1行,为最大的乘积。第一行一个数表示数据组数。章节: 深度优先搜索。
2026-02-02 11:56:57
222
原创 东华OJ 进阶37 分离度
输入包含多组描述关系网络的数据,对于每组数据,第一行有两个数P,表示网络中人的数目,和R,关系的对数。每个关系用两个字符串表示,代表网络中有关系的两个人的名字。对于任意两个人,他们的分离度是联系两个人需要经过的最小的关系数。对于一个关系网络,最大的分离度是网络中任意两人的分离度的最大值。其实比较简单,用map存一下名字和编号的对应关系,构造邻接矩阵,用学过408就会的弗洛伊德算法就好。但是,弗洛伊德的三个循环的次序我记岔了,应该是kij,我记成ijk了,卡了好久。对于每个网络,输出网络中最大的分离度。
2026-02-01 16:26:07
291
原创 东华OJ 进阶26 聪明的美食家(动态规划)
为了吃得爽,他大费周章,得到了各种食物的“美味度”。都知道舌头有这么一个特性,“由简入奢易,由奢如简难”(据好事者考究,此规律也适合许多其他情况)。具体而言,如果是甜食,当你吃的食物不如前面刚吃过的东西甜,就很不爽了。那么dp[i] = max{ 1,dp[j] + 1} (j<i) 增序列只有自己,或者在满足递增的条件下,前方子序列加上自己。dp[i]初始为1,dp[i]表示包括arr[i]在内的最大递增序列(注意 arr[i]必须在增序列之中)没学过dp,但好像只能用dp了,看了。
2026-02-01 15:48:17
380
原创 东华OJ 进阶31文化之旅(回溯法)
不同文化的国家对其他文化的看法不同,有些文化会排斥外来文化(即如果他学习了某种文化,则他不能到达排斥这种文化的其他国家)。第一行为五个整数N,K,M,S,T,每两个整数之间用一个空格隔开,依次代表国家个数(国家编号为1到N),文化种数(文化编号为1到K),道路的条数,以及起点和终点的编号(保证S不等于T);现给定各个国家间的地理关系,各个国家的文化,每种文化对其他文化的看法,以及这位使者游历的起点和终点(在起点和终点也会学习当地的文化),国家间的道路距离,试求从起点到终点最少需走多少路。
2026-01-30 10:33:43
266
原创 Java抽象类与接口
接口是一种抽象的类型,与抽象类类似,但是接口中只能包含抽象方法和常量。如果一个类要实现某个接口,那么它必须实现接口中的所有抽象方法。抽象类中可以包含抽象方法和非抽象方法,抽象方法是没有实现的方法,需要子类去实现。抽象类中的抽象方法可以有 public 、protected 和 default 修饰符,但是接口中的抽象方法必须是 public 修饰符。接口中的方法默认是 public 和 abstract 的,而抽象类中的方法可以有多种修饰符。抽象类可以包含非抽象方法,但是接口中只能包含抽象方法和常量。
2023-05-04 15:19:34
120
原创 Java学习之多态
多态意味着父类型的变量可以引用子类型的对象。子类是它的父类的特殊每个子类的实例都是其父类的实例,但是反过来不成立。多态体现为父类引用变量可以指向子类对象:定义了一个父类类型的引用,指向新建的子类类型的对象,由于子类是继承他的父类的,所以父类类型的引用是可以指向子类类型的对象的。(3) 基类引用指向派生类对象,即父类引用指向子类对象,父类类型:指子类对象继承的父类类型,或实现的父接口类型。(2) 方法的重写:子类对父类中的某些方法进行重新定义(重写,使用@Override注解进行重写)
2023-04-20 15:24:25
147
1
原创 Java正则表达式
/代表将字符串str以模式串为分隔符进行分割,limit确定匹配分割符的次数(分割的次数),默认贪心匹配,匹配尽量多的分隔符,如果limit>1,代表最多匹配limit-1次。样例中的“java.*”是一个正则表达式,他描述了一个字符串模式:以java为前缀,后面跟着若干个字符串(可能是0个),“.*”代表匹配0或任意多个字符。所有的量词符匹配时都是贪心的,他们会尽可能多匹配,但是我们可以在其后面添加问号来使得量词符变得懒惰,也就意味着只要第一次匹配成功就退出匹配。{n}:代表前面的模式串只能出现n次。
2023-03-25 16:30:10
180
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅