ACM——之路
南山小翁
活在当下,要有思想,每个人不是随随便便就能成功!
展开
-
uva10038
一道简单的题目 学到一点东西 感觉剪枝就是找bug 挺爽的 // 做这种题目的时候,一定要细心 1.注意数据的取值2.正负号问题 3.开始和结尾的值的大小 #include #include #define max 3007 long long num[max]; long long check[max]; int main() { long long ans; long lon原创 2012-09-27 11:23:40 · 598 阅读 · 1 评论 -
hdu1247 简单的字典树
题意:给你n个单词,这些单词组成一个单词表。然后,在对这其中的的每个单词进行拆分(拆成两个单词),判断是否拆分完的单词是否都在这个单词表中,如果是输入该单词。 #include #include #include struct dirtree { struct dirtree *child[26]; bool vis; }; char word[50000]原创 2013-01-11 11:04:45 · 682 阅读 · 0 评论 -
hdu1251 字典树的动态存储 不错!
#include #include #include struct dirtree { struct dirtree *child[26]; int n; }; struct dirtree *root; void BuildTree(char *word) { int len=strlen(word); struct dirtree *tem,*Root;原创 2013-01-11 11:10:09 · 519 阅读 · 0 评论 -
表达式求值问题
OnlineJudge调查问卷 ACboy(ACboy) 收件箱(0)注销 最值问题 Time Limit: 1000MS Memory limit: 65536K 题目描述 最值问题一直是我们比较关注的问题,设想一下当给定一个不含括号算数表达式后,加入适当的括号,必会取得最值。为了简化问题今天我们只考虑算术原创 2013-03-11 22:51:53 · 657 阅读 · 0 评论 -
poj1840 hash映射
注意short hash[25000001]; 用int会超时 暴力解决。。。。 。公式变形,利用hash映射,多对一。#include #include #define max 25000000 short hash[25000001];//注意a,x1,b,x2的组合数(50*50^3*2)*2 int main() { int a,b,c,d,e; int x1,x2,原创 2013-03-14 16:26:03 · 679 阅读 · 0 评论 -
比赛题目
Give Me the Number Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 7 Accepted Submission(s) : 2 Problem Description Numbers in Engl原创 2013-03-14 21:39:08 · 621 阅读 · 0 评论 -
zoj3204
题意:给你N台电脑,让你把它们全部连在一起,当把两个电脑连在一起时,有一定的花费,问你最小的花费是多少? 注意:i和j相连同j和i相连是一样的,可以间接的连在一起,例如:i和j相连,j和t相连,那么i和t也相连。 按照字典序输出,利用qsort()排序。然后判断连通度即可。#include #include #include #define max 110 using namespace st原创 2013-03-22 14:30:26 · 647 阅读 · 0 评论 -
hdu1671字典树+动态分配内存
题意很好理解,这里只介绍思路: 以前做字典树,为了方便都是静态分配内存,所以代码写出来很容易出bug,学了强连通之后,发现动态分配内存狠给力,所以就尝试用动态分配内存做了两道题目: 题很简单,自己只是想学习一下动态分配内存 #include #include #include #include #include using namespace std; int flag=0; struct原创 2013-04-15 20:41:49 · 1513 阅读 · 0 评论 -
hdu1247 字典树 单词拆分 如果让我说:我只能说,实力决定一切
思路:与普通的字典树不同的是,该题 我们需要把一个单词拆分成两个单词,例如:bbccc 可以拆分成:b bccc等等。然后判断拆分后的两个单词是不是在字典树中。 #include #include #include #include using namespace std; struct dirtree { struct dirtree *child[26];原创 2013-05-01 10:38:53 · 610 阅读 · 0 评论 -
AVL树的插入、删除、旋转
什么是AVL树? 在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个儿子子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis,他们在1962年的论文《An alg转载 2012-11-14 19:53:35 · 589 阅读 · 0 评论 -
poj1056 http://poj.org/problem?id=1056
字典树题目: #include #include #define max 3000 struct node { bool ju; struct node *next[16]; } Node,Rood[max]; int sum=0; int BuildTree(char *word) { node *root=&Node; while(原创 2012-10-28 17:10:11 · 872 阅读 · 0 评论 -
poj2513 很好的一道题目 并查集+字典树
题意:You are given a bunch of wooden sticks. Each endpoint of each stick is colored with some color. Is it possible to align the sticks in a straight line such that the colors of the endpoints that touc原创 2012-10-27 15:38:56 · 764 阅读 · 0 评论 -
poj2524 很简单的一道并查集
题意很简单:就是求不连通的个数。 //好久没做并查集了,快没感觉了,找了个简单的题目练练。 //以后得注意了,学的东西要及时巩固。 //时间有点长 可以继续优化; //rank[]的值不可以随便更改。 //但是自己可以增加一个判断常量。 #include #include #define MAX 50002 int farther[MAX]; int rank[MA原创 2012-10-13 18:30:12 · 472 阅读 · 0 评论 -
poj并查集小结
并查集小结 并查集大体分为三个:普通的并查集,带种类的并查集,扩展的并查集(主要是必须指定合并时的父子关系,或者统计一些数据,比如此集合内的元素数目。) POJ-1182 经典的种类并查集 POJ-1308 用并查集来判断一棵树。。注意空树也是树,死人也是人。 POJ-1611 裸地水并查集 POJ-1703 种类并查集 POJ-1988 看上去似乎和种类并查集无关,但其实仔转载 2012-10-14 09:39:30 · 2020 阅读 · 0 评论 -
hdu1671
一道水题:判断有没有前缀。 #include #include #define max 100010 struct node { bool tem; struct node *next[12]; node() { for(int i=0; i<11; i++) next[i]=NULL; } } Node,Root原创 2012-10-31 19:22:56 · 426 阅读 · 0 评论 -
poj2945 字典树题目
判断相同字符的个数#include #include #define max 510010 struct node { int len; int ju; struct node *next[26]; } Node,Root[max]; int sum=0; int num[max]; void BuildTree(char *word) { node *root=&原创 2012-10-31 19:50:39 · 931 阅读 · 0 评论 -
poj3295 http://poj.org/problem?id=3295
一道表达式求值的题目: //思路: //5个变量(取0||1)有32种取值方式 可以将他们全部找出来 进行判断是不是为永真式 //从后面进行处理 //k->x&&y //A->x||y //N->!x //implies->(!x)||y //E->x==y; #include #include #include #include using namespace std; stack tem;原创 2012-10-23 12:03:13 · 584 阅读 · 0 评论 -
线段树的题目
//zoj 1610 线段覆盖 //poj 2777 线段覆盖 //poj 2528 需要离散化,建树不同,需要处理不同->注意这组数据 3 1 10 1 3 6 10 the ans is 3. //hdu 1754 求区间最大值 //hdu 1166 求区间和 //hdu 1698 成段更新 //poj 3468 成段更新 //ural 1019 覆盖加统计最长同一个颜色 //zoj 230转载 2012-11-01 14:07:12 · 1406 阅读 · 0 评论 -
hdu 3791
//今天刚学完二叉查找树 找个题目练练 这个题目有点水 直接用数组存吧 //二叉查找树 #include #include #include #define max 3000 char Tree1[1100],Tree2[max],Tree3[max]; void buildTree(char *temTree,int pos,char data) { if(temTree[pos]=='原创 2012-10-23 20:58:12 · 1563 阅读 · 0 评论 -
poj2001 http://poj.org/problem?id=2001 简单的字典树题目
暑假集训的时候 做了10道字典树的题目 今天发现遗忘的狠厉害啊 所以 做了道简单的找感觉。#include #include struct node { int count; node *next[26]; } root,Root[26000]; int big=0; char work[1010][21]; void buildTree(char *root1) { no原创 2012-10-26 19:25:16 · 602 阅读 · 0 评论 -
poj2001 从现在开始,我要做的足够 强大
思路:字典树,我们对每个单词中的字母 进行记录出现的个数,在查找的过程中,我们可以 我们只需要查找到知道前缀中的字母出现了一次,或则找到单词末尾 #include #include #include #include using namespace std; struct node { int sum; struct node *next[26];原创 2013-05-01 19:33:12 · 557 阅读 · 0 评论