算法竞赛入门经典
文章平均质量分 74
Shiki_05
这个作者很懒,什么都没留下…
展开
-
最大乘积(Maximum Product,UVA 11059)
题意:输入n个元素组成的序列S,你需要找出一个成绩最大的连续子序列。如果这个最大的乘积不是正数,应输出0(表示无解)。1 分析:由于n的取值很小,直接枚举子序列起始位置和终止位置,取最大值即可。PS: ans设置为long long ,然后printf里的转义字符是%d,WA了两次。。。。。。教训啊!!!!!!!#include#include#include#inclu原创 2015-11-08 16:28:26 · 371 阅读 · 0 评论 -
倒水问题(Fill,UVa 10603)
原题链接分析:#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;#define MAX 205//struct Node { int v[原创 2015-11-19 17:04:48 · 689 阅读 · 0 评论 -
天平难题(Mobile Computing,UVa 1354)
原题链接分析:思路十分巧妙,将挂坠和木棍都作为结点,则一个天平对应一个二叉树;之后通过之前学过的二进制法枚举子集的形式对子树集进行枚举,最后选取最优解即可!#include#include#include#include#include#include#include#include#include#include#includeusing namespace std原创 2015-11-18 18:32:34 · 501 阅读 · 0 评论 -
给任务排序(Ordering Tasks,UVa 10305)
原题链接分析:拓扑排序#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;#define MAX 105int G[MAX][MAX];int vis[MA原创 2015-11-18 21:13:11 · 615 阅读 · 0 评论 -
理想路径(Ideal Path,UVa 1599)
题意:给一个n个点m条边(2 分析:两次BFS,第一次从结点n逆向BFS,得到每个节点i到结点n的最短距离step[i],之后再从结点1正向BFS,每次到达一个新节点时保证step的值恰好减少1,如果有多种走法,则选择颜色字典序最小的走;若存在多条相同边,则一同压入队列进行判断,直至到结点n。PS: 邻接表真的是个好东西啊参考代码#include#include#i原创 2015-11-03 22:46:32 · 798 阅读 · 0 评论 -
自组合(Self-Assembly,UVa 1572)
题意:存在n种边上带标号的正方形,每条边的标号要么为一个大写字母和一个加号或减号(相同字母符号相反可以匹配),要么为00(无法匹配),每种正方形不限制数量,而且可以旋转或者翻转,求这些正方形能否无限地组合下去。分析:由于正方形数目不限,可以将正方形边上的符号看为点,正方形看做边,则可以根据正方形的边符号与符号的匹配规则构成一个有向图。则当且仅当途中存在有向环时有解。只需做一次拓扑排序即原创 2015-11-01 18:15:45 · 893 阅读 · 0 评论 -
带宽(Bandwidth,UVa 140)
原题链接分析:简单DFS,根据关系图搜索满足题意的解,当遇到带宽大于已知最优解时进行回溯。PS:开始做题时想当然地把关系数组c声明为c[27][27],WA了两次,真是教训啊。。。。#include#include#include#include#include#include#include#include#include#include#includeusin原创 2015-11-16 23:45:09 · 488 阅读 · 0 评论 -
困难的串(Krypton Factor,UVa 129)
原题链接分析:经典回溯,每当插入第i个字符(前i-1个符合要求)时对此串进行条件判断,若满足继续深搜,反之回溯,直至满足条件解。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAX原创 2015-11-16 17:09:30 · 533 阅读 · 0 评论 -
分数拆分(Fractions Again?1,UVa 10976)
题意:输入正整数k,找到所有的正整数x >= y,使得 1/k = 1/x + 1/y。分析:由已知关系x >= y -> 1/x 即y #include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAX原创 2015-11-08 17:04:49 · 355 阅读 · 0 评论 -
除法(Division,UVa 725)
题意:输入正整数n,按从小到大的顺序输出所有形如abcde/fghij = n的表达式,其中a-j敲好位数字0-9的全排列(可以有前导0),2 思路:枚举abcde,由n算出fghij,进而判断是否满足题意即可。#include#include#include#include#include#include#include#include#include#incl原创 2015-11-08 15:41:19 · 363 阅读 · 0 评论 -
煎饼(Stacks of Flapjacks,UVa 120)
原题链接原文链接分析:思路很简单,设目前查找位置为k,设(k+1--n)已满足题意,那么在1--k中寻找最大的元素并记录其位置为i,则有三种情况:1):若i==k,继续判断位置k-1。2):若i==1,翻转1--k,继续判断位置k-1;3):翻转1--i,使位置1为最大元素,执行 2)。自己写了程序,但一直WA,参考了网上的代码,(⊙v⊙)嗯。。。。。还是太菜了~~~~(>原创 2015-11-26 20:46:34 · 526 阅读 · 0 评论