基础数据结构专题

uva514(经典题目)

入门经典上有题解,但是代码本身其实并不能AC,需要修改,黑书上有非常深入的分析,可以参考

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<string>
 6 #include<vector>
 7 #include<stack>
 8 #include<algorithm>
 9 #include<map>
10 using namespace std;
11 const int maxn=1000+10;
12 int target[maxn];
13 int n;
14 int main()
15 {
16     while(cin>>n&&n)
17     {
18         while(cin>>target[1]&&target[1])
19         {
20             for(int i=2;i<=n;i++)
21             cin>>target[i];
22             stack <int> s;
23             int A=1,B=1;
24             int ok=1;
25             while(B<=n)
26             {
27                 if(A==target[B])  //进站马上出战
28                 {
29                     A++; B++;
30                  }
31                  else if(!s.empty()&&s.top()==target[B])  //站前面有车是可以先出战的
32                  {
33                      s.pop();
34                      B++;
35                   }
36                   else if(A<=n)  s.push(A++);
37                   else
38                   {
39                       ok=0; break;
40                   }
41
42           }
43          cout << (ok ? "Yes" : "No" )<<endl; //注意这里必须括号括起来
44         }
45         cout <<endl;
46     }
47     return 0;
48 }

时间: 2024-08-08 06:12:49

基础数据结构专题的相关文章

入门经典——基础数据结构专题(List)

UVA127 链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=63 一道非常好的栈的模拟题,训练计划又往后推了一周,因为各种事情,不过自己已经做了修改,另外说一下,今晚寝室那两尊神不在,难得的心情好, 这题其实还是看了别人的代码的,大牛博客:http://blog.csdn.net/hyczms/article/details/380

2014 UESTC暑前集训数据结构专题解题报告

A.Islands 这种联通块的问题一看就知道是并查集的思想. 做法:从高水位到低水位依序进行操作,这样每次都有新的块浮出水面,可以在前面的基础上进行合并集合的操作.给每个位置分配一个数字,方便合并集合.同时将这些数字也排一个序,降低枚举的复杂度.合并集合时向四周查询浮出水面但是没有合并到同一集合的点进行合并. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath&

Flink内存管理源码解读之基础数据结构

概述 在分布式实时计算领域,如何让框架/引擎足够高效地在内存中存取.处理海量数据是一个非常棘手的问题.在应对这一问题上Flink无疑是做得非常杰出的,Flink的自主内存管理设计也许比它自身的知名度更高一些.正好最近在研读Flink的源码,所以开两篇文章来谈谈Flink的内存管理设计. Flink的内存管理的亮点体现在作为以Java为主的(部分功能用Scala实现,也是一种遵循JVM规范并依赖JVM解释执行的函数式编程语言)的程序却自主实现内存的管理而不完全依赖于JVM的内存管理机制.它的优势在

排序与基础数据结构

6大排序与6大基础数据结构 本文从冒泡排序撩起,对选择.插入.希尔.归并.快排6种经典的数组排序进行了深入分析,并详解其间的关联,让你深刻理解其中的关键点:同时对经典的数据结构Vector.Stack.Queue.树.Map.Set做了归纳总结,对其底层的实现做了解析,分享给大家,作为每一个中高级程序员应该懂得的算法与排序,祝大家早上走上自己的"成金之路". 目录: 1.排序算法 2.数据结构 3.资料参考 1.排序算法: a.起源: 计算机从诞生起,就在模拟人这种智能生物的行为,而排

线段树--数据结构专题学习

这两周是数据结构专题的学习,,被专题的题目虐得死去活来== 线段树:简单的说就是把[1,n]的区间二分,[1,(1+n)/2]左子树,[(1+n)/2+1,n]右子树 就这样一直分下去,直到都是[x,x]这样的区间.这样就构成了一颗树了^-^ 有这样一棵树,我们就可以在节点中储存区间的和啊,区间内的最大值啊,最小值等等..这就是线段树的附加信息了,也是题目中的重点.. 我们可以用一个数组(长度为k)储存原区间的初始值,然后根据这个建树,所以这个树的节点数最多为4*K: 对于每个节点i,其左子树为

java 基础数据结构

数据结构, 需要考虑两个方面: 1. 每个元素具体的存储方法 (java中是一个对象) 2. 元素之间的关系如何实现存储 (java中也是一个对象) 另外在java中, 已经可以把跟数据结构有关的一些方法写到一个类里了. 线性表 顺序表 c语言: 借助数组实现 #define INIT_SIZE 100; typedef struct { int elem[INIT_SIZE]; // 用来存储数组元素 int length; // 当前顺序表的长度 } SqList; // 元素之间的关系隐含

【UOJ#228】基础数据结构练习题 线段树

#228. 基础数据结构练习题 题目链接:http://uoj.ac/problem/228 Solution 这题由于有区间+操作,所以和花神还是不一样的. 花神那道题,我们可以考虑每个数最多开根几次就会成1,而这个必须利用开根的性质 我们维护区间最大.最小.和.区间加操作可以直接做. 区间开方操作需要特殊考虑. 首先对于一个区间,如果这个区间的所有数取$x=\left \lfloor \sqrt{x} \right \rfloor$值一样,那么就可以直接区间覆盖. 分析上述过程,一个区间可以

理解 OpenStack &amp; Ceph (4):Ceph 的基础数据结构 [Pool, Image, Snapshot, Clone]

本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenStack 集成的实现 (6)TBD 1 Pool(池) Pool 的概念前面讲过了,Ceph 支持丰富的对 Pool 的操作,主要的包括: 列表.创建和删除 pool ceph osd pool create {pool-name} {pg-num} [{pgp-num

OpenCV基础数据结构--基础入门

 图像数据结构 IPL 图像: IplImage |-- int  nChannels;     // 色彩通道数(1,2,3,4) |-- int  depth;         // 象素色深: |                       //   IPL_DEPTH_8U, IPL_DEPTH_8S, |                       //   IPL_DEPTH_16U,IPL_DEPTH_16S, |                       //   IPL_