上一页 1 2 3 4 5 6 7 8 ··· 18 下一页
2013年8月3日

URAL - 1069 Prufer Code (图的重建)

摘要: 给定一个树,每次删除一个编号最小的叶子节点,然后将叶子节点的父亲节点输出,要求根据该序列还原这棵树。思路:找度为0的点,(这样的点不会成为父亲节点,只能是叶子节点)放到优先队列中,模拟删除点的过程即可。(没删除一个点,就对应序列中的一个父亲节点)代码如下:#include #include #include #include using namespace std; #define M 7505 priority_queue, greater >q; int n, du[M], a[M], x; vectorg[M]; int main () { n = 1; whi... 阅读全文
posted @ 2013-08-03 16:48 Primo... 阅读(174) 评论(0) 推荐(0) 编辑

STL容器

摘要: STL的容器可以分为以下几个大类:一:序列容器, 有vector, list, deque, string.二 : 关联容器, 有set, multiset, map, mulmap, hash_set, hash_map, hash_multiset, hash_multimap三: 其他的杂项: stack, queue, valarray, bitsetSTL各个容器的实现:(1) vector内部数据结构:数组。随机访问每个元素,所需要的时间为常量。在末尾增加或删除元素所需时间与元素数目无关,在中间或开头增加或删除元素所需时间随元素数目呈线性变化。可动态增加或减少元素,内存管理自动完成 阅读全文
posted @ 2013-08-03 15:13 Primo... 阅读(126) 评论(0) 推荐(0) 编辑

LA 3938 - "Ray, Pass me the dishes!"(线段树)

摘要: 动态最大连续和。思路:完全参照刘汝佳厚书的思路。几天前,就从书上得到一个思路,却不知怎么实现,于是乎,几天来一直广搜结题报告,结合人家现成的代码,今天写成了代码,又调了半下午的bug,终于ac了。构造一课线段树,其中每个节点维护3个信息,最大连续和(x,y),最大前缀和(pre),最大后缀和(suf),虽然都叫做什么什么和,存的却都是位置标记,1、建树2、若干次查询这道题目没有加入树节点的修改,算是数据结构中的基础题了。思路来自于静态最大连续和的求解,(最大连续和或在[1...m],或在[m+1......n],或在[x...m......y])代码如下:#include #include . 阅读全文
posted @ 2013-08-03 14:58 Primo... 阅读(228) 评论(0) 推荐(0) 编辑

hdu 1003 - Max Sum(分治of贪心)

摘要: 今天比赛的一道题目,有位同学写的代码比我写的好多了,而且有点贪心的意思,所以就贴了上来,用sum来存前面的正和,如果sum #define M 100005 #define INF 0x7fffffff int main () { int t, n, x, start, end, sum, maxx, tt, k = 0; scanf("%d",&t); while(t--) { scanf("%d",&n); start = 1; end = 1; sum = 0; tt = 1; maxx = ... 阅读全文
posted @ 2013-08-03 11:42 Primo... 阅读(183) 评论(0) 推荐(0) 编辑
2013年7月31日

uva11235 - Frequent values(RMQ)

摘要: 看来传闻不差,数据结构的代码真的很长。。。刘汝佳厚书P198。。。查询优化,,,以下摘自刘汝佳训练指南:把整个数组进行游程编码,用value[],coun[]数组记录第i段的数值和出现次数,用num[p]、left[p]、right[p]记录位置p处所在段的编号和左右端点的位置,,,所以最后只需对3个部分求最大值即可。第一部分,左端,right[L]-L+1第二部分,中间,RMQ(coun, num[L]+1, num[R]+1);第三部分,右端,R-left[R]+1另外要注意:如果L,R在同一段,则答案是R-L+1;代码如下:#include #include #include #i... 阅读全文
posted @ 2013-07-31 21:17 Primo... 阅读(133) 评论(0) 推荐(0) 编辑

SDKD Single training #8未完成题目

摘要: A URAL 1108 【已整理】B URAL 1123【已整理】C URAL 1158D URAL 1160 【已整理】E URAL 1105 阅读全文
posted @ 2013-07-31 16:02 Primo... 阅读(91) 评论(0) 推荐(0) 编辑

URAL - 1108 Heritage(大数)

摘要: 恶心的大数运算,,,比赛的时候,如果没有模版,一般置后的题目了,,,,题意:要求a,b,c,.....使得1-1/a-1/b-1/c-1/d.......的结果最小。。。代码如下:#include #include #define MOD 100000000 long long ans[100000], last[100000], temp[100000]; int ans_l, last_l; void add() { for(int i = 0; i = 0; i--) i==ans_l-1?printf("%I64d", ans[i]):printf("%0 阅读全文
posted @ 2013-07-31 15:58 Primo... 阅读(163) 评论(0) 推荐(0) 编辑

URAL - 1123 Salary(水题)

摘要: 比赛中没作出来的大水题~~题意:给定一个数字,查找大于等于该数字的最小的回文数字。思路:在纸上画画,就知道规律了,回文串以前面不变为原则,这样才能保证最接近原数字的。例如123111要变成123321,但如果123456这样的该怎么办呢。第一步也是变成123321,但是我们发现这样反而变小了,这是因为对应的数位上前面的数字比后面的数字小,这样我们应该从最中间的数字把这个给加上去,反之,如果前面的数字比后面的大,则不用进位,而且如果前面进位标志如果是1的话,则把进位标识改成0即可。因为此时的高位数字变大,已经弥补了前面的进位误差。例如909090第二位上是0,比倒数第二位上的数字小,则进位标志写 阅读全文
posted @ 2013-07-31 15:08 Primo... 阅读(166) 评论(0) 推荐(0) 编辑

URAL - 1160 Network(最小生成树)

摘要: 比赛中的比较裸的模版题,直接抄的模版,题意:给定几个需要链接的点以及能够利用的边,要求用这些变将所有的点都链接起来,且所用边长的最大值尽量小。思路:起初,看题意是最小生成树,但题目所给的样例,并不是最小生成树的结果,纠结半天,然后又看了几遍题目,还是不知所云,最后试着把模版敲上去,submit~~然后便ac了,后来问了才知道,这道题确实最小生成树,不过只要所用边的最大值不变,那些权值小的边可以任意加上去,因为题目只是对最大边最小有要求,对边的数量没有要求。代码如下:#include #include #include using namespace std; #define M 1500... 阅读全文
posted @ 2013-07-31 14:32 Primo... 阅读(272) 评论(0) 推荐(0) 编辑
2013年7月30日

hdu 4628 - Pieces(压缩dp)

摘要: 题意:给定一个串,每次可以删除一个回文子串,问把全串删干净的最少次数。思路:用状态压缩把所有的状态枚举出来,用数组记录所表示状态所有字符被删除干净的最少次数。状态:dp[x]表示在状态x下把所有字符删除的最少次数。状态压缩:dp[x] = min{dp[x], dp[k]}(k是x的子集)这样的dp的边界不再是dp[0]或dp[n]了。而是对每个状态都要设定原始值,如果某个状态是完全回文的,则dp[x] = 1,否则,dp[x] 就是一个最大值(目前子串的长度)代码入下:#include #include #include #include using namespace std; #... 阅读全文
posted @ 2013-07-30 19:56 Primo... 阅读(131) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 18 下一页