摘要:
小红很喜欢玩一个叫打砖块的游戏,这个游戏的规则如下: 在刚开始的时候,有n行*m列的砖块,小红有k发子弹。小红每次可以用一发子弹,打碎某一列当前处于这一列最下面的那块砖,并且得到相应的得分。如图所示: 某些砖块在打碎以后,还可能将得到一发子弹的奖励。最后当所有的砖块都打碎了,或者小红没有子弹了,游戏结束。 小红在游戏开始之前,就已经知道每一块砖在打碎以后的得分,并且知道能不能得到一发奖励的子弹。小红想知道在这次游戏中她可能的最大得分,可是这个问题对于她来说太难了,你能帮帮她吗输入文件 第一行有3个正整数,n,m,k。表示开始的时候,有n行*m列的砖块,小红有k发子弹。接下来有n行,... 阅读全文
摘要:
一.潜伏者(有一一对应的特殊错误关系,可用代码中二重循环判断)View Code 1 program spy(input,output); 2 var a:array['A'..'Z'] of char; 3 i,j:longint; 4 s1,s2,s3:ansistring; 5 ch:char; 6 begin 7 assign(input,'spy.in');reset(input); 8 assign(output,'spy.out');rewrite(output); 9 fillchar(a,sizeof(a), 阅读全文
摘要:
一.机器翻译View Code 1 program translate(input,output); 2 var 3 q : array[0..10001] of longint; 4 v : array[0..1000] of boolean; 5 head,tail : longint; 6 n,m,ans,i,x : longint; 7 begin 8 assign(input,'translate.in');reset(input); 9 assign(output,'translate.out');r... 阅读全文
摘要:
求极大强连通分量的Tarjan算法 首先,在有向图G中,如果两个顶点vi,vj间(vi<>vj)都有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components),如果一个强连通分量中不再能加入任何一个顶点,则这个强连通分量是一个极大强连通分量。 由上面的定义,可以知道,强连通分量中各点可以互相到达,则我们可以找到每个极大强通分量的“根结点”,再通过从底层节点 阅读全文
摘要:
原创是我可敬的师傅,搜索到的上面那个应该就是原文. 单调队列及其应用 单调队列,望文生义,就是指队列中的元素是单调的。如:{a1,a2,a3,a4……an}满足a1<=a2<=a3……<=an,a序列便是单调递增序列。同理递减队列也是存在的。 单调队列的出现可以简化问题,队首元素便是最大(小)值,这样,选取最大(小)值的复杂度便为o(1),由于队列的性质,每个元素入队一次,出队一次,维护队列的复杂度均摊下来便是o(1)。如何维护单调队列呢,以单调递增序列为例:1、如果队列的长度一定,先判断队首元素是否在规定范围内,如果超范围则增长队首。2、每次加入元素时和队尾比较,如果当前元 阅读全文
摘要:
【题目描述】司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响。现在,将军们规划如何部署炮兵部队,在防止误伤的前提下(保证任 阅读全文