
算法
一MasonChen
这个作者很懒,什么都没留下…
展开
-
二进制枚举集合子集
二进制是个超级牛叉,可以拯救世界的东西原创 2014-07-30 09:55:56 · 1124 阅读 · 0 评论 -
hdu 倒转相加
Problem I Time Limit : 4000/2000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 6 Accepted Submission(s) : 6Problem DescriptionThe Antique Comedians of Malid原创 2014-04-09 19:03:00 · 499 阅读 · 0 评论 -
USACO1200 你的飞碟在这儿
虽然只是一道练手题,但我确实很久没做字符串的题目了,还是稍微纠结了一小会。分别先求出两个字符串所代表数字的累乘积,再判断两个积分对47求余是否相等,如果相等输出GO,否则输出STAY。另外,求字符串长度除了调用strlen函数之外还可以用“名称.size()”的方式。代码:#include#includeusing namespace std;int main(){原创 2014-03-22 23:32:23 · 649 阅读 · 0 评论 -
[贪心]PKU Stripies
Time Limit : 2000/1000ms(Java/Other) Memory Limit : 60000/30000K (Java/Other)Total Submission(s) :22 Accepted Submission(s) : 3Problem DescriptionOur chemical biologists have invented a newv原创 2014-10-07 21:20:33 · 512 阅读 · 0 评论 -
POJ3278---bfs
道题蛮简单,了解了基本的搜搜算法就可以解决这道题,题意大致就是给你两个数N和K,N每次可以进行+1,-1,*2的运算, 问你最少几次N可以变成K,这个问题我们如果用dfs的话,就会出问题,因为最优解永远是距离N最近的变换得到的那个值,所以这里我们可以用到bfs,但是由于这个时候我们需要统计的是达到最优解时的最少次数,即需要我们在树形解空间中找到目标解在这棵树种的层数,所以我们需要一个标号数组dee转载 2014-07-27 16:04:02 · 446 阅读 · 0 评论 -
hdu Shuffle’m up
又是令人蛋疼的英文题。。题目大意是给出s1,s2两摞纸牌颜色的顺序,求通过变换后能不能得到要求的顺序。变换规则是先相互间隔的放成一摞,再从中间分开,在相互间隔的放成一摞......整体思想就是模拟代码:#include#includeusing namespace std;char s[200],s1[100],s2[100],s0[200],s3[200];void wo原创 2014-03-24 00:07:58 · 694 阅读 · 0 评论 -
hdu 命运
命运(1009)Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 21 Accepted Submission(s) : 9Problem Description穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到,原创 2014-03-23 00:25:43 · 765 阅读 · 0 评论 -
codeforces 405B. Domino Effect
Little Chris knows there's no fun in playing dominoes, he thinks it's too random and doesn't require skill. Instead, he decided to play with the dominoes and make a "domino show".Chris arranges n原创 2014-04-12 16:01:55 · 649 阅读 · 0 评论 -
C++复习之冒泡排序&插入排序&希尔排序
冒泡排序时间复杂度最好的情况为 O(n), 最坏的情况是 O(n^2) ,基本思想是 : 两两比较相邻记录的关键字 , 如果反序则交换 “`cpp void bubbleSort1(int *arr, int n) { for (int i = 0; i < n; i++) { for (int j = 1; j < n - i; j++) {原创 2016-07-29 17:21:59 · 265 阅读 · 0 评论 -
C++复习之简单选择排序&归并排序
简单选择排序 (simple selection sort) 就是通过 n-i 次关键字之间的比较 , 从 n-i+1个记录中选择关键字最小的记录 , 并和第 i(1<=i<=n) 个记录交换之尽管与冒泡排序同为 O(n^2), 但简单选择排序的性能要略优于冒泡排序void selectSort(int *arr, int n) { for (int i = 0; i < n; i++)原创 2016-07-29 20:48:56 · 372 阅读 · 0 评论 -
C++复习之堆排序&快速排序
堆是具有下列性质的完全二叉树 : 每个节点的值都大于或等于其左右孩子节点的值 , 称为大顶堆;或者每个节点的值都小于或等于其左右孩子节点的值 , 称为小顶堆 .堆排序就是利用堆进行排序的方法 . 基本思想是 : 将待排序的序列构造成一个大顶堆 . 此时 , 整个序列的最大值就是堆顶的根结点 . 将它移走 ( 其实就是将其与堆数组的末尾元素交换 , 此时末尾元素就是最大值 ), 然后将剩余的 n-1原创 2016-07-30 10:45:28 · 371 阅读 · 0 评论 -
[LeetCode]Minimum Depth of Binary Tree
题目描述Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 二叉树的遍历。递归遍历左右子树,返回最短的路径长度。递归结束的条件是,如原创 2016-08-12 21:03:31 · 250 阅读 · 0 评论 -
[LeetCode] evaluate-reverse-polish-notation
evaluate-reverse-polish-notation题目描述Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are+,-,*,/. Each operand may be an integer or another expression. Some e原创 2016-08-12 21:16:02 · 276 阅读 · 0 评论 -
Windows Message Queue
Windows Message QueueTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2576 Accepted Submission(s): 1008Problem DescriptionMessage原创 2014-04-17 21:54:33 · 515 阅读 · 0 评论 -
并查集模板
并查集是一种很好的数据结构,其中原创 2014-08-12 19:53:21 · 475 阅读 · 0 评论 -
数字三角形(POJ)
描述73 88 1 02 7 4 44 5 2 6 5(图1)图1给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。注意:路径上的每一步只能从一个数走到下一层上和它最近的左边的那个数或者右边的那个数。输入输入的是一行是一原创 2014-03-23 00:28:47 · 847 阅读 · 0 评论 -
hdu Robot Motion
NSEW分别代表走的方向。地图走完之后有两个结果,如果走出地图的话,则输出走过的步数,如果形成循环的话,则输出循环之前的步数和循环的步数。我的思路是用一数组表示是否走过该点以及走到该点时已经走过的步数。有点记忆化搜索的意思#include#includeusing namespace std;int main(){ char map[20][20]; int num[2原创 2014-03-24 00:09:58 · 818 阅读 · 0 评论 -
HDU1548:A strange lift(BFS)
Problem DescriptionThere is a strange lift.The lift can stop can at every floor as you want, and there is a number Ki(0 <= Ki <= N) on every floor.The lift have just two buttons: up and down.When原创 2014-07-27 17:20:15 · 398 阅读 · 0 评论 -
hdu 最大报销额
最大报销额 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 37 Accepted Submission(s) : 16Problem Description现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(原创 2014-04-03 15:21:19 · 525 阅读 · 0 评论 -
hdu how many ways
How many waysTime Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 4 Accepted Submission(s) : 3Problem Description这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始原创 2014-03-23 00:33:11 · 672 阅读 · 0 评论 -
hdu 最大连续子序列
最大连续子序列Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 120 Accepted Submission(s) : 29Problem Description给定K个整数的序列{ N1, N2, ..., NK },其任原创 2014-03-23 00:22:46 · 655 阅读 · 0 评论 -
[线段树]线段树 入门
1.定义1.1树 树是图论中的一个概念,在图论中,树(英语:Tree)是一种无向图(undirected graph),其中任意两个顶点间存在唯一一条路径。或者说,只要没有回路的连通图就是树。 1.2二叉树 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。 1.3二叉查找树 (Binary原创 2015-05-20 19:49:17 · 519 阅读 · 0 评论 -
[动态规划]PKU Bridging signals
Bridging signalsTime Limit : 2000/1000ms (Java/Other) MemoryLimit : 20000/10000K (Java/Other)Total Submission(s) :4 Accepted Submission(s) : 1Problem Description'Oh no, they've done it aga原创 2014-10-07 21:28:12 · 447 阅读 · 0 评论 -
动态规划解最长公共子序列问题
动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。【问题】 求两字符序列的最长公共字原创 2014-09-04 17:44:54 · 710 阅读 · 0 评论 -
位运算
12 位运算 C语言是为描述系统设计的,因此它应该具有汇编语言所以完成的一些功能。C语言既有高级语言的特点,又具有低级语言的功能。因而具有广泛的用途和很强的生命力。12.1 位运算符和位运算运算符 含义& 按位与| 按位或^ 按位异或~ 取反>> 右移说明:(1)位运算符中除 ~转载 2014-07-28 13:32:28 · 432 阅读 · 0 评论 -
hdu Robberies
Robberies Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 52 Accepted Submission(s) : 20Problem DescriptionThe aspiring Roy the Robber h原创 2014-04-03 15:16:54 · 561 阅读 · 0 评论 -
USACO The Castle(floodfill(DFS))
The CastleIOI'94 - Day 1In a stroke of luck almost beyond imagination, Farmer John was sent a ticket to the Irish Sweepstakes (really a lottery) for his birthday. This ticket turned out to have on原创 2014-07-28 15:09:21 · 520 阅读 · 0 评论 -
hdu 位操作
高深的位运算有待学习#include#includeusing namespace std;void f(int &val,int index,int num){ if(num==0) val&=~(1<<index); else val|=(1<<index);}int main(){ int r,x,y; sca原创 2014-03-24 00:11:52 · 512 阅读 · 0 评论 -
[LeetCode] max-points-on-a-line
max-points-on-a-line题目描述Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. 给出n个点的坐标,找出在一条线上的点的数量的最大值. 根据斜率统计在一条直线上的点的数量,可以用HashMap作为斜率和数量的映射原创 2016-08-12 21:37:20 · 345 阅读 · 0 评论