ACM-算法与刷题
文章平均质量分 59
JobsandCzj
Java工程师;中间件研发工程师
展开
-
十大经典排序算法小结
排序可以说是套路最多的基本算法了,今天来了兴致,那就总结一下这十大排序算法吧。冒泡法:这可以算是知名度最高的算法之一了吧,可以说不会这个算法都不好意思说自己写过代码。冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名。不多说了,直接上代码:#include#includeusing namespac原创 2017-04-15 20:52:10 · 2427 阅读 · 4 评论 -
线段树(区间更新)小结
线段树是ACM竞赛的常客,由于它的高效,美妙,经常被拿来出题。线段树是解决与区间有关的问题的,其中有一类问题就是更新区间上的一段值,这是非常典型的一类问题,在此,我做个小结。倘若要更新一个区间的值,我们每次更新到叶子节点,那么这样效率就非常低了。倘若我们能每次只更新到你需要的节点,然后在该节点做个标记(就是lazy标记),下次要用到该节点下的东西,再更新下面的值。举一个经典例子,HDU1698原创 2016-12-09 19:24:13 · 481 阅读 · 0 评论 -
HDOJ-1434幸福列车
幸福列车Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submission(s): 1989 Accepted Submission(s): 612Problem Description一批幸福的列车即将从杭州驶向幸福的终点原创 2016-02-24 21:14:00 · 495 阅读 · 0 评论 -
图的邻接表表示方法 (两种形式) 转自《挑战程序设计竞赛》
// first example#include#include#includeusing namespace std;/*struct edge{int to,cost; //边上有属性的情况};vector G[MAX_A];*/vector G[MAX_A];int main(){转载 2015-08-18 10:35:05 · 628 阅读 · 0 评论 -
UVALive 5797解题报告
The Braille system, designed by Louis Braille in 1825, revolutionized written communication for blindand visually impaired persons. Braille, a blind Frenchman, developed a tactile language where eac原创 2015-08-18 10:45:22 · 709 阅读 · 0 评论 -
深搜玩转数独
数独是十分流行的智力游戏 但用深搜(DFS),可以轻松解决这个问题。#include#include#includeusing namespace std;int map[9][9],vis[10][10],a[10][10],b[10][10];int count_num,flag; //count表示0的个数 struct node{原创 2015-08-18 14:48:46 · 1179 阅读 · 0 评论 -
NYOJ 坦克大战(宽度优先搜索)
坦克大战时间限制:1000 ms | 内存限制:65535 KB难度:3描述Many of us had played the game "Battle city" in our childhood, and some people (like me) even often play it on computer now. What we are dis原创 2015-08-17 17:03:53 · 657 阅读 · 1 评论 -
杭电OJ 1042 N!(大数阶乘模板)
N!Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 65997 Accepted Submission(s): 18938Problem DescriptionGiven an integer N原创 2015-08-17 16:53:25 · 1047 阅读 · 0 评论 -
杭电OJ 5387 Clock
ClockTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 529 Accepted Submission(s): 356Problem DescriptionGive a time.(hh:mm:ss)原创 2015-08-17 11:04:40 · 579 阅读 · 0 评论 -
杭电(oj)ACM 2586 简单LCA
How far away ?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8950 Accepted Submission(s): 3106Problem DescriptionThere are n原创 2015-08-16 18:45:42 · 648 阅读 · 0 评论 -
杭电OJ 1671解题报告(字典树模板)
Phone ListTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14925 Accepted Submission(s): 5029Problem DescriptionGiven a list o原创 2015-09-12 19:13:01 · 501 阅读 · 0 评论 -
二维线段树解析 (HDU1823)解题报告
学习二维线段树,需有一维线段树的基础。倘若对一维线段树还不是很了解的同学可以点开这个链接看看。http://blog.csdn.net/jobsandczj/article/details/47808213Luck and Love Time原创 2015-08-20 16:03:05 · 566 阅读 · 0 评论 -
Fire Game
K - Fire GameFat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this board is consisting of grass or just empt原创 2017-04-16 19:35:10 · 1925 阅读 · 0 评论 -
(PAT)1114. Family Property(并查集)
好久没码算法了,连个并查集都搞得很吃力,贼尴尬。。。1114. Family Property (25)时间限制150 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueThis time,原创 2017-02-27 17:53:22 · 439 阅读 · 0 评论 -
(PAT)1123.[平衡树旋转] Is It a Complete AVL Tree
PAT最后一题还是挺看运气的,考满分的确不容易(菜鸡的感叹!!!)这是一道关于平衡二叉树旋转的问题,可以说非常基础,题目也没啥特别的变化,但奈何徒手码不粗来,大写的尴尬啊。1123. Is It a Complete AVL Tree (30)时间限制400 ms内存限制65536 kB代码长度限制16原创 2017-02-25 09:11:01 · 877 阅读 · 1 评论 -
(PAT)1119. Pre- and Post-order Traversals
1119. Pre- and Post-order Traversals (30)时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Special作者CHEN, YueSuppose that all the keys in原创 2017-02-24 20:03:43 · 472 阅读 · 0 评论 -
(PAT)1110. Complete Binary Tree
又是完全二叉树,在课上瞎弄了很久,马上就要考PAT了,感觉凶多吉少,老天保佑,赐我个满分吧!!!1110. Complete Binary Tree (25)时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CH原创 2017-03-01 19:28:31 · 321 阅读 · 0 评论 -
HDOJ 1381 Crazy Search
Crazy SearchTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2357 Accepted Submission(s): 882Problem DescriptionMany people l原创 2016-02-16 17:33:32 · 407 阅读 · 0 评论 -
用优先队列求最优二叉树根的权值
#include#include#include#include#include#include#include#include#includeusing namespace std;priority_queue,greater > qq; //优先从小到大int a,n;int w1,w2; int W; //记录最终权值原创 2015-08-17 19:03:38 · 2268 阅读 · 0 评论 -
UVALive 5789 双向链表解法
Nlogonia is ghting a ruthless war against the neighboring country of Cubiconia. The Chief General ofNlogonia's Army decided to attack the enemy with a linear formation of soldiers, that would advanc原创 2015-08-17 21:26:29 · 607 阅读 · 0 评论 -
一维线段树模板 (HDU 1166)解题报告
线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O原创 2015-08-20 15:12:10 · 1049 阅读 · 0 评论 -
SPFA算法模板
SPFA(Shortest Path Faster Algorithm)(队列优化)算法是求单源最短路径的一种算法,在Bellman-ford算法的基础上加上一个队列优化,减少了冗余的松弛操作,是一种高效的最短路算法。求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm,是西南交通大学段凡丁于1994年发表的。 原理是从原点出发,遍历与之原创 2015-08-18 19:14:07 · 669 阅读 · 0 评论 -
UVALive 5986解题报告
You are the organizer of a Wizarding Duel tournament at Hogwarts. N players participated in thetournament and each player played with every other player exactly once, and each such game resultedin原创 2015-08-19 18:44:31 · 988 阅读 · 0 评论 -
Kruskal算法生成最小生成树
学习这个算法首先得有并查集的基础,如果不懂并查集,请自行学习。分3步:1、先将权值从小到大排序。2、利用并查集看是否在同一集合来判断当下这个边的选入是否会造成重边或生成环。3、贪心法求最小生成树。#include#include#include#include#include#include#include#include#include原创 2015-09-04 20:37:02 · 505 阅读 · 0 评论 -
蓝桥杯 带分数
问题描述100 可以表示为带分数的形式:100 = 3 + 69258 / 714。还可以表示为:100 = 82 + 3546 / 197。注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。类似这样的带分数,100 有 11 种表示法。输入格式从标准输入读入一个正整数N (N输出格式程序输出该数字用数码1~9不重复不遗漏地原创 2016-03-19 21:14:01 · 469 阅读 · 0 评论 -
多段图算法
多段图就是这么一幅图:分成多段,计算第一段到最后一段的最短距离。对其使用动态规划法:阶段:将图中的顶点划分5个阶段,k状态:每个阶段有几种供选择的点s决策:当前状态应在前一个状态的基础上获得。决策需要满足规划方程规划方程:f(k)表示状态k到终点状态的最短距离。初始条件:f(k)=0;方程:f(k-1)=min{f(k)+W(原创 2016-11-06 15:18:53 · 2375 阅读 · 0 评论 -
各类背包问题小结
背包问题可以说是动态规划问题的代表了,几乎一说到动态规划,背包问题便是一个不能不说的问题。先从简单的0-1背包问题说起。问题描述非常简单:有一个体积为V的背包,你有N件物品,每件物品的体积和价值分别为v[i], val[i]。请问怎么选择物品能使背包价值最大。很显然,用暴力的方法,即一件物品分选和不选两种情况来讨论,那么这个问题的复杂度就相当高了。所以我们必须寻找更优化的方法。F(原创 2016-11-06 15:45:10 · 539 阅读 · 0 评论 -
(PAT)1111. Online Map(迪杰斯特拉算法)
不用模板徒手码代码真TM刺激。。PAT,我有句MMP不知当讲不当讲。迪杰斯特拉,一个非常不错的算法,老迪也是个牛人,哎呀,跑题了。。不懂DJ算法的话,参考:迪杰斯特拉算法1111. Online Map (30)时间限制300 ms内存限制65536 kB代码长度限制16000 B判原创 2017-02-28 12:03:28 · 1348 阅读 · 0 评论 -
逆波兰表达式算法
我们都知道运算符是分优先级的,但通过逆波兰表达式算法可以避免优先级问题。先我讲一讲过程,一下内容引自他人博客:1、将一个中序表达式转化成为逆波兰表达式。 首先维护的是两个栈,我们这里暂且称为S1和S2,S1中的结果最后存的就是逆波兰表达式,S2中将用于暂时存放运算符并且在最终形成逆波兰表达式的时候,该栈是会清空的。下面我们看看怎样具体的形成逆波兰表达式。原创 2016-11-01 22:10:11 · 1186 阅读 · 2 评论 -
字典序问题
我的思路很简单,程序开始前,先做一遍预处理,将处理的数据存到map中,处理时用到类似DP的思想进行优化。#include#include#include#includeusing namespace std;string book;map mymap[7];//前一个下标表示字符串长度 long long size=1;map::iterator itemap;//len原创 2016-09-19 19:25:03 · 653 阅读 · 0 评论 -
ACM博弈论小结
博弈论是门非常有意思又博大精深的学科,非常实用。感兴趣的同学可以去看看什么是囚徒困境,智猪博弈,也可以去看看耶鲁大学的博弈论公开课,想必会受益匪浅。不过我想讲的还是和ACM相关的博弈。有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来原创 2016-08-08 20:52:16 · 2845 阅读 · 0 评论 -
杭电1874-畅通工程续(SPFA算法)
Problem Description某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。 Input本题目包含多组数据,请处理到文件结束。原创 2016-04-16 11:39:32 · 588 阅读 · 0 评论 -
杭电1874-畅通工程续
Problem Description某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。 Input本题目包含多组数据,请处理到文件结束。原创 2016-04-16 11:23:37 · 383 阅读 · 0 评论 -
HD-2063 匈牙利算法解决二分图问题
过山车Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6950 Accepted Submission(s): 3019Problem DescriptionRPG girls今天和大家一起去游乐场玩,转载 2016-03-08 17:07:07 · 663 阅读 · 0 评论 -
最长公共子序列问题-HD1423
Greatest Common Increasing SubsequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6073 Accepted Submission(s): 1976Problem De原创 2016-03-03 16:04:27 · 698 阅读 · 0 评论 -
杭电OJ 1102(Constructing Roads)解题报告
Problem DescriptionThere are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B are conn原创 2015-09-06 11:06:21 · 576 阅读 · 0 评论 -
Cheap Travel(暴力求解法)
A. Cheap Traveltime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputAnn has recently started commuting by subway原创 2015-11-21 09:47:31 · 2097 阅读 · 0 评论 -
大数乘法模板
/*两个非常大的数相乘模拟乘法运算*/#include#include#include#include#include#include#include#includeusing namespace std;#define MAX_N 221 int a1[MAX_N],a2[MAX_N]; char s1[MAX_N],s2[原创 2015-11-21 10:09:08 · 460 阅读 · 0 评论 -
大数加法模板
/*大数加法模板 */#include#include#include#include#include#include#includeusing namespace std;int T;char s1[1001],s2[1001];int ca,up;stack sta;int main(){ while(cin>>T) { ca=1; while原创 2015-11-21 10:12:53 · 400 阅读 · 0 评论 -
辗转相除法求最大公约数
/*辗转相除法求最大公约数 向我们展现了数学的博大精深以及无穷魅力其实原理我一直不懂 咋这样就求出了最大公约数类 */#include#includeusing namespace std;int gcd(int a,int b){ if(a<b) swap(a,b); return !b?a:gcd(b,a%b);}int main(){ cout<<gcd(3原创 2015-11-21 10:57:00 · 490 阅读 · 0 评论