- 博客(15)
- 资源 (16)
- 收藏
- 关注
原创 浅析树状数组
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo以前一直对树状数组这种结构并不感冒,因为觉得它能做到的事儿线段树也可以很好的完成。而且线段树应用更加灵活,可以说比树状数组的应用范围大很多。不过最近碰到两道题,都可以用树状数组这种结构很好的解决,代码非常精简单,特别是在二维应用的时候,用线段树非常麻烦,如果不是必要的话,不应当菜用线段树
2009-12-25 10:53:00
1638
原创 等边三角形边N等分后不同凸六边形的个数
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo有一个等边三角形,把每条边N(N如N=4时,有七个不同的凸六边形,如下图所示。 这是上次TC比赛中的一道题,个人觉得这道题是最有趣的也有最有难度的一道题,思索良久却始终不得要领。后来在高人的提示下终于有所进展,遂写下此文以作纪念。看到的朋友也可以在闲睱时间考考别人^_^。
2009-12-20 21:42:00
2985
原创 一道有挑战性的题
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo 从1~N这N个数按照下面的排法一直排下去,规定S(N)为左上角是1,右下角为N的这个大矩形里面的所有小矩形里的数的和。例如S(12)就表示图中12个绿色格子的数的和。现在给定N,让你求S(N)。 这道题是TopCoder SRM454 DIV1 Level3的题变过来的
2009-12-08 14:08:00
1244
原创 石子合并问题
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo一:任意版有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动任意的2堆石子合并,合并花费为将的一堆石子的数量。设计一个算法,将这N堆石子合并成一堆的总花费最小(或最大)。此类问题比较简单,就是哈夫曼编码的变形,用贪心算法即可求得最优解。即每次选两堆最少的,合并成新的一堆,直到
2009-11-30 20:50:00
3371
2
原创 样本收集问题
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo机器人Rob在一个有n*n 个方格的方形区域F 中收集样本。(i,j)方格中样本的价值为v(i,j),如下图所示 Rob 从方形区域F 的左上角A点出发,向下或向右行走,直到右下角的B 点,在走过的路上,收集方格中的样本。Rob 从A点到B 点共走2次,试找出Rob 的2条行走路径,使
2009-11-20 12:41:00
3460
2
原创 最少硬币问题
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo 设有n 种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数与面值分别存于数组Coin[1:n]和T[1:n]中。对任意钱数0≤m≤20001,设计一个用最少硬币找钱m的方法,对于给定的1≤n≤10,硬币面值数组T和可以使用
2009-11-13 10:54:00
3552
2
原创 独立任务最优调度问题
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo用2 台处理机A 和B 处理n 个作业。设第i 个作业交给机器A 处理时需要时间a[i],若由机器B 来处理,则需要时间b[i] 。由于各作业的特点和机器的性能关系,很可能对于某些i,有a[i] > b[i] ,而对于某些j,j≠i,有a[j] 先给一个比较容易理解的状态转移方程:
2009-11-09 16:01:00
4168
2
原创 2009 Google Code Jam Round 1C 题解
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo Google Code Jam 的题解暂时就只有这些了,ROUND2我选择了睡觉,暂时也没有时间做…… Problem A site: http://code.google.com/codejam/contest/dashboard?c=189252#s=p0思路:贪心
2009-10-25 18:35:00
1595
原创 2009 Google Code Jam Qualification Round 题解
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo Problem A Site: http://code.google.com/codejam/contest/dashboard?c=90101#s=p0思路:把每个模式的每位上的字母都记录下来,然后对于每个单词都来进行一次查询即可。如果每于某个单词,每一位都在模式的某一位
2009-10-25 16:49:00
866
原创 后缀树(O(N))
#include #include using namespace std;struct Edge{ int l, r, len;}edge[400000];struct Node{ Node *node[28]; Edge *edge[28]; bool info; int activeLength; Node *suffixLink; Node *p
2009-09-21 11:57:00
1000
原创 Dancing Links 算法
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluoDancing Links是解决完美覆盖问题的算法,我不得不说,这是我所见过的最优美的算法。难怪Donald E.Knuth为其取名为Dancing Links。大致思想是把问题转化为一个01矩阵,选取一些列,使每列都包含且只含一个1。采取的数据结构是双向十字链表结构。Donald
2009-09-21 11:36:00
4150
1
原创 欧几里得算法及其扩展
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo最大公约数的求法中最过著名的莫过于欧几里得辗展相除法,它有两种形式(递归与非递归,其实是一样的,任何递归都可以写成非递归),下面看看它的C++代码:/***求a,b最大公约数***/long long gcd(long long a, long long b) {
2009-09-21 11:34:00
2538
原创 求正整数中第K个二制中不含11的数
描述很简单:把所有的正整数从小到大都转化成二进制串,求第K(K首先最想知道的就是第K个满足上述条件的串有多少位?1位的串有1个,2位的串有1个,3位的中有2个……其实我们发现可以构造出来。对于长度为N的串,对于这些串如果尾数为0,那么在后面增加0,1都可以;如果尾数为1,那么就只能增加0。这样就包含了所有的满足条件的长度为N+1的串。下面给出简单的证明:由于N+1长的串是满足条件的,必然所
2009-09-21 11:20:00
958
原创 N!最后一位非0位的求法
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo PS:这篇文章是很早以前我在使用博客圆的时候写的,后来换了两次搏客,都把这篇文章拿过来了。 问题是求关于N!的最后一位非0位, 如3!=6,最后一位非0位为6, 5!=120, 最后一位非0位为2.怎么样快速的求出最后一位非0位呢? 最朴素的
2009-09-21 11:12:00
1422
1
原创 解方程: x+y=x|y
本文内容遵从CC版权协议 转载请注明出自: http://blog.youkuaiyun.com/masterluo 给定两个正整数x, k,求第k个最小的正整数y,满足y满足x+y = x|y. x (1≤x≤2 000 000 000), k(1≤k≤2 000 000 000) 将x,y用二进制表示,len[x], len[y]分别表示需要多
2009-09-21 11:05:00
1941
吉林大学ACM模板 吉林大学 ACM 模板
2009-11-09
上海交通大学ACM模板
2009-09-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人