算法竞赛入门经典
文章平均质量分 73
HARD_UNDERSTAND
Just try
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UVa 10129 单词 (有向欧拉路+并查集)
题目: 输入n个单词,是否可以把这些单词排成一个序列,使得第一个字母和上一个单词的最后一个字母相同。仅包含小写字母例如(acm malform mouse)就可以。 分析: 这是一道判断欧拉路的题目,上篇对欧拉路写了点基本定义。对于这题,把首尾字母看做节点,单词看成是有向边,用并查集判断是否连通,然后再根据有向图的结论:最多只能有两个点的入读不等于出度,而且必须是其中一个点的出度比入度大一原创 2016-03-23 22:33:23 · 512 阅读 · 0 评论 -
UVa 201 Squares 枚举
题意: 有n行n列的小黑点,还有m条边连接这些小黑点,统计这些线段连接成几个正方形。 分析: 枚举每个点,看看以这个点为右下角的正方形是否可以,然后枚举边长,控制正方形的大小,判断是否可以构成正方形使用map记录边,然后查询就可以。#include<iostream>#include<cstdio>#include<map>#include<cstring>using namespac原创 2016-04-09 11:58:37 · 335 阅读 · 0 评论 -
Uva 1152 和为0的4个值 hash/二分
题意: 给定4个n(1 <= n <= 4000)元素集合A, B, C, D,要求分别从中选取一个元素a, b, c, d,使得a+b+c+d = 0,问有多少种选法。 分析: 显然四重循环是过不了的,我先想到的是用map把a+b,c+d分别保存起来,然后在查找统计。超时。。。。 然后书上说用哈希表去实现,看到有的题解hash表示的太巧妙了,学习一下。 还有就是这题可以用二分解决,先计算原创 2016-05-10 11:13:46 · 1234 阅读 · 0 评论 -
Uva 11134 传说中的车 贪心的思维
题目大意:在一个n*n的棋盘上放置n个车,使得它们之间都不能互相攻击(任意两个车都不能同行或同列),并且,对于第i个车,限制它只能放在一个矩形区域内,(xli, yli),这个矩形的左上角顶点坐标是(xli, yli),右下角顶点坐标是 (xri, yri), 1 ≤ i ≤ n, 1 ≤ xli ≤ xri ≤ n, 1 ≤ yli ≤ yri ≤ n.分析: 两个车相互攻击的条件是在同一行或列原创 2016-05-10 20:19:19 · 1190 阅读 · 0 评论 -
UVa 1606 两亲性分子 扫描法
题意: 平面上有n个点,不是白点就是黑点。现在要放一条直线,使得直线一侧的白点与另一侧的黑点加起来数目最多。直线上的点可以看作位于直线的任意一侧。 分析: 这题做了很久,实在不会做。。。自己的计算几何太菜了,以后要好好练练了。 偷点懒copy点别人的题解吧: 本题利用极角扫描法解决。极角扫描法的思想是这样的:首先,选择一个点作为基准点,然后求出其他点相对于该基准点的相对坐标,同时求出相对坐原创 2016-05-15 20:56:10 · 557 阅读 · 0 评论 -
UVa 1451 平均值 数形结合
题意:给定一个长度为n 的01串,然后选一个长度至少为L的子串,使得子串的平均值最大。分析: 不会做,学习一下。可以参考这篇论文:http://wenku.baidu.com/link?url=Mz_53YzQ6hJLkXpIS9v3Uo3k9CGF4hgkcSzY5EhV5XbsF3HkW2Ae4EGCXaIdm4380TneqShe63xuTRJvHebPcPAKdUKuIRWkM04LcjS原创 2016-05-16 22:50:48 · 593 阅读 · 0 评论 -
UVa 714 抄书 二分答案
题意: 把一个包含m个正整数的序列划分成k个(1≤k≤m≤500)非空的连续子序列,使得每个正 整数恰好属于一个序列。设第i个序列的各数之和为S(i),你的任务是让所有S(i)的最大值尽 量小。例如,序列1 2 3 2 5 4划分成3个序列的最优方案为1 2 3 | 2 5 | 4,其中S(1)、S(2)、S(3) 分别为6、7、4,最大值为7;如果划分成1 2 | 3 2 | 5 4,则最大值为原创 2016-05-17 11:02:38 · 523 阅读 · 0 评论 -
UVa 1471 防线 set/LIS
题意:给出长度为n的序列,要求你删除掉一段的连续子序列,使得剩下的序列的递增子序列最长 分析: 书上讲解的很详细,摘一段: 最容易想到的算法是枚举j和i(前提是A[j]< A[i],否则拼不起来),然后分别往左和往 右数一数最远能延伸到哪里。枚举量为O(n2),而“数一数”的时间复杂度为O(n),因此总时间 复杂度为O(n3)。 加上一个预处理,就能避免“数一数”这个过程,从而把时间复杂度降原创 2016-05-16 19:39:06 · 389 阅读 · 0 评论
分享