sml-experiment

  • HUST - Algorithm: Sequential and Parallel
  • 应该没有学弟学妹会来借鉴代码吧^^ 写得挺臭的

实验一:无重复排序

给出一个具有N个互不相同元素的数组,请对它进行升序排序。 第一行为一个整数N,表示元素的个数。 第二行为N个整数,表示这N个元素,保证每个元素均在int范围内。

实验二:最短路

给定一个带权无向图,一个源点,权值在边上。计算从源点到其他各点的最短路径。 第一行: 3个由空格隔开的整数: N,M,Ts,满足N≤1000,M≤3000,分别表示结点的数量,边的数量,源点。 第2到第M+1行: 第i+1行描述第i条道路。有3个由空格隔开的整数: Rs, Re和Ci,表示结点Rs和Re之间有一条无向边,长度为Ci。所有边权均非负。 输出N个整数,表示从源点Ts到各顶点的最短路径长度。如果到某个顶点不连通,对应最短路径长度输出~1。

实验三:最大括号距离

定义一个串s是闭合的,当且仅当它由’(’和’)’组成,且满足以下条件之一: 空串:这个串为空 连接:这个串由两个闭合的串连接构成 匹配:这个串是一个闭合的串外面包裹一个括号构成的 现在给你一个串,你需要找出所有这个串中匹配的子串(一个闭合的串,并且外侧由括号包裹)中最长的那个,输出它的长度。第一行输入一个数N,表示序列的长度,满足N≤30000。接下来一行输入N个数,表示这个括号序列,0代表左括号,1代表右括号。

实验四:天际线

城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回由这些建筑物形成的天际线。 每个建筑物的几何信息由数组 buildings 表示,其中三元组 buildings[i] = [lefti, heighti, righti]表示:lefti是第i座建筑物左边缘的x坐标;righti是第i座建筑物右边缘的x坐标;heighti是第i座建筑物的高度。 第一行输入一个整数N,表示建筑的数量。接下来N行,每行输入3个整数li,hi,ri

实验五:括号匹配

给定一个括号序列,判断它是否是匹配的。注意( ) ( ) 在本题也当做匹配处理。 第一行输入一个整数N,满足N≤20000,表示括号的个数。第二行输入N个整数0或1,0表示左括号,1表示右括号。如果匹配,输出1,否则输出0。

实验六:高精度整数

给定两个任意精度的整数a和b,满足a≥b,求出a+b, a−b, a×b的值。 第一行输入一个整数N1,满足1≤N1≤5000,表示第一个整数的位数; 第二行输入N1个整数,每个整数均在[0,9]之间,表示a,顺序从高位到低位; 第三行输入一个整数N2,满足1≤N2≤5000表示第二个整数的位数; 第四行输入N2个整数,每个整数均在[0,9]之间,表示b,顺序从高位到低位。 输出分三行,第一行输出一个整数(从高位到低位,每一位之间用空格隔开)表示a+b。 第二行、第三行格式与第一行相同,分别表示a−b和a×b,输入数据保证a≥b。

实验七:割点与割边

给定一个无向无权连通图,请求出这个图的所有割点和割边的数目。 输入第1行为两个整数N和M,表示图的顶点数和边数,保证2≤N≤1000, 1≤M≤3000,顶点从1开始编号。 接下来有M行,每行为两个不同的整数1≤u,v≤N,表示顶点u和顶点v之间有一条边(保证没有重边和自环)。 输出两个整数,分别代表图中割点和割边的数目。

实验八:静态区间查询

给定一个长度为N的数列,和M次询问,求出每一次询问的区间内数字的最大值。 输入第一行包含两个整数N,M,满足N≤1000, M≤3000,分别表示数列的长度和询问的个数。 第二行包含N个整数(记为ai),依次表示数列的第i项。 接下来M行,每行包含两个整数li,ri,表示查询的区间为[li,ri]。 输出M个整数,表示查询的结果。

实验九:素性测试

给定一个数N,判断它是否是素数。 输入:一行,为一个任意大的正整数N,满足N≥2。 输出:如果是素数输出True,否则输出False。