随笔分类 - 

摘要:字典树 或者 map...... map 8000+ ms 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 14 using namespace std;15 16 struct cmp17 {18 bool operator() (pair a, pair b)19 {20 return a > b;21 ... 阅读全文
posted @ 2013-08-19 21:06 好小孩 阅读(168) 评论(0) 推荐(0)
摘要:给你N个棍子,每个棍子的两端涂有颜色。两个涂有一种颜色的端点可连在一起。 问这N根棍子是否能连成一条直线。 可以把每个棍子看成一条边,端点为两个节点。则问题转化成所给的这些端点是否连通,若连通是否存在一笔画的问题,即是否存在欧拉回路。 并查集+路径压缩 判断图是否连通。 另在图连通的情况下若不存在度数为奇数的点或有且仅有两个度数为奇数的点,则存在欧拉回路。 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 int me[51000... 阅读全文
posted @ 2013-08-13 16:49 好小孩 阅读(118) 评论(0) 推荐(0)
摘要:题意:一群人在地图上走啊走 每走到一个 ‘S’ 或者 ‘A’ 就可以分开一次 最多分成四个小队(因为只有四个方向可以走),直到找到所有的‘A’,输出能找到所有‘A’的最小的步数。 注意,新的小队的移动次数从0开始计算。 显然,最小生成树算法。每一组相邻的'A'都可以看成是一个整体,这些独立的整体组成了一个图,在这个图上选取一个最小生成树,这颗最小生成树的边的权值之和即为答案。 此题新颖之处在于寻找最短的那条边。一提到最短边显然要用到BFS。 开始的时候以‘s’为BFS的起点出发 找到离它最近的那个‘A’,把这一组‘A’和‘s’看成一个整体,再以这个新的整体为BFS的起点出发,继 阅读全文
posted @ 2013-08-07 09:12 好小孩 阅读(200) 评论(0) 推荐(0)
摘要:首先要强调一点 这不是一道ACM题,这是他妹的一道英语阅读理解。 题意:输入N 代表有N种汽车。每两种汽车之间有一条边,边的权值的定义为 两串字符串之间有几个不同的字母。。。稠密图。。。。普利姆 或者 克鲁斯卡尔 + 路径压缩 我认为后者能通吃所以很无耻的不会第一种。。。。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 using namespace std;10 11 char s[2010][10];12 13 struct E14 {15 ... 阅读全文
posted @ 2013-08-06 16:36 好小孩 阅读(287) 评论(0) 推荐(0)
摘要:链接 :http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2127&cid=1184AC code 130ms 和优先队列还是有一定差距的 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 struct N 9 {10 int data;11 N *l,*r;12 };13 14 struct N *creat()15 {16 N *p = (N *)malloc(sizeof(N));17 p->l =... 阅读全文
posted @ 2013-06-29 01:06 好小孩 阅读(199) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 struct N 10 { 11 char data; 12 N *l,*r; 13 }; 14 15 N *creat() 16 { 17 N *p = (N *)malloc(sizeof(N)); 18 p->l = p->r = NULL; 19 return p; 20 } 21 22 void insert(N *root,char s) ... 阅读全文
posted @ 2013-06-28 20:39 好小孩 阅读(229) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 struct N 10 { 11 char data; 12 N *l,*r; 13 }; 14 15 N *creat() 16 { 17 N *p = (N *)malloc(sizeof(N)); 18 p->l = p->r = NULL; 19 return p; 20 } 21 22 int site = 0; 23 24 bool in... 阅读全文
posted @ 2013-06-28 19:59 好小孩 阅读(177) 评论(0) 推荐(0)
摘要:链接 :http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1500题目大意 : 先输入N个字符串,再输入M个字符串,统计一下N个中有多少个为在M个出现。注意转换大小写。时间 110MS 内存 1474KB#include #include #include #include #include #include using namespace std;struct N{ char b[11]; bool m; struct N *l,*r;};N *creat(){ N *p = ... 阅读全文
posted @ 2013-06-28 10:24 好小孩 阅读(172) 评论(0) 推荐(0)