rust题解
int8
这个作者很懒,什么都没留下…
展开
-
铁轨(Rails, ACM/ICPC CERC 1997, UVa 514)rust解法
这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C。对于每个车厢,一旦从A移入C,就不能再回到A了;一旦从C移入B,就不能回到C了。换句话说,在任意时刻,只有两种选择:A→C和C→B。有n节车厢从A方向驶入车站,按进站顺序编号为1~n。你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。例如,出栈顺序(5 4 1 2 3)是不可能的,但(5 4 3 2 1)是可能的。在中转站C中,车厢符合后进先出的原则,因此是一个栈。原创 2023-10-28 21:09:31 · 456 阅读 · 0 评论 -
程序模拟(Concurrency Simulator, ACM/ICPC World Finals 1991, UVa210)rust解法
当一个程序的配额用完之后,把当前语句(如果存在)执行完之后该程序会被插入一个等待队列中,然后处理器从队首取出一个程序继续执行。当一个程序成功执行完lock指令之后,其他程序一旦试图执行lock指令,就会马上被放到一个所谓的阻止队列的尾部(没有用完的配额就浪费了)。变量用单个小写字母表示,初始为0,为所有程序公有(因此在一个程序里对某个变量赋值可能会影响另一个程序)。输入n, t1, t2, t3, t4, t5, Q以及n个程序,按照时间顺序输出所有print语句的程序编号和结果。原创 2023-10-27 21:38:35 · 458 阅读 · 0 评论 -
交易所(Exchange, ACM/ICPC NEERC 2006, UVa1598)rust解法
交易规则如下:对于当前买订单,若当前最低卖价低于当前出价,则发生交易;对于当前卖订单,若当前最高买价高于当前价格,则发生交易。发生交易时,按供需物品个数的最小值交易。交易后,需修改订单的供需物品个数。当出价或价格相同时,按订单产生的先后顺序发生交易。CANCEL i:取消第i条指令对应的订单(输入保证该指令是BUY或者SELL)。你的任务是为交易所设计一个订单处理系统。SELL p q:有人想卖,数量为p,价格为q。BUY p q:有人想买,数量为p,价格为q。一个订单成交过的部分不能取消。原创 2023-10-26 07:29:24 · 555 阅读 · 0 评论 -
客户中心模拟(Queue and A, ACM/ICPC World Finals 2000, UVa822)rust解法
客服请求一共有n(1≤n≤20)种主题,每种主题用5个整数描述:tid, num, t0, t, dt,其中tid为主题的唯一标识符,num为该主题的请求个数,t0为第一个请求的时刻,t为处理一个请求的时间,dt为相邻两个请求之间的间隔(为了简单情况,假定同一个主题的请求按照相同的间隔到达)。tidk ,表示一个标识符为pid的人可以处理k种主题的请求,按照优先级从大到小依次为tid1,tid2, …客户中心有m(1≤m≤5)个客服,每个客服用至少3个整数描述:pid, k, tid1, tid2, …原创 2023-10-25 15:20:51 · 321 阅读 · 0 评论 -
地图查询(Do You Know The Way to San Jose?, ACM/ICPC World Finals 1997, UVa511)rust解法
有n张地图(已知名称和某两个对角线端点的坐标)和m个地名(已知名称和坐标),还有q个查询。假定包含此地名的地图中一共有k种不同的面积,则合法的详细等级为1~k(其中1最不详细,k最详细,面积越小越详细)。如果详细等级i的地图不止一张,则输出地图中心和查询地名最接近的一张;如果还有并列,查询地名和地图右下角的坐标应最远(对应最少的滚动条移动);如果查询的地名不存在或者没有地图包含它,或者i超过包含它的地图的最大详细等级,应报告查询非法(并输出包含它的最详细地图名称,如果存在)。原创 2023-10-24 00:05:47 · 71 阅读 · 0 评论 -
在Web中搜索(Searching the Web, ACM/ICPC Beijing 2004, UVa1597)rust解法
处理询问时,需要对于每篇文章输出证据。前3种询问输出所有至少包含一个关键字的行,第4种询问输出整篇文章。关键字只由小写字母组成,查找时忽略大小写。每行不超过80个字符,一共不超过1500行。输入n篇文章和m个请求(n原创 2023-10-23 16:37:53 · 390 阅读 · 0 评论 -
医院设备利用(Use of Hospital Facilities, ACM/ICPC World Finals 1991, UVa212)rust解法
每个病人首先会被分配到一个手术室,手术后会被分配到一个恢复室。从任意手术室到任意恢复室的时间均为t1,准备一个手术室和恢复室的时间分别为t2和t3(一开始所有手术室和恢复室均准备好,只有接待完一个病人之后才需要为下一个病人准备)。每当有准备好的手术室时,队首病人进入其中编号最小的手术室。手术结束后,病人应立刻进入编号最小的恢复室。如果有多个病人同时结束手术,在编号较小的手术室做手术的病人优先进入编号较小的恢复室。输入n、m、T、t1、t2、t3、k和k名病人的名字、手术时间和恢复时间,模拟这个过程。原创 2023-10-22 23:59:57 · 436 阅读 · 0 评论 -
城市正视图(Urban Elevations, ACM/ICPC World Finals 1992, UVa221)rust解法
输入每个建筑物左下角坐标(即x、y坐标的最小值)、宽度(即x方向的长度)、深度(即y方向的长度)和高度(以上数据均为实数),输出正视图中能看到的所有建筑物,按照左下角x坐标从小到大进行排序。就是把每一个建筑物的两端的坐标x和x+w放进一个数组里,然后排序并去重,做完这些操作就相当于分割了如下的若干个区间。判断可见性看上去比较麻烦,因为一个建筑物可能只有部分可见,无法枚举所有x坐标,因为x坐标是实数,所以有无穷多个。2.在区间中的建筑物,一定会把区间给填满,不会出现建筑物只占区间部分空间的情况。原创 2023-10-21 21:19:04 · 653 阅读 · 0 评论 -
邮件传输代理的交互(The Letter Carrier‘s Rounds, ACM/ICPC World Finals 1999, UVa814)rust解法
对于每个请求,首先读入发件人,分离出MTA和用户名,然后读入所有收件人,根据MTA出现的顺序进行保存,并且去掉重复。接下来读入邮件正文,最后按顺序依次连接每个MTA,检查并输出每个收件人是否存在,如果至少有一个存在,则输出邮件正文。发送人MTA连接收件人MTA的顺序应该与在输入中第一次出现的顺序一致。首先是输入过程,把每个MTA里的用户列表保存下来。时,这两个MTA将会通信。输入每个MTA里的用户列表,对于每个发送请求(输入发送者和接收者列表),按顺序。,其中键是MTA名称,值是用户名列表。原创 2023-10-21 12:43:28 · 227 阅读 · 0 评论 -
特别困的学生(Extraordinarily Tired Students, ACM/ICPC Xi‘an 2006, UVa12108)rust解法
课堂上有n个学生(n≤10)。每个学生都有一个“睡眠-清醒”周期,其中第i个学生醒Ai分钟后睡Bi分钟,然后重复(1≤Ai,Bi≤5),初始时第i个学生处在他的周期的第Ci分钟。每个学生在临睡前会察看全班睡觉人数是否严格大于清醒人数,只有这个条件满足时才睡觉,否则就坚持听课Ai分钟后再次检查这个条件。问经过多长时间后全班都清醒。如果用(A,B,C)描述一些学生,则图4-11中描述了3个学生(2,4,1)、(1,5,2)和(1,4,3)在每个时刻的行为。有可能并不存在“全部都清醒”的时刻,此时应输出-1。原创 2023-10-19 23:33:14 · 64 阅读 · 0 评论 -
骰子涂色(Cube painting, UVa 253)rust解法
例如rbgggr和rggbgr分别表示如图4-8所示的两个骰子。二者是等价的,因为图4-8(a)所示的骰子沿着竖直轴旋转90°之后就可以得到图4-8(b)所示的骰子。输入两个骰子,判断二者是否等价。每个骰子用6个字母表示,如图4-7所示。原创 2023-10-19 20:14:08 · 379 阅读 · 0 评论 -
黑白棋(Othello, ACM/ICPC World Finals 1992, UVa220)rust解法
黑白棋的规则为:黑白双方轮流放棋子,每次必须让新放的棋子“夹住”至少一枚对方棋子,然后把所有被新放棋子“夹住”的对方棋子替换成己方棋子。一段连续(横、竖或者斜向)的同色棋子被“夹住”的条件是两端都是对方棋子(不能是空位)。如图4-6(a)所示,白棋有6个合法操作,分别为(2,3),(3,3),(3,5),(6,2),(7,3),(7,4)。选择在(7,3)放白棋后变成如图4-6(b)所示效果(注意有竖向和斜向的共两枚黑棋变白)。注意(4,6)的黑色棋子虽然被夹住,但不是被新放的棋子夹住,因此不变白。原创 2023-10-18 23:31:12 · 929 阅读 · 0 评论 -
正方形(Squares, ACM/ICPC World Finals 1990, UVa201)rust解法
(i,j)-(i,j+1)和(i,j)-(i+1,j)。如图4-5所示最左边的线段用V 1 1表示。图中包含两个边长为1的正方形和一个边长为2的正方形。有n行n列(2≤n≤9)的小黑点,还有m条线段连接其中的一些黑点。统计这些线段连成了多少个正方形(每种边长分别统计)。行从上到下编号为1~n,列从左到右编号为1~n。边用H i j和V i j表示,分别代表边。对每一种正方形长度,遍历所有点,看集合里是否包含构成正方形的所有边。把所有边存到集合里。原创 2023-10-18 17:00:53 · 386 阅读 · 0 评论 -
信息解码(Message Decoding, ACM/ICPC World Finals 1991, UVa 213)rust解法
首先输入一个编码头(例如AB#TANCnrtXc),则上述序列的每个串依次对应编码头的每个字符。编码文本由多个小节组成,每个小节的前3个数字代表小节中每个编码的长度(用二进制表示,例如010代表长度为2),然后是各个字符的编码,以全1结束(例如,编码长度为2的小节以11结束)。010(编码长度为2)00(#)00(#)10(*)11(小节结束)011(编码长度为3)000()111(小节结束)001(编码长度为1)0($)1(小节结束)000(编码结束)。首先是长度为1的串,然后是长度为2的串,依此类推。原创 2023-10-16 23:08:35 · 445 阅读 · 0 评论 -
救济金发放(The Dole Queue, UVa 133)rust解法
n(n原创 2023-10-16 21:11:41 · 253 阅读 · 0 评论 -
换低挡装置(Kickdown, ACM/ICPC NEERC 2006, UVa1588)rust解法
给出两个长度分别为n1,n2(n1,n2≤100)且每列高度只为1或2的长条。需要将它们放入一个高度为3的容器(如图3-8所示),问能够容纳它们的最短容器长度。原创 2023-10-16 13:50:43 · 380 阅读 · 0 评论 -
盒子(Box, ACM/ICPC NEERC 2004, UVa1587)rust解法
给定6个矩形的长和宽wi和hi(1≤wi,hi≤1000),判断它们能否构成长方体的6个面。原创 2023-10-15 23:06:16 · 458 阅读 · 0 评论 -
子序列(All in All, UVa 10340)rust解法
输入两个字符串s和t,判断是否可以从t中删除0个或多个字符(其他字符顺序不变),得到字符串s。例如,abcde可以得到bce,但无法得到dc。原创 2023-10-15 22:18:44 · 473 阅读 · 0 评论 -
循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)rust解法
输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。例如a=5,b=43,小数表示为0.(116279069767441860465),循环节长度为21。原创 2023-10-15 01:18:27 · 395 阅读 · 0 评论 -
DNA序列(DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368) rust解法
输入整数m和n(4≤m≤50,4≤n≤1000),以及m个长度为n的DNA序列(只包含字母A,C,G,T),输出到m个序列的Hamming距离和最小的DNA序列和对应的距离。如有多解,要求为字典序最小的解。例如,对于下面5个DNA序列,最优解为TAAGATAC。输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总Hamming距离尽量小。两个等长字符串的Hamming距离等于字符不同的位置个数,例如,ACGT和GCGA的Hamming距离为2(左数第1, 4个字符不同)。原创 2023-10-14 14:43:50 · 409 阅读 · 0 评论 -
谜题(Puzzle, ACM/ICPC World Finals 1993, UVa227)rust解法
有一个5*5的网格,其中恰好有一个格子是空的,其他格子各有一个字母。一共有4种指令:A, B, L, R,分别表示把空格上、下、左、右的相邻字母移到空格中。输入初始网格和指令序列(以数字0结束),输出指令执行完毕后的网格。如果有非法指令,应输出“This puzzle has no final configuration.”,例如,图3-5中执行ARRBBL0后,效果如图3-6所示。原创 2023-10-14 04:38:06 · 721 阅读 · 0 评论 -
组合数 rust解法
例如,n=25,m=12时答案为5200300。编写函数,参数是两个非负整数n和m,返回组合数。,其中m≤n≤25。原创 2023-09-15 22:23:36 · 431 阅读 · 0 评论 -
生成元 rust解法
如果x加上x的各个数字之和得到y,就说x是y的生成元。给出n(1≤n≤100000),求n的最小生成元。例如,n=216,121,2005时的解分别为198,0,1979。本题看起来是个数学题,实则不然。假设所求生成元为m。换句话说,只需枚举所有的m原创 2023-09-14 21:49:47 · 415 阅读 · 0 评论 -
回文串 rust解法
输入字符串保证不含数字0。所谓回文串,就是反转以后和原串相同,如abba和madam。输入一个字符串,判断它是否为回文串。原创 2023-09-14 21:19:45 · 316 阅读 · 0 评论 -
猜数游戏 rust解法
每组第一行是序列长度n,第二行是答案序列,接下来若干行是猜测序列。猜测序列全0时该组结束。n=0时整个输入结束。给定答案序列和猜测序列,统计有几个数字位置正确,有几个数字在两个序列都出现过但位置不对。原创 2023-09-14 21:10:35 · 303 阅读 · 0 评论 -
竖式问题 rust解法
找出所有形如abc*de(三位数乘以两位数)的算式,在完整的竖式中,所有数字都属于这个数字集合。每个竖式前应有编号,之后应有一个空行。输入一个数字集合,数字之间没有空格。原创 2023-09-13 12:47:42 · 342 阅读 · 0 评论 -
蛇形填数 rust解法
在n×n方阵里填入1,2,…,n×n,要求填成蛇形。原创 2023-09-12 22:54:07 · 493 阅读 · 0 评论