- 博客(39)
- 资源 (19)
- 收藏
- 关注
原创 poj 2362 hdoj 1518 Square(搜索)
题目链接大致题意:给定一堆不定长度的小棒子,问他们能否构成一个正方形。 解题思路:POJ1011的热身题,DFS+剪枝 本题大致做法就是对所有小棒子长度求和sum,sum就是正方形的周长,sum/4就是边长side。问题就转变为:这堆小棒子能否刚好组合成为4根长度均为side的大棒子 不难了解,小棒子的长度越长,其
2013-04-29 20:58:54 2226
原创 hdoj 1028/poj 2704 Pascal's Travels(记忆化搜索||dp)
题目链接题意 有个小球,只能向右边或下边滚动,而且它下一步滚动的步数是它在当前点上的数字,如果是0表示进入一个死胡同。求它从左上角到右下角到路径数目。注意, 题目给了提示了,要用64位的整数。记忆化搜索方法#include #include #define ll __int64int n;ll vis[36][36];char board[36][36
2013-04-29 14:24:39 1553
原创 hdoj 1078 FatMouse and Cheese(记忆化搜索)
题目链接Problem DescriptionFatMouse has stored some cheese in a city. The city can be considered as a square grid of dimension n: each grid location is labelled (p,q) where 0 <= p < n and 0 <= q < n
2013-04-29 10:18:43 1526
转载 HDOJ搜索题辑录I(总计100题)
DFS(Depth First Search )一般是不用hash的,所以很多时候称之为”暴力”,也就是穷举所有情况,一般看几个我们OJ的dfs的版本的题目就可以模仿着做了,因为牵涉到递归,初学者学的时候最好能举一反三,理解其中真谛.DFS --- EASY(15) Tempter of theBone Safecracker Prime RingProblem Robot
2013-04-28 19:38:23 2717 2
原创 hdoj 1907
题目链接这是一道博弈的题,准确说是尼姆博弈,只要判断各项的异或值即可。代码#include const int maxn = 5000;int x[maxn];int main(){ int t, n, tmp; scanf("%d", &t); while (t--) { scanf("%d", &n); i
2013-04-27 13:49:26 1469
原创 hdoj 1520 Anniversary party(树形dp)
题目链接 按照等级我们可以建一颗树,如图 我们可以把一个节点当做一个人,每个节点都有一个权重。按照题目意思,如果我们取了某个节点,那么他的父节点和子节点都是不能取的。按要求选取节点,使得选取节点的权重和最大。 DP,用no表示不选择i点时,i点及其子树能选出的最多人数,is表示选择i点时,i点及其子树的权值和最大。状态转移方程:对于叶子节点
2013-04-26 15:40:40 1388
原创 poj 2299 Ultra-QuickSort 求逆序数 树状数组解法
题目链接 逆序的概念大家都知道,一个数到逆序数就是该数左边大于它到数的个数。 很多没学过数据结构的人一上来肯定就是一个个数了,看看数据量500k,显然这种暴力的方法是行不通的。 我们换种想法,可以在输入过程中对每个数的逆序数求解,建一个vis数组(初始化为0),只要输入一个数,在它的位置标记为1,然后计算出它的左边一共有多少数被标记了就可以知道多少个数比他
2013-04-25 16:09:59 1970
转载 poj 并查集小结
并查集小结并查集大体分为三个:普通的并查集,带种类的并查集,扩展的并查集(主要是必须指定合并时的父子关系,或者统计一些数据,比如此集合内的元素数目。)POJ-1182经典的种类并查集POJ-1308用并查集来判断一棵树。。注意空树也是树,死人也是人。POJ-1611裸地水并查集POJ-1703种类并查集PO
2013-04-24 11:36:24 1857
原创 hdoj 3466 Proud Merchants(01背包)
题目链接 这并不是一题裸的01背包,它在简单到01背包上还加了一个限制条件Q,如果没有Q,这完全是一题裸01背包。 对于这个题目,我们只要加上排序对某些物品进行优先处理就好了。 想想我们为什么要排序, 举个简单的例子,如果数据中出现这样到情况 5 9 3、 6 6 5、5 6 3…… 对5 9 3 处理的时候他只能求出dp[9]然后6 6 5只能在dp[9]的
2013-04-24 09:00:01 1433 1
原创 hdoj 2191 背包
题目链接 虽然每件物品的数目并不是1,可能有多个,但我们完全可以把这个题目转化成01背包来解决。 可以把多件相同的物品合并成一件,马上就变01背包了。#include #include #include using namespace std;int dp[105];int pr[105];int cnt[105];int w[105];int main()
2013-04-23 20:01:42 1270
原创 light oj 1231-1232 - 1233- Coin Change 背包
题目链接In a strange shop there are n types of coins of value A1, A2 ... An. C1, C2, ... Cn denote the number of coins of value A1, A2 ... An respectively. You have to find the number of ways you ca
2013-04-22 19:15:28 2360
原创 light oj 1047 - Neighbor House 动态规划
题目链接The people of Mohammadpur have decided to paint each of their houses red, green, or blue. They've also decided that no two neighboring houses will be painted the same color. The neighbors of hou
2013-04-22 08:27:08 2249
原创 loj 1224 - DNA Prefix
题目链接题目描述很简单 有n和DNA序列,求出他们中公共前缀长度和有相同公共前缀DNA序列乘积的最大值。If we take the subset {ACGT} then the result is 4 (4 * 1), if we take {ACGT, ACGTGCGT, ACGCCGT} then the result is 3 * 3 = 9 (since ACG is the
2013-04-20 09:55:54 2071
原创 Codeforces Round #180 (Div. 2) 解题报告
题目链接A.Snow FootprintsA - Snow FootprintsThe starting position can be anywhere with a footprint. The footprints can be categorized into 3 types.only L sonly R sR s followed by L s
2013-04-19 22:20:19 2669
原创 动态规划详解
其实根本就谈不上详解,应该说只是随便谈谈,真正能详解动态规划的又有几个人,所以,这个标题略显扯淡。 前段时间一直在做关于数据结构的题,也算是对数据结构有了一定的了解,知道了有些数据结构的基本算法。现在刚刚开始接触动态规划,其实写这篇文章的初衷是一来锻炼一下自己的总结能力,二来也是希望通过这篇文章,来指引和我一样的初学者,废话不多说了,开始吧。一、01背包 我最开始接
2013-04-19 22:19:00 2352 4
原创 poj dp 合集
1015 Jury Compromise1029 False coin1036 Gangsters1037 A decorative fence1038 Bugs Integrated, Inc.1042 Gone Fishing1050 To the Max
2013-04-19 09:45:15 2360
原创 poj 1088 记忆化搜索||动态规划
poj 1088 记忆化搜索也也是采用递归深搜的对数据进行搜索,但不同于直接深搜的方式,记忆化搜索是在每次搜索时将得到的结果保存下来,避免了重复计算,这就是所谓的记忆化。记忆化应该是属于动态规划。 举个例子,比如我们搜索最长最长连续增子序列, 1 2 3 4 5 6 7, 当然这个例子比较特殊,但足以说明情况。 对于这种问题,我们可以先搜索以1开始的
2013-04-18 14:01:03 2047
原创 归并树&划分树详解
先放一张图片对4 5 2 8 7 6 1 3 分别建划分树和归并树划分树如下图红色的点是此节点中被划分到左子树的点。 我们一般用一个结构体数组来保存每个节点,和线段树不同的是,线段树每个节点值保存一段的起始位置和结束位置,而在划分树和递归树中,每个节点的每个元素都是要保存的。为了直观些,我们可以定义一个结构体数组,一个结构体中保存的是一层的元素和到某个节点进入左子
2013-04-16 21:24:17 5607
原创 Light oj 1112 - Curious Robin Hood(树状数组)
题意: 有n个数,有m组操作,1 i表示将第i个数先输出,然后置0, 2 i v 表示给第i个数加上v, 3 i j 表示求i 到 j 的和,注意,这里数组是从0开始的,而我们构造的树状数组是从1开始的,使用在程序中要进行一定的处理。//LA 1112 - Curious Robin Hood(树状数组)//2013-04-13-08.22#include #include
2013-04-13 00:23:13 2121
原创 Light oj 1080 - Binary Simulation(树状数组区间更新点查询)
题目链接题意: 有一字符串只包含0和1,然后又m组操作,I L R是将从L到R的字符进行翻转操作0变为1、1变为0,Q x表示询问第x的字符。思路: 我们只需要计算对询问的字符进行了多少次翻转,如果是偶数次,该字符变,否则翻转。对于区间的更新,我们可以使用线段树,不过对于这个题,因为只是对点的查询,而且每个节点的初始值都相同,为0,因此我们可以直接使用树状数组。下面是一
2013-04-12 18:58:51 2372
原创 poj 3624 Charm Bracelet(简单01背包)
题目链接DescriptionBessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fill it with the best charms possible from the N (1 ≤ N ≤ 3,402) available charm
2013-04-12 16:54:12 1418
原创 poj 1976 A Mini Locomotive(01背包)
题目链接DescriptionA train has a locomotive that pulls the train with its many passenger coaches. If the locomotive breaks down, there is no way to pull the train. Therefore, the office of railroa
2013-04-12 16:28:43 1445
原创 Light oj 1082 - Array Queries(区间最小值)
题目链接线段树解法#include #include using namespace std;const int maxn = 100010;struct node{ int l, r, mid, minn;}tree[maxn<<2];int a[maxn];void build(int l, int r, int o){ tree[o].l = l
2013-04-12 13:24:30 2133
原创 Codeforces Round #179 (Div. 2)A、B、C、D
题目链接A.Yaroslav and Permutations题意: n个元素的数组,每个元素不超过1000,可以交换相邻两个元素,问是否可以在有限次的操作之后使得相邻两个元素的值不相同。#include #include int cnt[1005];int main(){ int n, a; while (scanf("%d", &n) !
2013-04-11 07:06:14 1686
原创 hackerrank challenges median
题目链接MediandynamicMax Score: 67The median of M numbers is defined as the middle number after sorting them in order if M is odd or the average number of the middle 2 numbers
2013-04-09 20:42:08 1584
原创 Codeforces Round #178 (Div. 2)
A. Shaass and Oskols题意:在n条电线上有不同数量的鸟, Shaass开了m枪,每一枪打的是第xi条电线上的第yi只鸟,然后被打中的这只鸟左边的飞到第i-1条电线上,右边的飞到i+1条电线上,没有落脚点的鸟会飞走。#include int a[105];int main(){ int n, m, x, y; while (scanf("%d",&n
2013-04-08 07:20:04 2248 1
原创 poj 1961 Period(kmp最短循环节)
题目链接 DescriptionFor each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive), we want to know whether the prefix is a periodic string. T
2013-04-06 14:57:31 2340
原创 poj 2352 Stars 树状数组
题目链接DescriptionAstronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that
2013-04-06 10:10:10 1717
原创 poj 2182 Lost Cows(树状数组)
题目链接DescriptionN (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular display of poor judgment, they visited the neighborhood 'watering hole' and drank a few too man
2013-04-06 09:57:40 2182
原创 ZOJ1117 POJ1521 HDU1053 Huffman编码
题目链接 DescriptionAn entropy encoder is a data encoding method that achieves lossless data compression by encoding a message with "wasted" or "extra" information removed. In other words, entro
2013-04-05 15:56:38 2544
原创 POJ 1195 Mobile phones (二维树状树组)
由于英语极差,看了半天也没看懂题目,最后参考了其他人的题解才搞懂题目,我就直接把题意贴过来了 题意:这道题目只是题意自己就去理解了半天,大概题意如下:给出i一个n*n的矩阵,初始化为均为0,还有关于这个矩阵的几种操作,操作如下:命令1:(X Y A)对位于坐标(X Y)的值加A;命令2:(L B R T)求出位于L 思路分析如下:二维树状数组,典型的动态操作题目。查询
2013-04-05 10:55:38 2004
原创 计算机科学中的树
二叉树▪ 二叉树 ▪ 二叉查找树 ▪ 笛卡尔树 ▪ Top tree ▪ T树自平衡二叉查找树▪ AA树 ▪ AVL树 ▪ 红黑树 ▪ 伸展树 ▪ 树堆 ▪ 节点大小平衡树B树▪ B树 ▪ B+树 ▪ B*树 ▪ Bx树 ▪ UB树 ▪ 2-3树 ▪ 2-3-4树 ▪ (a,b)-树 ▪ Dancing tree ▪ H树Trie▪ 前缀树 ▪ 后缀树 ▪ 基数
2013-04-04 22:35:04 2551
原创 POJ数据结构专辑(含部分题解)
1195 Mobile phones 树状数组 题解1455 Crazy tea party1521 Entropy huffman 题解1703 Find t
2013-04-04 20:38:50 2875
原创 ACM竞赛常用STL(二)之STL--algorithm
无疑是STL 中最大的一个头文件,它是由一大堆模板函数组成的。下面列举出中的模板函数:adjacent_find / binary_search / copy / copy_backward / count/ count_if / equal / equal_range / fill / fill_n / find /find_end / find_first_of / find_
2013-04-04 20:27:48 3069
原创 ACM竞赛常用STL(一)
全排列函数next_permutationSTL 中专门用于排列的函数(可以处理存在重复数据集的排列问题)头文件:#include using namespace std;调用: next_permutation(start, end);注意:函数要求输入的是一个升序排列的序列的头指针和尾指针.用法: // 数组int a[N];sort(a, a+N);ne
2013-04-04 08:18:47 4471 1
原创 第K小数 uva 10041 - Vito's Family poj 2388 Who's in the Middle
题目链接 很容易理解题目的意思,就是求某个点到其他点的距离之和,而且要让这个和最小,很明显是求中位数了。 关于求中位数,一般的方法是我们先将整个数组进行排序,然后直接取出中位数,采用不同的排序方法可能有不同的时间复杂度,一般我们使用快排,时间复杂度为O(nlogn),有没有更快的方法? 答案是肯定的。 这里有一种时间复杂度为O(n)的算法,下面是此题的解题代码。
2013-04-03 16:25:32 2364
原创 hdoj 1166 敌兵布阵
暴力超时,这道题可以用线段树做,因为更新的是单个节点,我们也可以用数组数组来做,我将两种方法的代码都给出 数组数组最适宜的用途就是区间求和和点的更新,但树状数组并不适用于区间的更新问题,也不是做不到,比较麻烦且难理解,有兴趣的可以看看这个http://blog.csdn.net/xindoo/article/details/8748410//树状数组#include
2013-04-01 21:31:20 1119
转载 用树状数组解决区间查询问题
本文扩写自郭神的《树状数组新应用》,在此表示膜拜。树状数组的学名貌似叫做Binary Index Tree,关于它的基本应用可参考Topcoder上的这篇Tutorial.树状数组可以看作一个受限制的线段树,它维护一个数组,最经典的树状数组支持的基本操作有两个:(1)改变某一个元素的值 (2)查询某一个区间内所有元素的和。在此基础上,经过简单的变形可以变成支持另一组操作:(1)把一个区间内
2013-04-01 20:43:09 1815
原创 poj 3468 A Simple Problem with Integers线段树区间修改
传送门 题目意思很简单,有N个数,Q个操作, Q l r 表示查询从l到r 的和,C l r v 表示将从l到r 的值加上v,明显的线段树,不知道线段树的人肯定暴力,肯定超时,哈哈!!解题方法我在代码注释中写的很详细了#include const int maxn = 100005; typedef __i
2013-04-01 20:07:09 1339
workflow.zip
2019-08-19
《OpenCL异构计算》全书所有插图及实现代码
2013-04-19
红黑树 red-black
2013-04-19
acm Hdoj 离线版 1000-3000题 可搜索查找
2012-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人