
数据结构-线性表
文章平均质量分 67
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
uva 133 The Dole Queue(模拟)
#include#includeusing namespace std;#define N 25int num[N];int main(){ int n,lift,right; int i; while(cin>>n>>lift>>right,n||lift||right) { //Init. int cnt=n; int now_lift=1,now_righ原创 2013-07-07 17:22:17 · 1487 阅读 · 1 评论 -
Codeforces 442C Artem and Array(stack+贪心)
题目连接:Codeforces 442C Artem and Array题目大意:给出一个数组,每次删除一个数,删除一个数的得分为两边数的最小值,如果左右有一边不存在则算作0分。问最大得分是多少。解题思路:首先将连续的a,b,c,a > b && c > b的情况将c掉,获得min(a,b)分,这样处理后数组变成一个递増再递减的序列,除了最大和第二大的取不到,其他数字均可以得分。原创 2014-06-30 09:20:04 · 2151 阅读 · 0 评论 -
hdu 4923 Room and Moor(线性表)
题目链接:hdu 4923 Room and Moor题目大意:给定一个序列a,元素由0,1组成,求一个序列b,元素在0~1之间,并且保证递增。输出最小的∑(ai−bi)2,解题思路:首先剔除为首的0,和末尾的1,然后将中间部分成若干段由连续1开头,连续0结尾的各个段落。对于每一段有一个最优的值x=aa+b(a为1的个数,b为0的个数),用栈维护各个段的x值,如果当前x值小于前面一原创 2014-08-07 17:51:45 · 1512 阅读 · 0 评论 -
uva 11997 - K Smallest Sums(优先队列)
题目链接:uva 11997 - K Smallest Sums题目大意:有k个整数数组,包含k个元素,在每个数组中取一个元素加起来可以得到kk个数,输出最小的k个。解题思路:问题可以转换成对两个长度为k个数组中各选一个后的和中最小的k个值,然后做k-1次处理即可。#include #include #include #include using namespace原创 2014-08-23 13:42:57 · 892 阅读 · 0 评论 -
uva 540 Team Queue(队列+模拟)
Team Queue Queues and Priority Queues are data structures which are known to most computer scientists. The Team Queue, however, is not so well known, though it occurs often in everyday原创 2013-07-19 15:26:32 · 1406 阅读 · 0 评论 -
uva 501 - Black Box(优先队列)
题目链接:uva 501 - Black Box题目大意:有一个集合,给定元素进入集合的顺序,现在有Q次查询,给定每次查询在第几个元素进入集合后,对于每i次查询,输出集合中第i小的数。解题思路:用两个优先队列维护,队列a优先出值大的,队列b优先出值小的,在第i次询问前,保证a队列中有i-1个元素元素,并且抱枕都比b中的小,然后每次询问输出b队列的首元素,并且将它放到a队列中。#原创 2014-08-24 00:03:28 · 2150 阅读 · 0 评论 -
uva 1203 - Argus(优先队列)
题目链接:uva 1203 - Argus题目大意:一个成为Argus的系统,支持一个Register命令Register Q_num Period该命令为一个祖册出发器,每Period产生一次Q_num的时间。要求模拟k个事件,如果多个事件同时发生,现处理Q_num小的。解题思路:用优先队列维护即可,队列中按照时间小的优先,时间相同的比较Q_num,每次处原创 2014-08-23 13:39:58 · 1334 阅读 · 0 评论 -
uva 10410 - Tree Reconstruction(栈)
题目链接:uva 10410 - Tree Reconstruction题目大意:给定一个树的BFS和DFS,求这棵树。解题思路:用栈维护即可。对应BFS序列映射出了每个节点和根节点的距离,遍历dfs序列,对当前节点和栈顶节点比较,如果该节点距离根节点更远,则说明该节点为栈顶节点个孩子节点,则记录后将节点放入栈中。否则弹掉栈顶元素继续比较。需要注意一点,即当元素与栈顶元素的距离值大原创 2014-08-23 14:35:33 · 3679 阅读 · 1 评论 -
uva 246 - 10-20-30(双端队列+模拟)
题目链接:uva 246 - 10-20-30题目大意:一个人在玩纸牌游戏,给定牌的顺序,轮流为7堆牌发牌。如果满足条件,可以一直收取堆上的3张牌,直到不满足为止如果牌堆出现空的情况,那么以后的发牌将跳过这个牌堆(初始不算)求在第几步可以确定游戏的状态:胜利,失败,循环解题思路:用8个双端队列模拟即可。#include #include #include #i原创 2014-08-23 14:48:27 · 2008 阅读 · 0 评论 -
uva 10588 - Queuing at the doctors(优先队列)
题目链接:uva 10588 - Queuing at the doctors题目大意:公司安排职员去进行体检。一共有n个人,m个项目,给定每个职员到达医院的时间,以及需要体检的项目和顺序,每个项目检查一人需要消耗单位时间。每个项目的医生优先体检先到的职员,对于同时到的职员优先处理职员编号小的。求最后一个员工离开医院的时间。解题思路:对每一个项目开一个优先队列,然后遍历时间,每次对原创 2014-08-23 14:29:02 · 1430 阅读 · 0 评论 -
uva 514 - Rails(栈)
题目链接:uva 514 - Rails题目大意:给定n,表示有一个序列从1到n,问说通过一个栈的转换,可否形成给定序列。解题思路:出现ai−1>ai+1且ai+1>ai的情况就不行。#include #include #include using namespace std;const int maxn = 1005;int N, arr[maxn];boo原创 2014-08-23 14:48:03 · 1519 阅读 · 0 评论 -
hdu 4122 Alice's mooncake shop(单调队列)
题目链接:hdu 4122 Alice's mooncake shop题目大意:给定N和M,表示有N个订单,M个时刻可以做月饼,时刻以小时计算,任意时刻可以做若干个月饼。接着N行为N个订单的信息,包括时间和数量。再给定T和S,表示每个月饼的保质时间和每保存一小时的开销。然后M行为对应每个时刻制作月饼的代价。问说最少花费多少代价完成所有订单。解题思路:单调队列或者RM原创 2014-10-28 09:41:58 · 1516 阅读 · 0 评论 -
hdu 5475 An easy problem(线段树)
题目链接:hdu 5475 An easy problem解题思路单点修改。貌似直接暴力都可以过,数据很弱。代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1e5 + 5;#define lson(x) ((x)<<1)#define rson(x)原创 2015-09-30 16:30:58 · 904 阅读 · 0 评论 -
uva 1169 - Robotruck(dp+单调队列)
题目链接:uva 1169 - Robotruck题目大意:给出W和n,W表示机器人的限载重量,n表示有n个垃圾,然后给出n个垃圾的坐标和重量,要求清理垃圾按照垃圾的序号从小到大,机器人可以一次清理多个垃圾,只要重量不大于W,位于原点有垃圾桶,现在机器人从原点出发,要求清理完所有的垃圾的曼哈顿距离最小。解题思路:dp[i]表示清理完i号垃圾返回原点的最短曼哈顿距离,d[i]原创 2014-02-19 15:49:25 · 1631 阅读 · 0 评论 -
uva 1427 - Parade(dp+单调队列)
题目链接:uva 1427 - Parade题目大意:F城由n+1各横向路和m+1个竖向路组成。你的任务是从最南边的路走到最北边的路,使得走过的路上的高兴值和最大(高兴值可能为负值)。同一段路不能经过两次,且不能从北往南走。另外在每条横路上所花费的时间不能超过k。解题思路:dp[i][j][0]表示走到(i,j)这个位置的最大开心值和,dp[i][j][1]表示从左边移动到原创 2014-02-26 13:15:22 · 1592 阅读 · 0 评论 -
uva 11234 Expressions(后缀变层次)
ExpressionsArithmetic expressions are usually written with the operators in between the two operands (which is called infix notation). For example, (x+y)*(z-w) is an arithmetic expression in inf原创 2013-07-18 15:13:07 · 1240 阅读 · 0 评论 -
uva 127 ``Accordian'' Patience(栈+模拟)
``Accordian'' Patience You are to simulate the playing of games of ``Accordian'' patience, the rules for which are as follows:Deal cards one by one in a row from left to right, n原创 2013-07-07 10:16:55 · 1691 阅读 · 0 评论 -
uva 101 The Blocks Problem(模拟)
The Blocks Problem Background Many areas of Computer Science use simple, abstract domains for both analytical and empirical studies. For example, an early AI study of planning原创 2013-07-16 18:29:14 · 1502 阅读 · 0 评论 -
uva 673 Parentheses Balance(栈)
You are given a string consisting of parentheses () and []. A string of this type is said to be correct:(a)if it is the empty string(b)if A and B are correct, AB is correct,(c)if A is correct, (A)原创 2013-07-17 00:26:20 · 1410 阅读 · 0 评论 -
uva 11111 Generalized Matrioshkas(栈)
Problem B - Generalized Matrioshkas Vladimir worked for years making matrioshkas, those nesting dolls that certainly represent truly Russian craft. A matrioshka is a doll that may be opene原创 2013-07-19 19:56:43 · 1327 阅读 · 0 评论 -
hdu 1022 Train Problem I(栈)
题目链接:hdu 1022 Train Problem I题目大意:有一列火车,给出车厢数和车厢的序列,目标序列,通过一个类似栈的车轨,能不能变成目标序列,能得话输出方案。解题思路:虽说有一种遍历的方式可以判断,即当目标序列存在a,b,c这样的序列时,若f(a) > f(c) > f(b)时即为不可变为的序列,(f(i)代表第i个元素在原序列中的出现的顺序),但对与本体我觉原创 2013-10-18 14:33:36 · 1327 阅读 · 0 评论 -
fzu 1894 志愿者选拔(双端队列)
题目链接:fzu 1894 志愿者选拔题目大意:中文题不解释。解题思路:第一次做双端队列的题目,就是维护队列按照从大到小的。然后队列中的每个元素有一个key值,是元素入队的顺序,然后每次加入一个元素的时候,要将队尾所有比该元素小的全部删除,放入该元素。#include #include #include using namespace std;con原创 2013-12-04 23:56:37 · 1260 阅读 · 0 评论 -
uva 1422 - Processor(二分+优先队列)
题目链接:uva 1422 - Processor题目大意:有一个机器要处理一些问题,给出这些问题可以开始的时间和必须完成的时间,以及任务的工作量,问说机器必须以最少每秒多少得工作量才能完成这些任务。解题思路:二分答案,答案的上限是MaxWork * MaxN(全在一秒内完成)。然后就是判断说在c的工作量小是否能完成任务。因为处理一个问题的时间可以不连续,所以给解题增加了难原创 2013-12-17 00:25:28 · 2846 阅读 · 0 评论 -
uva 11134 - Fabled Rooks(问题转换+优先队列)
题目链接:uva 11134 - Fabled Rooks题目大意:给出n,表示要在n*n的矩阵上放置n个车,并且保证第i辆车在第i个区间上,每个区间给出左上角和右小角的坐标。另要求任意两个车之间不能互相攻击。解题思路:因为要保证说每两个车之间不能互相攻击,那么即任意行列都不能摆放两个以上的车,转而言之可以看成是将每一行或列分配给每辆车。如果行和列和起来考虑的话复杂原创 2013-12-18 21:55:44 · 1302 阅读 · 0 评论 -
uva 11106 - Rectilinear Polygon(优先队列+链表+并查集)
题目链接:uva 11106 - Rectilinear Polygon题目大意:给出若干个点,判断说能否将这若干个点连成一个全为直角的图形,要求没有一条线段经过三点。输出图形的周长。解题思路:首先同以横坐标相邻的两个一定相连,同理纵坐标。然后会由说可能选完的的边出现了相交的情况或者说不止一个图形。不止一个图形比较好解决,并查集判断所有点是否联通。相交的情况就比较复原创 2014-01-11 01:11:31 · 1553 阅读 · 0 评论 -
CodeForces 337B Preparing for the Contest(二分+贪心+优先队列)
题目链接:CodeForces 337B Preparing for the Contest题目大意:有n个人,m个病毒,s张通行证,然后给出m个病毒的等级,n个人的等级,以及n个人去杀病毒所需要的通行证数量,问所最少花费几天可以杀光病毒,并输出每个病毒被那一个人所清理。PS:人要杀病毒必须等级大于等于病毒,一个人只需支付一次通行证。解题思路:二分+贪心+优原创 2014-01-29 17:49:10 · 2002 阅读 · 0 评论 -
uva 442 Matrix Chain Multiplication(模拟)
Matrix Chain Multiplication Suppose you have to evaluate an expression like A*B*C*D*E where A,B,C,D and E are matrices. Since matrix multiplication is associative, the order in which mul原创 2013-07-07 09:42:14 · 1411 阅读 · 0 评论 -
hdu 4699 Editor(单调栈)
题目链接:hdu 4699 Editor解题思路光标前后各用一个栈维护即可代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1e6 + 5;struct Stack { int n, s[maxn]; void init() { n = 0;原创 2015-11-12 14:43:27 · 707 阅读 · 0 评论