【栈/队列/优先队列/链表】
文章平均质量分 64
张松超
这个作者很懒,什么都没留下…
展开
-
51Nod ~ 1279 ~ 扔盘子 (单调栈)
思路:从井口到井底,井的有效宽度一定是一个单调不增的序列。所以我们用栈去维护这个序列。落盘子的时候首先判断井底是否能放下,不能放下井底那个宽度已经没用了,出栈,直到某一个可以放下,然后把这个也出栈。过程中统计落入个数即可。#include<bits/stdc++.h>using namespace std;const int MAXN = 8e3 + 5;const int IN...原创 2018-04-12 12:42:33 · 244 阅读 · 0 评论 -
HDU ~ 6438 ~ Buy and Resell (思维 + 优先队列)
题意有n个城市,你会从前往后依次到达每个城市,你每次可以用a[i]元购买或者卖掉一个物品,你可以同时保存无限个个物品。最开始你身上没有物品,但是有无限的金钱,现在问你最大的收益是多少。思路用优先队列维护到当前位置的最优值。#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;const int MAXN = 1e5 + 5;typedef...原创 2018-10-30 20:52:00 · 180 阅读 · 0 评论 -
表达式求值(模板)
思路:我们这里讲一种方法,叫做"算符优先法"。 首先我们要明白表达式是怎么算的:比如“1+2*(2+3)/5"。我们应该明白算术四则运算的规则。即:①先乘除后加减②顺序从左到右③先括号内在括号外"算符优先法"就是根据这个运算优先关系的规定。任何一个表达式都是由操作数(operand),运算符(operator)和界限符(delimiter)组成的。一般来说,操作符既可以是常数,也可以是被说明为变量...原创 2017-05-22 18:54:44 · 999 阅读 · 0 评论 -
CodeForces ~ 982B ~ Bus of Characters (栈模拟)
题意:公交上有N排凳子,每排有两个凳子,每一排的凳子宽度不一样。有一些内向和外向的人按照顺序上车。外向的人(0):只会选择没人的一排坐下,如果有很多排符合要求,他会选择座位宽度最小的坐下。内向的人(1):只会选择有人的一排坐下,如果有很多排符合要求,他会选择座位宽度最大的坐下。输入N,然后输入N个整数表示每一排的的凳子长度,然后输入一个长度为2*N的01串表示2*N个人。从1~2*N输...原创 2018-05-28 17:15:14 · 447 阅读 · 0 评论 -
HDU ~ 2354 ~ Another Brick in the Wall(BFS+优先队列)
Another Brick in the WallTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionAfter years as a brick-layer, you've been called upon to analyze the s原创 2017-04-13 15:04:51 · 472 阅读 · 0 评论 -
UVA ~ 12100 ~ Printer Queue (队列 + 优先队列)
题意:学生会里只有一台打印机,但是由很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个1~9间的优先级,优先级越高表示任务越急。打印机运作方式为:首先从打印队列中取出一个任务J,如果队列里有比J更急的任务,则直接把J放到打印队列尾部,否则打印任务J。输入打印队列中各个任务的优先级以及所关注的任务在队列中的位置(队首位置为0),输出该任务完成的时原创 2018-01-10 10:51:31 · 552 阅读 · 0 评论 -
UVA ~ 1598 ~ Exchange (优先队列 + 模拟)
题意:你的任务是为交易所设计一个订单处理系统。要求支持以下3种指令。□ BUY p q:有人想买,数量为p,价格为q□ SELL p q:有人想卖,数量为p,价格为q□ CANCEL i:取消第i条指令对应的订单(输入保证该指令是BUY或者SELL)交易规则如下: 对于当前买订单,若当前最低卖价(ask price) 低于当前出价,则发生交易;对于当前卖订单,若当前最高买价(bid price)高...原创 2018-04-27 18:06:45 · 540 阅读 · 5 评论 -
UVA ~ 212 ~ Use of Hospital Facilities (优先队列+模拟)
题意:医院里有n (n<10) ↑手术室和m (m<30) 个恢复室。每个病人首先会被分配时一个手术室,手术后会被分配到一个恢复室。从任意手术室到任意恢复室的时间均为t1,准备个手术室和恢复室的时间分别为t2和t3(一开始所有手术室和恢复室均准备好,只有接持完一个病人之后才需要为下一个病人准备)。 k 名(k<=100) 病人按照花名册顺序排队,T点钟准时开放手术室。每当有...原创 2018-05-01 21:03:49 · 630 阅读 · 0 评论 -
UVALive ~ 3135 ~ Argus (优先队列)
题意:你的任务是编号一个称为Argus的系统。该系统支持Register命令Register Q_num Period该命令注册了一个触发器,它每Period秒钟就会产生一次编号为Q_num的事件。你的任务是模拟出前k个事件,如果多个事件同时发生,先处理Q_num 小的事件。【输入格式】输入仅包含组数据。前若干行是Register 命令,以“#”结尾: 最后一行是整数k。对于每条命令,1≤Q mm...原创 2018-05-03 19:58:30 · 247 阅读 · 0 评论 -
UVA ~ 11997 ~ K Smallest Sums (优先队列 + 多路归并)
题意:有k个整数数组,各包含k个元素。在每个数组中取一个元素加起来,可以得到k^k个和。求这些和中最小的k个值(重复的值算多次)。【输入格式】输入包含多组数据。每组数据第一行为一个整数k(1<=k<=750)。以下k行每行包含k个不超过10^6的正整数。输入结束标志为EOF。输入文件不超过5MB。【输出格式】对于每组数据,输出k个最小和的值,并按照从小到大排序。【分析】在解决这个问题之...原创 2018-05-03 20:57:59 · 185 阅读 · 0 评论 -
UVA ~ 210 ~ Concurrency Simulator (双端队列 + 队列)
题意:本题需要你模拟一些简单程序,每一个程序有以下5种指令:□var = val,给变量赋值,简单起见保证变量名为一个字母,变量为所有进程共用,并且初始为0,保证val是不大于100的正整数;□print var,输出变量var;□lock对所有变量申请独占访问(不影响赋值和打印)□unlock解除独占访问□end结束程序以上指令分别耗时t1,t2,t3,t4,t5的时间,一开始进程按照输入顺序依...原创 2018-05-09 18:02:54 · 308 阅读 · 0 评论 -
NSWOJ ~ 1099 ~ 括号配对问题(栈)
题目网址:NSWOJ-1099-括号匹配1099 - 括号配对问题时间限制:3秒 内存限制:128兆题目描述现在,有一行括号序列,请你检查这行括号是否配对。输入第一行输入一个数N(0输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入3[(])(])([[]()])原创 2017-04-04 21:07:50 · 498 阅读 · 0 评论 -
NYOJ ~ 305 ~ 表达式求值 (栈模拟)
思路:我们用一个栈存字符,一个栈存数字,由于左括号没有区分性,所以我们存MAX和MIN和ADD的最后一个字母,每当遇到右括号我们从数字栈中取出两个数字进行一次计算,且把逗号和代表左括号的字母删掉,把结果放入数字栈。#include<bits/stdc++.h>using namespace std;int Calculation(int a,int b,char op){ ...原创 2018-04-03 15:36:58 · 207 阅读 · 0 评论 -
UVA ~ 514 ~ Rails (栈)
题意:某城市有一个火车站,铁轨铺设如图所示。有n节车厢从A方向驶入车站,按建站顺序编号为1~n。你的任务是判断是否能让他们按照某种特定的顺序进入B方向的铁轨并驶出车站。例如,出战顺序(5 4 1 2 3)是不可能的,但(5 4 3 2 1)是可能的。为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C。对于每个车厢,一旦从A一如...原创 2018-05-10 14:02:21 · 196 阅读 · 0 评论 -
UVA ~ 442 ~ Matrix Chain Multiplication (栈)
题意:输入n个矩阵的维度和一些矩阵链乘表达式,输出乘法的次数。如果乘法无法进行,输出error。假定A是m*n,B是n*p的矩阵,那么A*B是m*p矩阵,乘法次数为m*n*p。假定A的列数不等于B的行数,则乘法无法进行。例如,A是50*10的,B是10*20的,C是20*5的,则(A(BC))的乘法次数为10*20*5(BC的乘法次数)+50*10*5((A(BC)))的乘法次数 = 3500分析...原创 2018-05-10 14:17:29 · 211 阅读 · 0 评论 -
UVA ~ 673 ~ Parentheses Balance (栈,括号配对)
题意给定一串由()和[]组成的字符串。如果我们规定以下的字符串是合法的字符串:(1) 空串是合法的字符串(2) 如果A、B都是合法的,那么AB也是合法的字符串。(3) 如果A是合法的,那么(A)和[A]都是合法的字符串。也就是说,所有左右括号必须配对,且不能“切开括号”(如“[(])”或“([)]”)是不匹配的。思路直接拿栈模拟就OK,左括号入栈,右括号判断与栈顶是否匹配,匹配完最...原创 2019-01-06 16:51:08 · 503 阅读 · 0 评论