- 博客(32)
- 收藏
- 关注
原创 P2014 [CTSC1997] 选课
接下来的 �N 行,第 �+1I+1 行包含两个整数 ��ki和 ��si, ��ki 表示第I门课的直接先修课,��si 表示第I门课的学分。若 ��=0ki=0 表示没有直接先修课(1≤��≤�1≤ki≤N , 1≤��≤201≤si≤20)。用��[�][�][�]dp[u][i][j]表示节点�u的前�i个子节点,限重为�j能得到的最大权值和(价值和)不难想到,用dp[u][i]dp[u][i]表示以节点�u为根的子树 ,选择�i个点可以获得的最大权值和。实际还写了蛮长时间的。
2024-06-05 20:37:14
879
1
原创 有限制的背包问题
为了解决这个问题,我们可以使用一种称为“二进制优化”的方法,将每种物品的数量限制转换为二进制形式,这样可以将多重背包问题转化为0-1背包问题,从而可以使用动态规划来解决。对于每种物品,它都会尝试不同的数量,并更新背包容量从0到W的所有可能情况下的最大价值。这段代码首先读取物品的数量N和背包的容量W,然后读取每个物品的价值、重量和限制,并将每种物品的数量限制转换为二进制形式。这种方法的时间复杂度是O(N * logM * W),其中N是物品的数量,M是每种物品的数量限制,W是背包的容量。
2024-05-27 20:48:34
283
原创 拦截导damn
某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。
2024-05-16 20:33:01
402
原创 BFS1 S
对于给定的有向图 G = (V, E),编写一个程序来找出从顶点 1 到每个顶点的最短距离 d(路径上的最小边数)。每个顶点从 1 到 n 编号。对于不能从顶点 1 到达的顶点,输出 -1。在一行上输出每个顶点的 id 和 d。id 是顶点的编号,d 是顶点 1 到该顶点的距离。按顶点编号顺序输出。第一行给出了 G 中的顶点数 n。u 是顶点的编号,k 是 u 的度数,v1v2…vk是与 u 相邻的顶点的编号。
2024-04-13 13:11:08
329
原创 冒泡排序1 S
编写一个冒泡排序算法程序,按升序对序列 A 进行排序。输入的第一行包括一个整数 N(1 ≤ N ≤ 100),即序列中元素的数量。在第一行,请打印已排序的序列。序列的两个连续元素应由空格字符分隔。您的程序还应该打印伪代码第 5 行中定义的交换操作的次数。在第二行中,序列的 N 个元素由空格字符分隔。请注意,数组元素的索引从0开始。在第二行,请打印交换操作的次数。输出由 2 行组成。
2024-03-23 13:43:52
237
原创 所有节点对最短路径
−1) 的最短路径的花费, 花费之间以空格分隔. 如果节点i不存在到达节点j的路径, 输出。|−1 分别编号si和ti表示第i条有向边的起点和终点,di代表第i边的权值.如果图中包含一个从源点 r 可达的负环(该环路的边权值之和为负数), 则在一行中输出。在第i行输出节点i到节点j(j=0, 1, …图中的节点从 0, 1, ..., |
2024-03-20 20:00:40
1074
原创 单源最短路径
到顶点 0, 1, ... , ∣V∣−1最短路径的权值. 如果没有从源到顶点的路径, 则打印。si和ti表示第i条有向边的起点和终点,di代表第i边的权值。图的顶点以数字 0, 1, ... , ∣V∣−1 分别命名。, 找到从源到每个顶点的最短路径。输出包括∣V∣行. 按顺序输出源点。
2024-03-18 20:41:15
644
原创 二叉搜索树 I
二叉搜索树应该以这样的方式实现,即二叉搜索树的属性在通过插入和删除修改后继续保持。除了关键字段和卫星数据之外,每个节点还包含字段 left、right 和 p,分别指向对应于其左子节点、右子节点和父节点的节点。该过程以将 z 插入到树中的适当位置的方式修改 T 和 z 的某些字段。例如,属于包含 80 的节点的左子树的节点的键值小于或等于 80,属于右子树的节点的键值大于或等于 80。二叉搜索树是一种基本的搜索树。print:分别通过中序树遍历和预序树遍历打印二叉搜索树的键值。二叉搜索树中的键都是不同的。
2024-03-16 15:07:40
726
原创 横截面图上的区域
你的任务是模拟洪水灾害。对于给定的横截面图,给出淹没部分的面积。假设该地区不断地下雨,而从该地区溢出的水正在落入两侧的海中。例如,对于上面的横截面图,雨水将产生洪水,其面积分别为 4、2、1、19 和 9。
2024-02-22 09:57:18
680
原创 遍历子集I
子集的编号:我们用n位二进制00...0001,00...0010,00...0100,...,10...0000来分别表示0,1,...,n-1,子集的编号为该子集中出现元素对应的n位二进制的或。给定一个集合S={0,1,2,...,n-1}请输出集合S的所有子集。n,集合S中包含元素0,1,...,n-1。//i: 0~2^n, 每个i的二进制对应一个子集。其中d为该子集编号,e0,e1,... 为该子集的元素。注意:当子集为空时,在’:‘后不存在空格。
2024-02-22 09:56:37
427
原创 穷举搜索
编写一个程序,读取由 n 个元素组成的序列 A 和一个整数 M,如果可以通过在 A 中的元素相加得到 M,则输出“yes”,否则输出“no”。一个元素只能使用一次。在第一行中给出了 n。在第二行中,给出了 n 个整数。在第三行中给出了 q。然后,在第四行,给出 q 个(Mi)。给出序列 A 和 q 个问题,其中每个问题都包含Mi。num[0] = 0;对于每个Mi打印"yes"或"no"。1 ≤ A 中的元素 ≤ 2000。
2024-02-22 09:55:18
237
1
原创 队列
队列中有 n 个进程。每个进程都有namei和timei。循环调度程序为每个进程提供一个时间段(一个时隙),如果到那时它没有完成,则中断该进程。进程被恢复并移动到队列的末尾,然后调度程序处理队列中的下一个进程。例如,我们有以下队列,时间段长度为 100 毫秒。在接下来的 n 行中,给出了 n 个进程的名称和时间。首先,进程 A 被处理 100 毫秒,然后进程移动到队列末尾,剩余时间(50 毫秒)。在第一行中,进程数 n 和时隙 q 由单个空格分隔。对于每个进程,按顺序打印其名称和进程完成的时间。
2024-02-22 09:54:44
340
1
原创 质数第三方
素数是一个自然数,它恰好有两个不同的自然数除数:1 和它本身。例如,前四个质数是:2、3、5 和 7。编写一个程序,读取 N 个整数的列表并打印该列表中素数的个数。第一行包含一个整数 N,即列表中元素的数量。N 个数字在以下几行中给出。打印给定列表中素数的数量。2≤列表中的元素≤108。
2024-02-22 09:53:09
153
1
原创 希尔排序是的
的序列G,对于G中每一个元素,依次执行insertionSort(A, n, g)。因此,其也被称为“缩小增量排序”。大量研究表明,不同的G序列的选取对于排序的性能有着显著的影响。G序列由希尔排序增量序列的一部分逆序得到,比较著名的增量序列有Shell增量序列、Hibbard增量序列、Knuth增量序列、Gonnet增量序列、Sedgewick增量序列等。本题要求你使用Knuth增量序列编写这个排序程序,其递推公式为:填写上面的伪代码中的?来完成这个程序。
2024-02-22 09:52:26
538
1
原创 选择排序是我的
编写一个选择排序算法程序,按升序对序列 A 进行排序。输入的第一行包括一个整数 N(1 ≤ N ≤ 100),即序列中元素的数量。你还应该打印出 i=mini时伪代码第 7 行中定义的交换操作的次数。在第一行,请打印已排序的序列。序列的两个连续元素应由空格字符分隔。在第二行中,序列的 N 个元素由空格字符分隔。请注意,数组元素的索引从0开始。在第二行,请打印交换操作的次数。输出由 2 行组成。
2024-02-22 09:50:25
141
1
原创 线性查找输出
给定一个由 n 个整数组成的序列 S 和一个由不同的 q 个整数组成的序列 T。编写一个程序,输出 C,即既在序列 T 中也在集合 S 中的整数个数。在第一行中给出了 n。在第二行中,给出了 n 个整数。在第三行中给出了 q。然后,在第四行,给出 q 个整数。0 ≤ S 中的一个元素 ≤109。0 ≤ T 中的一个元素 ≤109。
2024-02-22 09:49:38
252
1
原创 字典额外UI哦
find str:如果字典包含str,则打印'yes',否则打印'no'。insert str:在字典中插入一个字符串str。在接下来的 n 行中,n 条指令以上述格式给出。为一行中的每个查找指令打印"yes"或"no"。字符串由“A”、“C”、“G”或“T”组成。在第一行 n 中,给出了指令的数量。1 ≤ 字符串长度 ≤ 12。
2024-02-22 09:48:18
319
1
原创 分配的身世
你需要从皮带输送机按顺序(i=0,1,…,n−1)得到 n 包wi kg的包裹。你应该将所有包裹装载到 k 辆具有共同最大载荷P 的卡车上。每辆卡车都可以从皮带输送机上装载连续的包裹(大于或等于零),序列中的包裹总重量不得超过最大载荷P。在第一行中,两个整数 n 和 k 由空格字符分隔。在接下来的n行中,分别给出了wi。编写一个程序,读取 n、k和 wi,并报告最大负载 P 的最小值以装载所有包裹。在一行中打印 P 的最小值。
2024-02-22 09:47:22
374
1
原创 有根树hi
id 是节点号,k 是顺序。c1 c2 ... ck 表示第一个子节点的节点号,... 表示第k 个子节点的节点号。type 是分别代表根、内部节点和叶的根、内部节点或叶字符串之一。但是,如果根满足叶子和内部节点的条件,则应该是根。输入的第一行给出节点数 n。在接下来的第 n 行,每个节点的信息按以下格式在一行中给出。d 表示节点的深度。这里我们假设给定的树有n个节点,每个节点都分配了一个从0到n-1的数字。创建一个程序,为给定的有根树 T 的每个节点 u 输出以下信息。u的节点类型(根、内部节点或叶)
2024-02-22 09:46:22
400
1
原创 选择排序如图
编写一个选择排序算法程序,按升序对序列 A 进行排序。输入的第一行包括一个整数 N(1 ≤ N ≤ 100),即序列中元素的数量。你还应该打印出 i=mini时伪代码第 7 行中定义的交换操作的次数。在第一行,请打印已排序的序列。序列的两个连续元素应由空格字符分隔。在第二行中,序列的 N 个元素由空格字符分隔。请注意,数组元素的索引从0开始。在第二行,请打印交换操作的次数。输出由 2 行组成。
2024-02-21 19:43:42
247
1
原创 hi线性查找
给定一个由 n 个整数组成的序列 S 和一个由不同的 q 个整数组成的序列 T。编写一个程序,输出 C,即既在序列 T 中也在集合 S 中的整数个数。在第一行中给出了 n。在第二行中,给出了 n 个整数。在第三行中给出了 q。然后,在第四行,给出 q 个整数。0 ≤ S 中的一个元素 ≤109。0 ≤ T 中的一个元素 ≤109。
2024-02-21 19:41:07
137
原创 hi最大利润
您可以从外汇保证金交易中获取利润。例如,如果您以每美元 100 日元的价格买入 1000 美元,并以每美元 108 日元的价格卖出,则可以获得 (108 - 100) × 1000 = 8000 日元。第一行包含一个整数n(2≤n≤200000)。接下来n行,Rt(t=0,1,2,...,n−1)按顺序给出,1≤Rt≤109。你需要编写一个程序,读取一种货币在 t 时刻的价值Rt,然后输出Rj−Ri的最大值(j>i)。在一行中输出最大值。
2024-02-21 19:39:16
307
原创 插入排序祝福石的
编写一个插入排序算法程序,按升序对序列 A 进行排序。输出由 N 行组成。请为每一步输出一行表示当前序列。序列的元素应由单个空格分隔。为了说明算法,您的程序应该跟踪每个步骤的中间结果。输入的第一行包括一个整数 N,即序列中元素的数量。在第二行中,序列的 N 个元素由单个空格分隔。请注意,数组元素的索引从0开始。
2024-02-21 15:00:20
152
原创 二分查找带头人
给定一个由 n 个整数组成的序列 S 和一个由不同的 q 个整数组成的序列 T。编写一个程序,输出 C,即既在序列 T 中也在集合 S 中的整数个数。在第一行中给出了 n。在第二行中,给出了 n 个整数。在第三行中给出了 q。然后,在第四行,给出 q 个整数。0 ≤ S 中的一个元素 ≤109。0 ≤ T 中的一个元素 ≤109。S中的元素按升序排列。
2024-02-21 14:59:38
286
原创 双向链表的
当给定 delete、deleteFirst 或 deleteLast 指令时,列表中有一个或多个元素。delete x:从链表中删除第一个键为 x 的元素。如果不存在这样的元素,则什么都不做。接下来的 n 行给出了n个指令。完成所有指令后,依次输出链表中的键。insert x:在链表的开头添加一个键为 x 的元素。deleteFirst:删除列表中的第一个元素。deleteLast:删除列表中的最后一个元素。指令过程中链表的元素个数不超过$10^6$个。实现接受以下指令的双向链表。删除指令不超过20条。
2024-02-21 14:57:45
340
原创 甲流病人初筛
目前正是甲流盛行时期,为了更好地进行分流治疗,医院在挂号时要求对病人的体温和咳嗽情况进行检查,对于体温超过37.5度(含等于37.5度)并且咳嗽的病人初步判定为甲流病人(初筛)。现需要统计某天前来挂号就诊的病人中有多少人被初筛为甲流病人。其后有n行,每行是病人的信息,包括三个信息:姓名(字符串,不含空格,最多8个字符)、体温(float)、是否咳嗽(整数,1表示咳嗽,0表示不咳嗽)。按输入顺序依次输出所有被筛选为甲流的病人的姓名,每个名字占一行。之后在输出一行,表示被筛选为甲流的病人数量。
2024-02-21 14:56:47
363
原创 hi垃圾陷阱
假设卡门预先知道了每个垃圾扔下的时间t(0<t<=1000),以及每个垃圾堆放的高度h(1<=h<=25)和吃进该垃圾能维持生命的时间f(1<=f<=30),要求出卡门最早能逃出井外的时间,假设卡门当前体内有足够持续10小时的能量,如果卡门10小时内没有进食,卡门就将饿死。F (1 <= F <= 30),表示该垃圾能维持卡门生命的时间;“垃圾井”是农夫们扔垃圾的地方,它的深度为D (2 <= D <= 100)英尺。第一行为2个整数,D 和 G (1 <=G <= 100),G为被投入井的垃圾的数量。
2024-02-21 14:53:48
398
原创 hi 插入排序
编写一个插入排序算法程序,按升序对序列 A 进行排序。输出由 N 行组成。请为每一步输出一行表示当前序列。序列的元素应由单个空格分隔。为了说明算法,您的程序应该跟踪每个步骤的中间结果。输入的第一行包括一个整数 N,即序列中元素的数量。在第二行中,序列的 N 个元素由单个空格分隔。请注意,数组元素的索引从0开始。
2024-02-21 14:42:12
179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人