
ACM算法
ACM经典案例
黎轩栀海
只是简单的随心记录,不喜勿喷。。。
展开
-
双向队列 Deque
借鉴:http://blog.youkuaiyun.com/vanquishedzxl/article/details/8531458Deque是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪。向deque 两端添加或删除原创 2016-04-29 08:43:13 · 351 阅读 · 0 评论 -
双向队列 小练
初始化序列为空给 n 个操作:0 :从头部往里放1:从尾部往里放2 : 从头部删除3 : 从尾部删除4:改变功能,原来是从头部放的从尾部放,从尾部放的从头部放,删除也是如此注:如果序列为空,请忽略2,3功能 输入Line1:T组数据(T<=10)Line2:一个整数n(n<=200)...原创 2016-04-29 08:52:55 · 376 阅读 · 0 评论 -
2010 Asia Fuzhou Regional Contest 之 Selecting courses
Selecting courses贪心+暴力把每门课按结束时间从小到大排序,结束时间相同按开始时间从小到大排序,这样按顺序选一定是最优的。原创 2016-04-15 20:29:20 · 321 阅读 · 0 评论 -
南阳理工学院软件月赛
装背包有N种物品各一个,问是否能够凑成Mkg装到背包中。Input第一行一个整数T(TOutput可以凑成输出“Y”,否则输出“N”Sample Input23 51 2 33 71 2 3Sample OutputYN类似于 01 背包#include#include#i原创 2016-04-07 09:44:13 · 419 阅读 · 0 评论 -
搜索练习题
题目描述有1-13这13个数字写成了一个序列,可是中间没有分隔成了一串数字,问是否有唯一分离。如12345678910111213为1,2,3,4,5,6,7,8,9,10,11,12,13或者12,3,4,5,6,7,8,9,10,11,1,2,13输入每行一个序列(不超过10000行)。输出唯一分离输出“Y”,否则“N”。样例输入12345678原创 2016-03-23 08:15:52 · 372 阅读 · 0 评论 -
背包九讲
P01: 01背包问题 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便转载 2015-11-17 16:26:04 · 275 阅读 · 0 评论 -
int long long __int64的范围
unsigned int 无符号基本整型, 0~4294967295当字节数为2时 取值范围为0~6535,当字节数为4时 取值范围为0到2的32次方减1int 2147483648~2147483647 即 2^32 ~ 2^32-1unsigned long 0~4294967295long 2147483648~2147483647lon原创 2016-03-19 21:32:16 · 541 阅读 · 0 评论 -
scanf()函数用法小结
scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。其调用格式为: scanf("",);格式化字符串包括以下三类不同的字符:格式化说明符格式字符 说明%d原创 2016-03-31 15:43:09 · 395 阅读 · 0 评论 -
HDU——A + B Problem II
HDU 1002A + B Problem IITime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 274209 Accepted Submission(s): 52949Problem Descr原创 2015-10-14 19:16:19 · 623 阅读 · 0 评论 -
两次搜索找最小路径和—— Find a way
Find a way题意:给一幅图,有墙,有KFC,有路。两个人要去KFC约会,有很多个KFC,问两个人去一间KFC总共走的最少步数。由于输入判断 Y M 时打错了,呜呜~~~找了两个小时的错误原创 2016-03-13 17:10:33 · 390 阅读 · 0 评论 -
贪心算法—— hdu 2037 今年暑假不AC
今年暑假不ACTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 43446Accepted Submission(s): 23172Problem Description“今年暑假不AC?”“是的。原创 2016-04-09 10:29:17 · 351 阅读 · 0 评论 -
ACM算法之贪心算法
ACM算法之贪心算法一般使用贪心算法要满足两个条件:a.贪心选择性质 —— 可通过做局部最优(贪心)选择来达到全局最优解。(贪心选择性质:这是贪心算法与动态规划的区别)b.最优子结构性质 —— 问题的最优解包含了子问题的最优解。贪心算法的基本思想找出整体当中每个小的局部的最优解,并且将所有的这些局部最优解合起来形成整体上的一个最优解。因此能够使用贪心算法的问题必须满足下面原创 2016-04-09 12:12:55 · 388 阅读 · 0 评论 -
集合的加减 —— hdu 2034
人见人爱A-BTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 65349 Accepted Submission(s): 18208Problem Description参加过上个月月赛的同学一定还记得原创 2016-04-09 18:50:42 · 1370 阅读 · 0 评论 -
面积公式小结
1>海伦公式:s=sqrt(p*(p-a)*(p-b)*(p-c))公式描述:公式中a,b,c分别为三角形三边长,p为半周长,S为三角形的面积。2>通过顶点坐标求平面上任意多边形面积为:S = 1/2×( ( X1*Y2-X2*Y1 ) + … + ( Xk*Yk+1-Xk+1*Yk ) + … + ( Xn*Y1-X1*Yn ) )需要注意的是,如果一系列原创 2016-04-09 16:00:47 · 478 阅读 · 0 评论 -
双线dp ——牧场物语
牧场物语Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice FZU 2234Description小茗同学正在玩牧场物语。该游戏的地图可看成一个边长为n的正方形。小茗同学突然心血来潮要去砍树,然而,斧头在小茗的原创 2016-05-10 16:31:42 · 1042 阅读 · 0 评论 -
2010 Asia Fuzhou Regional Contest 之 A hard Aoshu Problem
A hard Aoshu ProblemTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 62768/32768 K (Java/Others)Total Submission(s): 1289 Accepted Submission(s): 665Problem DescriptionMath O原创 2016-04-15 17:07:41 · 401 阅读 · 0 评论 -
ZOJ 3931 Exact Compression
【题意】有n(128)个节点,我们要构造一棵哈夫曼树。然后给每个节点做编码。我们最后会求和——每个点的点权*根节点到这个节点路径上0的个数是否恰好为m(m∈[0,1e8])实际上可达的数值上限只有448000原创 2016-04-19 14:13:43 · 682 阅读 · 0 评论 -
字符与数字互换 —— nyoj 303 序号互换
序号互换时间限制: 1000ms内存限制: 128000KB64位整型: Java 类名:上一题 提交 运行结果 统计 讨论版 下一题题目描述Dr.Kong设计了一个聪明的机器人卡多,卡多会对电子表格中的单元格坐标快速计算出来。单元格的行坐标是由数字编号的数字序号,而列坐标使用字母序号。观察字母序号,发现第1列到第2原创 2016-04-06 11:21:09 · 366 阅读 · 0 评论 -
hdu 2015新生赛 —— 搬砖
搬砖Problem Description 小明现在是人见人爱,花见花开的高富帅,整天沉浸在美女环绕的笙歌妙舞当中。但是人们有所不知,春风得意的小明也曾有着一段艰苦的奋斗史。 那时的小明还没剪去长发,没有信用卡没有她,没有24小时热水的家,可当初的小明是那么快乐,尽管甚至没有一把破木吉他… 之所以快乐,是因为那时的小明心怀逆袭梦想。有一天,小明为了给他心目中的原创 2015-12-01 14:36:19 · 679 阅读 · 0 评论 -
hdu ACM组队安排
ACM组队安排Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1039 Accepted Submission(s): 502Problem Description ACM亚洲区比赛结束,意味着开始备原创 2015-12-03 13:54:21 · 530 阅读 · 0 评论 -
双向广度搜索 —— 拯救公主(一)
拯救公主时间限制: 1 Sec 内存限制: 128 MB[提交][状态][讨论版]题目描述公主被妖怪抓到了一个山洞里,为了尽快营救公主,王子决定不回城搬救兵去独自营救。山洞为矩形且十分空旷,其中生活着K个妖怪。幸运的是这些妖怪晚上都会睡觉并且没人守夜。但是若是离妖怪太近就会惊醒它,其他的妖怪也会被惊醒,所以我们要找一条距离所有妖怪都很远的路。我们把山洞分为了n*m个格子,原创 2015-11-13 08:38:44 · 842 阅读 · 0 评论 -
双向搜索+DP——拯救公主(二)
拯救公主2时间限制: 1 Sec 内存限制: 128 MB[提交][状态][讨论版]题目描述公主被妖怪抓到了一个山洞里,为了尽快营救公主,王子决定不回城搬救兵去独自营救。山洞为矩形且十分空旷,其中生活着K个妖怪。幸运的是这些妖怪晚上都会睡觉并且没人守夜。但是若是离妖怪太近就会惊醒它,其他的妖怪也会被惊醒,所以我们要找一条距离所有妖怪都很远的路。我们把山洞分为了n*m个格子,走到相原创 2015-11-15 15:22:02 · 512 阅读 · 0 评论 -
大数加法算法
把输入的数用字符的形式存储,用调用函数转化成数字字型,再进做加法运算注意:1>进位2>和的数组要比两数的范围大些很简单的,不说了直接附上代码如下:#include#includeusing namespace std;int ans[10003];void zhuan(char *a,int *n){ int len=strlen(a); for(int i=原创 2015-10-14 08:16:47 · 792 阅读 · 0 评论 -
模板——之DFS & BFS
DFS:/*该DFS框架以2D坐标范围为例,来体现DFS算法的实现思想。*/#include#include#includeusing namespace std;const int maxn=100;bool vst[maxn][maxn]; // 访问标记int map[maxn][maxn]; // 坐标范围转载 2015-11-13 08:34:15 · 369 阅读 · 0 评论 -
二叉排序树
在一棵空的二叉排序树中依次插入关键字序列为 12,7,17,11,16,2,13,9,21,4试编写程序创建这棵二叉排序树(要求:创建完成之后对其进行中序遍历检验其是否是递增序列以证明其正确)源代码为:#include#include#include#define ENDFLAG -1using namespace std;typedef int KeyType,Info原创 2015-11-09 17:09:10 · 2524 阅读 · 0 评论 -
大数减法算法
输入两个大数,把两个大数各用字符数组存起来用两个函数,一个加法函数,一个减法函数原创 2015-10-22 21:26:25 · 780 阅读 · 0 评论 -
NYOJ 14 会场安排问题
会场安排问题时间限制:3000ms | 内存限制:65535KB难度:4描述学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。输入第一行是一个整型数m(m每组测试原创 2015-11-02 16:40:30 · 281 阅读 · 0 评论 -
八皇后问题
问题描述:八皇后问题最早是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出。在8×8格的国际象棋棋盘上放置八个皇后,使得任意两个皇后不能互相攻击,即任何行、列或对角线(与水平轴夹角为45°或135°的斜线)上不得有两个或两个以上的皇后。这样的一个格局称为问题的一个解。问题分析:一个正确的解应当是每一列,每一行,每一条斜线上均只有一个皇后。原创 2015-11-02 17:14:51 · 413 阅读 · 0 评论 -
最小生成树算法
题:n 城市 m 条光缆,目的:使这 n 个城市间的任意两个城市之间可以直接或间接地通信,并要求使铺设的光缆的费用最低样例输入:5 61 4 11 2 22 3 33 5 22 5 14 5 6输出:6Prim算法任意时刻,中间结果都是一棵树,从一个点开始,每次都花最少的代价,用一条边把不在树里的点加进来。(为选择离树近的点,可借助堆原创 2015-08-03 09:30:31 · 394 阅读 · 0 评论 -
判断素数方法
个人常用判断素数方式:bool prime(int n){ if(n<2) return false; for(int i=2;i<n;i++) if(n%i==0) return false; return true;}相对而言,速度较快些的写法:bool prime(int n){ if(n<2) return fal原创 2016-03-30 08:38:11 · 512 阅读 · 0 评论 -
NYOJ 562 盒子游戏
盒子游戏时间限制:1000 ms | 内存限制:65535 KB难度:3描述 有两个相同的盒子,其中一个装了 n 个球,另一个装了一个球。Alice 和 Bob 发明了一个游戏,规则如下:Alice 和 Bob 轮流操作,Alice 先操作。每次操作时,游戏者先看看哪个盒子里的球的数目比较少,然后清空这个盒子(盒子里的球直接扔掉),然后把另一个盒子里的原创 2015-11-22 19:49:02 · 631 阅读 · 0 评论 -
hdu 2015新生赛 —— 游乐场
游乐场Problem Description 小时候,因为家里经济困难,小明从未去过游乐场,所以直到现在,他还心存遗憾。 最近,杭州刚建了一座游乐场,为了弥补儿时的遗憾,小明带了一笔钱迫不及待地要去体验一番。 由于是第一次来到这种地方,小明也不知哪些项目比较好玩,因此他想体验尽可能多的项目。来之前,小明还向朋友打听了一下关于游乐场的情况,只要是朋友推荐过的,他一定原创 2015-12-01 14:32:08 · 558 阅读 · 0 评论 -
大数阶乘算法
大数阶乘本文出处:http://www.cnblogs.com/yuzhaoxin/archive/2011/11/19/2205221.html使用数组来模拟数字,这样无论结果数字有多大,只要数组的长度够长就能表示出来,用这个办法可以进行大数据的运算。首先定义一个足够长的数组。拿10000的阶乘为例,最后的结果长度是35660位,所以定义一个40000个成员的数组转载 2015-10-16 08:58:43 · 489 阅读 · 0 评论 -
结构体排序
struct node { int x,y; }A[100]; int fun (const void p,const void *q) //返回值必须是int,两个参数的类型必须是 const void //假设对 int 排序,若为升序,则 a 比 b 大,则返回一个正值,a 比 b 小,返回负值,相等时,返回 0 { struct node a=(node)原创 2015-08-02 10:17:06 · 300 阅读 · 0 评论 -
尼姆博弈和巴什博弈
尼姆博弈有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种局势,首先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是(0,n,n),只要与对手拿走一样多的物品,最后都将导致(0,0,0)。仔细分析一下,(1,2,3)也是奇异局势,无论对手如原创 2015-11-25 20:06:25 · 399 阅读 · 0 评论 -
欧几里德和扩展欧几里德算法
1.欧几里德算法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:定理:gcd(a,b) = gcd(b,a mod b)证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有d|a, d|b,而r = a - kb,因此d|r ,因此d是(b,a mod b)的公约数假设d原创 2015-12-15 14:06:54 · 290 阅读 · 0 评论 -
NYOJ 1100 WAJUEJI which home strong!
WAJUEJI which home strong!输入第一个数T,T组测试数据。两个数 n, m; ( 0接下来n行每行m 个字符。‘s’ 表示弟弟目前所在位置。‘# ’表示此处为一座山。为了节省体力,不从此处通行。从‘A’-‘Z’表示各地的经济水平,对应1-26,路过对应字符的地区需要交对应的生活费。‘l’表示蓝翔技校的所在地。s 与 l 均为小原创 2015-11-08 08:52:10 · 389 阅读 · 0 评论