<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Tander_Tang的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Tander_Tang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Tander_Tang]]></copyright><item><title><![CDATA[第7讲-SQL语言复杂查询之视图]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/51335264</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/51335264</guid><author>Tander_Tang</author><pubDate>Fri, 06 May 2016 22:49:00 +0800</pubDate><description><![CDATA[三级模式两层映像：对应概念模式的数据在SQL中被称为基本表，而对应外模式的数据称为视图。视图不仅包含外模式，而且包含E-C映像。

SQL数据库结构：

      1)基本表是实际存储文件的表，基本表中的数据时需要存储的。

      2)视图在SQL中只存储其由基本表导出视图的所有公式，即由基本表产生视图的映像信息。视图并不存储数据。

      3)对视图数据的更改最终要]]></description><category></category></item><item><title><![CDATA[第7讲 -SQL语言关系代数实现]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/51327477</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/51327477</guid><author>Tander_Tang</author><pubDate>Fri, 06 May 2016 00:29:01 +0800</pubDate><description><![CDATA[(1)SQL语言集合运算，并UNION,交INTERSECT,差EXCEPT

基本语法：     子查询1{Union [ALL]|Intersect [ALL]|Except [ALL] 子查询2}

通常下，删除重复元组不带ALL,若要保留重复元素就要带ALL

子查询1的一个元组出现m次，子查询2的一个元组出现n次在，在结果中：

     1)子查询1 Union ALL]]></description><category></category></item><item><title><![CDATA[第7讲 SQL复杂查询---聚集函数以及分组过滤]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/51308626</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/51308626</guid><author>Tander_Tang</author><pubDate>Tue, 03 May 2016 23:11:55 +0800</pubDate><description><![CDATA[聚集函数：

Count: 求集合元组个数

SUM ：求和

AVG ：求平均

MAX： 求最大

MIN ： 求最小

例：求计算机系教师工资总额。

select SUM(salary)
From Teacher T,Dept
where T.Dname='计算机' and Dept.D#=Teacher.D#;


例： 求数据库课程的平均成绩。]]></description><category></category></item><item><title><![CDATA[第7讲-SQL语言复杂查询--（NOT）Exists]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/51280429</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/51280429</guid><author>Tander_Tang</author><pubDate>Fri, 29 Apr 2016 11:20:35 +0800</pubDate><description><![CDATA[SQL语言复杂查询-(NOT) Exists

语法：[not] Exists（子查询）

语义：子查询有无元组存在

例：检索选修了赵三老师主讲课程的所有同学姓名。

select DISTINCT Sname From student
where exists
     (select * From SC,Course,Teacher
where SC.C#=Course.C#]]></description><category></category></item><item><title><![CDATA[第7讲 SQL语言复杂查询之-Theta-some与Theta-all]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/51273260</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/51273260</guid><author>Tander_Tang</author><pubDate>Thu, 28 Apr 2016 13:11:15 +0800</pubDate><description><![CDATA[Theta-some与Theta-all(子查询)

语法：  表达式  Theta some  (子查询）

              表达式  Theta all   （子查询）

其中 Theta 是比较运算符： ,>=,=.

语义将表达式的值与子句进行比较：

     1.如果表达式中至少与子查询结果比较有一个满足 Theata关系，“ 表达式  Theta so]]></description><category></category></item><item><title><![CDATA[第7讲-SQL语言复杂查询-(NOT) in语句]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/51261190</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/51261190</guid><author>Tander_Tang</author><pubDate>Wed, 27 Apr 2016 14:55:25 +0800</pubDate><description><![CDATA[有的时候会有以下条件的判断：

      1）某一元素是否是某一集合的成员

      2）集合之间的比较，某一集合是否属于另一集合

      3）测试集合是否为空

      4）判断集合是否有重复的元组

       ......

子查询的定义：出现在where语句的select语句被称为子查询。子查询返回一个集合，可以通过这个集合的比较来确定另一个集合。]]></description><category></category></item><item><title><![CDATA[第6讲 SQL语言概述]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50899956</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50899956</guid><author>Tander_Tang</author><pubDate>Sun, 24 Apr 2016 18:30:22 +0800</pubDate><description><![CDATA[1.SQL语言是集DDL，DML，DCL为一体的语言。它主要由9个单词操作构成：
           1）DDL ： Create (建立)，Alter(删除)，Drop（撤销）。
模式的定义和删除。包括 Database,Table,View,Index.以及完整性约束条件等。
           2）DML ： Insert, Delete, Update, Select
各种问题]]></description><category></category></item><item><title><![CDATA[单源最短路径Dijstra算法]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/51020315</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/51020315</guid><author>Tander_Tang</author><pubDate>Wed, 30 Mar 2016 23:00:13 +0800</pubDate><description><![CDATA[Dijstra算法是寻找从某一顶点i出发到大其他顶点的最短路径。Distra算法的思想与Prim算法很像，它收录顶点的规则是按照路径长度递增的顺序收录的。设v0是源顶点，我们要寻找从v0出发到其他任意一点的最短路径。设已经求解的顶点(已经找到从v0出发到达该顶点最短路径的顶点)组成的集合是S={v0,v1,...vk};在收录下一个顶点v的时候要么是(v0,v),要么是(v0,vj,v);如果是后]]></description><category></category></item><item><title><![CDATA[hdu1242]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50992861</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50992861</guid><author>Tander_Tang</author><pubDate>Sun, 27 Mar 2016 18:01:23 +0800</pubDate><description><![CDATA[这个题目采用BFS,需要注意以下几点：
     1）朋友不止一个，只需要找到所有朋友中到达Angle的最小时间。即可以从a出发找最近的r。
     2）由于在有x的地方花费时间是2，其他空地是1.这时需要用到优先队列，每次弹出的是时间最短的节点。
（以后写BFS还是DFS时需要注意先标记再入栈，如果先入栈，弹出时再标记，可能导致同一个节点入栈多次，以后得注意了。在这个位置老是WA）
#]]></description><category></category></item><item><title><![CDATA[hud1875]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50974654</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50974654</guid><author>Tander_Tang</author><pubDate>Thu, 24 Mar 2016 20:12:22 +0800</pubDate><description><![CDATA[1.Prim算法
#include
#include
using namespace std;
#define MAX_SIZE 102
struct Point{
	double x, y;
};
bool visit[MAX_SIZE];         //记录点j是否在树中
int Parent[MAX_SIZE];        //记录父节点
double LowCost[MAX_S]]></description><category></category></item><item><title><![CDATA[hdu1102最小生成树]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50970184</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50970184</guid><author>Tander_Tang</author><pubDate>Thu, 24 Mar 2016 11:23:26 +0800</pubDate><description><![CDATA[1.使用kruskal算法
        题目中给出了一些道路，这些道路将村庄构成了部分连通集。我们要求的是使得整个村庄连通花费最小的道路长度和。实际上就是一个最小生成树问题.。在这里我们已知了给出的一些边(可能不是整个图最小生成树的边，不过这不要紧，只需要接下来我们选择的边长度和最小即可)。在给出的边的集合已经构成了部分连通集，接下来我们将所有的边放在一个最小堆中，每次取出权重最小的边，看边]]></description><category></category></item><item><title><![CDATA[hdu 1232畅通工程]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50965108</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50965108</guid><author>Tander_Tang</author><pubDate>Wed, 23 Mar 2016 17:40:16 +0800</pubDate><description><![CDATA[这是一个比较简单的并查集题目。我们把每一片城区看做一个集合(图的一个连通集)，然后统计一共有k个集合，连接两个集合需要1条边，从而整个需要 k-1条边。#include
using namespace std;
#define MAX_SIZE 1000
int parent[MAX_SIZE];
int findParent(int i);
void Union(int i, int j);
i]]></description><category></category></item><item><title><![CDATA[DFS与BFS]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50954624</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50954624</guid><author>Tander_Tang</author><pubDate>Tue, 22 Mar 2016 14:02:40 +0800</pubDate><description><![CDATA[1.深度优先搜索(DFS)
       深度优先搜索类似于树的先序遍历，是树的先序遍历的推广。在图是连通的情况下，可以从图的任意v一顶点出发，访问该顶点，然后依次从v的没有被访问的邻接点进行同样的深度优先搜索。访问时需要定义一个布尔数组 visite[ i ]来记录第i个顶点是否访问过。递归和非递归代码如下：
void DFS(int i){
	visit[i] = true;    //访]]></description><category></category></item><item><title><![CDATA[图的存储]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50951153</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50951153</guid><author>Tander_Tang</author><pubDate>Mon, 21 Mar 2016 23:01:06 +0800</pubDate><description><![CDATA[1.邻接矩阵
     一维数组存储顶点信息，用二维数组存储边信息。空间复杂度为O(n^2)，无向图的邻接矩阵一定是对称的，它的第i行或者第i列不为0或者∞的元素个数正好是 顶点 i或者j的度。用邻接矩阵很容易知道两条边之间是否有边相连，而且也很直观简单。但是要确定图中有多少条边的时间复杂度是O(n^2)，在存储稀疏图时还会浪费大量的空间，这是邻接矩阵的局限性。
2.邻接表
    邻接表是]]></description><category></category></item><item><title><![CDATA[图论基本定义和术语]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50950128</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50950128</guid><author>Tander_Tang</author><pubDate>Mon, 21 Mar 2016 20:53:55 +0800</pubDate><description><![CDATA[1.图的定义
         图(Graph)是由两个集合构成，一个是非空但是有限的顶点集合V,另一个是描述结合间的关系边的集合E,因此图可以表示为G=(V,E).每条边是一对顶点(v,w)且 v,w∈V.通常|V|和|E|表示顶点个数和边的数量。值得注意的是图中顶点一定不能为空，而边可以为空。
 2.图的相关术语
       1)无向图：无向图是指图中的边没有方向性即边(v,w)与边(]]></description><category></category></item><item><title><![CDATA[hdu3608最长回文子串]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50936057</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50936057</guid><author>Tander_Tang</author><pubDate>Sun, 20 Mar 2016 12:41:26 +0800</pubDate><description><![CDATA[首先做这个题目时候以为是动态规划，可惜的是超时了。虽然超时了，但还是先说说动态规划。设原串为s用DP[i,j]表示s[i...j]中最大回文字串的长度，则DP[i,j]的子问题可以划分为DP[i+1,j],DP[i,j-1],以及DP[i+1,j-1].当然还需要一个数组flag[i,j]来记录状态。若flag[i,j]=1，则它表示在 s[i,j]中两个端点字符s[i】与s[j] 是s[i..j]]></description><category></category></item><item><title><![CDATA[hdu3746 Cyclic Nacklace]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50935750</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50935750</guid><author>Tander_Tang</author><pubDate>Sun, 20 Mar 2016 11:25:53 +0800</pubDate><description><![CDATA[看好半天才明白题意。题目大意是说给定一个串，需要在两端加上一些字符，求最少加上多少字符可以使得这个串成为周期循环串。由于要构成环，所以在两端加字符和在一端加其实没什么区别，于是我们只考虑在右端加字符。其实这就是KMP算法中的Next表的应用，所以需要很好的理解Next表格的含义。
        先来回顾下Next[j]的含义。设模式串为P[0...m-1],则Next[j]表示P的前缀串P[0]]></description><category></category></item><item><title><![CDATA[C语言的输入与输出]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50933258</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50933258</guid><author>Tander_Tang</author><pubDate>Sat, 19 Mar 2016 21:32:05 +0800</pubDate><description><![CDATA[在提交ACM代码时，C++的输入输出在时间上并不占优势，而C语言的 printf 和 scanf 相对来说效率更高。所以在比赛时，尽量选择使用C语言的输入输出。C语言本身不提供输入输出语句，输入输出操作是C语言标准库的函数来实现的。在C的标准库函数提供了输入输出函数，例如printf函数和scanf函数。它们不是C的关键字，而是库的函数名。
     1. printf 函数的一般格式：prin]]></description><category></category></item><item><title><![CDATA[KMP算法]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50921738</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50921738</guid><author>Tander_Tang</author><pubDate>Fri, 18 Mar 2016 11:18:39 +0800</pubDate><description><![CDATA[KMP算法的全称为：Knuth-Morris-Pratt 。朴素算法效率不高根本原因在于进行了多次重复的比较，没有充分利用已匹配的字符的信息。设文本为T,匹配模式为P;例如：
          T ： a b a b c d a b b a b a b a d
          P  :   a b a b a b a
上面模式P与文本匹配，在从开始匹配到字符T[4]！=P[4]时，普通]]></description><category></category></item><item><title><![CDATA[朴素字符串匹配与Karbin-Karp算法]]></title><link>https://blog.youkuaiyun.com/Tander_Tang/article/details/50918039</link><guid>https://blog.youkuaiyun.com/Tander_Tang/article/details/50918039</guid><author>Tander_Tang</author><pubDate>Thu, 17 Mar 2016 23:05:37 +0800</pubDate><description><![CDATA[字符串的精度匹配就是在文本T中找出模式P的精确副本，并求出匹配的位置下标。即如果P[0...m-1]==T[k...k+m-1] ,则称P与T的子序列匹配成功。我们要找出所有匹配成功的k。
     朴素字符串匹配方法很简单。从文本T的第一个字母和模式P的第一个字母开始比较。如果不匹配，就从T的第二个字母开始匹配，依次类推，不保留所有有用得信息。设P和T的长度分别为m和n .这]]></description><category></category></item></channel></rss>