- 博客(5)
- 收藏
- 关注
原创 UVA679题解
题意满二叉树中下落一颗小球。其中每个结点都有一个开关,开关关的时候小球会向左边走,否则向右边走。每当一个小球走过一个结点后,结点处的开关状态就会改变。输出最后一个小球所在的叶子结点编号。思路当某个结点已经下落了奇数个小球,那么这个结点开关是开的。反之亦然。观察根节点,我们发现,序号是奇数的小球全部去了左子树,序号是偶数的全部去了右子树。对左子树的小球按照进入左子树的顺序重新编号,假设原来的序号是k,那么在左子树中的新序号是(k+1)/2,新序号是奇数的,又去了左子树的左子树,新序号是偶数的,去了左子树
2020-09-26 15:01:57
136
原创 UVA12657题解
题意编号为1~n的盒子按从左到右编号递增的顺序排成一行,执行若干条指令,只有以下四种:1 X Y 把X移动到Y的左边。2 X Y 把X移动到Y的右边。3 X Y 把X和Y交换位置。4 左右翻转。最终输出奇数位置的盒子编号之和。思路直接用数组去模拟整个过程会超时。因为盒子的左右两边都要考虑到,所以采用双端链表。由于编号是1~n,所以正好可以用数组去存储每个数的左右“邻居”,这样,我们也可以快速的通过下标去找到某个数的左右是谁。进行操作时,只需要修改被操作数的左右邻居就可以了,不需要真正地去
2020-09-26 13:46:59
191
原创 UVA442题解
题意输入n个矩阵的维度及其链乘表达式,计算乘法的次数,如果乘法无法进行,输出error。思路使用栈去解析表达式。一开始没有仔细看给出的表达式格式,没发现括号里面之多有两个元素,所以才有了下面的代码,用了三个栈,nump是存矩阵下标的,num是存中间结果矩阵的行数列数的,op是存括号的。但是实际上,因为这个题括号里面必定只有两个元素,所以使用一个栈也是能做的。方法就是只存中间结果,矩阵来了就存,右括号来了就算,括号根本不用进栈就行。但是因为我用最开始的代码ac了,所以后面只用一个栈的做法就没有再写
2020-09-26 12:58:25
178
原创 UVA514题解
题意给定火车按照编号1~n的顺序进入中转站,判断某种特定的出站情况是不是正确的。思路中转站的结构就是一个栈,先进后出,用一个栈去模拟就好。对于给定的情况A从头到尾的遍历,对当前的数a进行分析,假设前面的数都是合理的,可以得到的,那么a只有两种可能,一种是在栈顶,一种是还没入栈。这样,我们需要一个标记来表示下一个还没入栈的数b。于是遍历时,对于每一个数字都判断一下是不是和栈顶相等就好。若相等,则栈顶出栈,不相等,把b及其后面小于a的所有数字按顺序入栈,再将b设为a+1。如果发现栈顶也不相等,且b已经大于
2020-09-26 10:33:15
307
1
原创 UVA210题解
题意本题要求模拟n个程序的并行执行,每个程序按照输入的顺序编号为1~n,每个程序包含不超过25条语句,格式一共有五种,赋值,打印,lock,unlock和end。变量被所有的程序共用,用单个小写字母表示,初值为0,常数都是不超过100的整数。每个时刻只能有一个程序在执行,其他程序处于等待状态,不同的语句执行所需要的时间不同,上述的五种语句所需时间为t1,t2,t3,t4,t5,程序的一次执行最多配给Q个单位的时间,如果时间用尽,则执行完当前语句之后,程序会被插入到一个等待队列尾部,处理器会从等待队列的队
2020-09-26 09:41:06
507
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人