自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lecholin的博客

All growth is a leap in the dark.

  • 博客(35)
  • 收藏
  • 关注

原创 C/C++编程的常识和注意点(不断更新)

由于编程过程中经常会遗忘一些C/C++的代码编写规则、函数使用规则(参数和返回值含义)等,所以每次都重新查阅百度,非常麻烦,所以稍微整理一下它们的注意点和知识点,欢迎指正~

2017-04-08 16:28:35 1378

原创 POJ 2533 Longest Ordered Subsequence(最长上升子序列DP)

原题地址http://poj.org/problem?id=2533 最长上升子序列问题:有一个长为n的数列,请求出这个序列中最长的上升子序列的长度。上升子序列指的是对任意的i < j都满足ai < aj的子序列(注意和子串的区别)。解题思路本题是最长上升子序列(Longest Increasing Sequence, LCS)的裸题,用动态规划求解最为方便。O(n^2)的DP解法定义dp[i

2017-04-30 22:54:43 338

原创 HDU 1114 Piggy-Bank(完全背包动态规划+变形)

原题地址http://acm.hdu.edu.cn/showproblem.php?pid=1114 题意:给定一个存钱罐的重量M,已知里面存放的货币种类可能有N种,每种货币都有重量w和金额v,求该存钱罐里存放的最少金额(存钱罐必须装满)。解题思路最近在复习背包问题,在上一题里复习了【0-1背包的动态规划】,这一题来复习完全背包的动态规划解法,但是这一题不是裸题,有两处变形。首先看完全背包的经

2017-04-30 17:33:55 397

原创 POJ 3624 Charm Bracelet(0-1背包的动态规划!)

原题地址:http://poj.org/problem?id=3624 0-1背包问题描述如下:   有一个容量为M的背包,和N个物品。这些物品分别有两个属性,体积w和价值v,每种物品只有一个。要求用这个背包装下价值尽可能多的物品,求该最大价值,背包可以不被装满。   因为最优解中,每个物品都有两种可能的情况,即在背包中或者不存在(背包中有0个该物品或者 1个),所以我们把这个问题称为0-1背

2017-04-29 21:10:10 539

原创 POJ 3253 Fence Repair(贪心+优先队列)

原题地址http://poj.org/problem?id=3253 题意:农夫准备把总长度为L的木板切割成N块长度为L1,L2…LN的小木板,对于这N-1次切割,每次切割木板的费用为这块木板的长度。安排切割的次序,使得这N-1次切割的费用最少。 例如长度为21的木板要切成长度为5,8,8的三块木板。长度为21的木板切为长为13和8的木板时,费用为21;再将13切为5+8时,费用为13;总

2017-04-28 22:55:27 510

原创 POJ 3617 Best Cow Line(贪心+最小字典序)

原题地址http://poj.org/problem?id=3617 题意:给定长度为N的字符串S,构造一个新的长度为N的字符串T,使得T的字典序最小。(构造时要么从S的头部删除一个字符加到T的尾部,要么从S的尾部删除一个字符加到T的尾部)解题思路本题是简单的贪心算法的题目。每次观察S最左、最右两端的字符,取较小的字符,如果两端的字符相同,则从两侧同时向中间查看,直到找到一个能比较出大小的字符

2017-04-28 09:44:29 439

原创 九度OJ 1456 胜利大逃亡(模拟+BFS)

原题地址http://ac.jobdu.com/problem.php?pid=1456 给定一个三维迷宫,求从入口到出口的最短路径。解题思路本题的题意很容易懂,因为刚刚写了几道DFS,所以很自然就用DFS去做这道题,可是不管怎么剪枝都1000ms+超时,改用BFS马上就用30ms AC了,可见两者在耗时上的差别实在是大。详见大神总结的[BFS和DFS区别](http://blog.csdn.

2017-04-27 22:28:06 365

原创 POJ 2386 Lake Counting(深度优先搜索)

原题地址http://poj.org/problem?id=2386 题意:有一个大小为N*M的园子,雨后有的格子积了水。八连通((i, j)为中心的九宫格的其余格子)的积水被认为是连续的一片水洼,求出园子里总共有多少水洼。解题思路本题是典型的枚举搜索题,一开始没有想到比较顺畅直接的解法,后来看了书才发现,搜索的同时可以改变搜索对象来帮助解题。从任意的W开始,不停地把邻接的部分用.来代替。那么

2017-04-27 19:24:12 569

原创 POJ 1852 Ants(模拟+弹性碰撞)

原题地址http://poj.org/problem?id=1852 题意:在一根长为L厘米的水平木棍上有n只蚂蚁,它们以每秒1cm/s的速度走到木棍一端就会掉下去。现在知道它们起始位置(相对于木棍左端点的距离)。但是不知道它们爬行的方向。两只蚂蚁相遇后,它们会掉头往反方向走。求所有蚂蚁都落下木棍的最短时间和最长时间。解题思路如果采用穷举搜索的办法枚举所有蚂蚁的初始朝向,那么复杂度为O(2^n

2017-04-27 17:53:46 661

原创 九度OJ 1138 进制转换(求大整数的2进制)

原题地址http://ac.jobdu.com/problem.php?pid=1138 题意:将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。解题思路由于这个10进制数的长度已经达到30位,属于大整数(超出20位的long long)的进制转换。将输入的大整数存在int数组里,把这个数组当作一个整数,模拟小学时候学的整数除法,让这个大整数每次对2取余,最终的余数倒排就是结果,如

2017-04-25 22:34:42 535

原创 九度OJ 1118 数制转换(a进制 -> b进制)

原题地址http://ac.jobdu.com/problem.php?pid=1118 输入a进制数n,转为对应b进制的数。解题思路一道水题。 进制转换的问题以前大一学C语言的时候就做过,这道题目比较简单,a和b都在2~16以内,很常规,不需要更多的字母来表示(还记得以前做过一道26进制内的,当时做了很久哈)遇到两个数进制转换的问题,一般采取的办法都是:先将源进制的数转为中间的十进制数,再

2017-04-24 22:35:44 540

原创 UVa 10391 Compound Words(字符串+查找)

原题地址https://vjudge.net/problem/UVA-10391 按照字典序输入一个词典,输出其中所有的复合词。复合词是指可以由字典中任意两个不同的单词组合而成的词,比如new+born=newborn解题思路本题是《算法竞赛入门经典》的习题5-5,一道水题,但是需要一点小技巧。最直接想到的是一个O(n^2)的遍历,看每对字符串拼接后的词是否在原来的词典里,但是由于n有1200

2017-04-23 11:28:43 332

原创 UVa 1594 Ducci Sequence(模拟+查重)

原题地址https://vjudge.net/problem/UVA-1594 题意:对一个n元组(a1, a2, … an),可以对于每个数求出它和下一个数的差的绝对值,得到一个新的n元组(|a1-a2|,|a2-a3|…|an-a1|),重复这个过程,得到的序列成为Ducci序列。 例如(8, 11, 2, 7) → (3, 9, 5, 1) → (6, 4, 4, 2) → (2,

2017-04-22 22:05:51 555

原创 UVa 1592 Database(枚举+字符串查重)

原题地址https://vjudge.net/problem/UVA-1592 题意:给定一个数据库的n行和m列,判断是否存在两个不同列c1、c2,使得这两个列下有两个不同行r1、r2对应的内容都相等。即[r1][c1]=[r2][c1]且[r1][c2]==[r2][c2]。如下图的第2行、第3行和第2列、第3列。 解题思路本题是《算法竞赛入门经典》的例题5-9,是STL的综合应用题,

2017-04-18 19:29:24 339

原创 UVa 400 Unix ls(排序+输出控制)

原题地址https://vjudge.net/problem/UVA-400 给定n个代表文件名的字符串,按字典序排序,再按列优先输出,每行最多输出60个字符,要求输出的行数最少。(最后一列的列宽为最大字符串长度max_len,其余列的列宽为max_len+2个字符)解题思路本题是《算法竞赛入门经典》的习题5-1,是排序的水题。要使输出的行数最少,那么每一行就要尽可能输出60个字符,但是由于列

2017-04-16 22:49:04 486

原创 STL 例题

一些关于STL数据结构、函数使用的例题。

2017-04-16 12:55:48 2050 2

原创 UVa 815 Flooding!(排序)

原题地址https://vjudge.net/problem/UVA-815 题意:有一个n*m的方格,每个格子的底面都是边长为10的正方形,整个区域外看作无限高的墙壁。输入每个格子的海拔高度,以及区域内的雨水总体积,输出区域水位的海拔高度以及淹没方格的占比。解题思路本题是《算法竞赛入门经典》的习题4-10,这一章前面几道习题都比较复杂,为了照顾到后面的进度,先跳过啦。刚开始没有读懂题意,后来

2017-04-15 20:26:18 419

原创 UVa 202 Repeating Decimals(模拟+哈希)

原题地址https://vjudge.net/problem/UVA-202 给出两个数n,m,0<=n,m<=3000,输出n/m的循环小数表示以及循环节长度。解题思路本题是《算法竞赛入门经典》的习题3-7,思路容易想到,实现起来有些细节和边界需要考虑。不难想到,小数点后循环节的产生是因为计算时的某个余数重复出现,这之后的计算会重复上一次这个余数出现时直到当前位置的结果。因此关键在于找到这个

2017-04-13 23:09:23 305

原创 UVa 1368 DNA Consensus String(贪心+计数)

原题地址https://vjudge.net/problem/UVA-1368 题意:定义两个等长字符串的Hamming距离等于字符不同的位置个数。例如ACGT和GCGA的Hamming距离为2。(A-G和T-A不同)。 输入m个长度均为n的DNA序列(只含A、C、T、G),求解一个DNA序列,使得该序列到这m个序列的总Hamming距离之和最小。 如果存在多个这样的DNA序列,求字

2017-04-13 16:37:45 328

原创 UVa 232 Crossword Answers(枚举+输入输出)

原题地址https://vjudge.net/problem/UVA-232 题意:输入r行c列的网格,黑格用 ‘*’ 表示, 每个白格上都填有一个字母。如果一个白格的左邻或上邻位置没有白格(黑格或越界),则称该白格是一个起始格。 首先将所有起始格按照从上到下,从左到右的顺序编号1,2,3…… 接下来找出所有的横向单词(从一个无左邻的起始格开始,向右延伸至黑格或边界),再找出所有的纵

2017-04-13 14:36:29 332

原创 UVa 227 Puzzle(小心输入输出!)

原题地址https://vjudge.net/problem/UVA-227 题意如图 解题思路本题是《算法竞赛入门经典》的习题3-5,题目本身非常简单,但是设了很多坑爹的陷阱,包括数据的输入、指令的输入、结果的输出,估计就是它主要的考点。根据每个指令决定移动哪个行列位置的格子,当要移动的某个格子越界时则该指令非法。总结一下我踩过的坑:输入: 由于该二维字符数组含空格,而 scan

2017-04-12 21:04:05 1851 3

原创 UVa 1585 Score / 1586 Molar Mass(遍历+计数)

原题地址https://vjudge.net/problem/UVA-1585 题意:给定由O和X组成的串,统计得分。每个O的得分为目前连续出现的O的个数,X得分为0,如OOXXOXXOOO=1+2+0+0+1+0+0+1+2+3=10。解题思路本题是《算法竞赛入门经典》的习题3-1,大水题。遍历输入字符串,用seq记录目前连续出现的O的个数,seq=0代表没有遇到O。遇到O则按照规则累加,遇

2017-04-11 19:50:01 385

原创 UVa 1584 Circular Sequence / 455 Periodic Strings(枚举字符串)

原题地址https://vjudge.net/problem/UVA-1584 题意:DNA的四个字母CGAT排列成环形,可以移动起点,输出字典序最小的环形序列(顺时针)。解题思路这道题是《算法竞赛入门经典》的例题3-6,是一道水题。给定两个起始位置,函数needSwap完成以下任务:遍历这两个起始位置开始的环形序列中的每个字符,如果在某个字符上,新起点比之前维护的起点min_index的字典

2017-04-11 19:23:21 259

原创 UVa 1583 Digit Generator(枚举+打表)

原题地址https://vjudge.net/problem/UVA-1583 定义数字x加上x的各位数字之和得到y,称x是y的生成元。一个数可能存在多个生成元,求给定数字n最小的生成元。解题思路这道题的题意很清楚,也很简单。需要注意的是通过打表做预处理,事先计算好每个数字的最小生成元。通过遍历1-100000内的所有数字,计算它作为生成元可能构成的大数并标记之。由于遍历是从小到大的,所以如果

2017-04-10 22:10:29 251

原创 UVa Master-Mind Hints(猜数字+计数)

原题地址https://vjudge.net/problem/UVA-340 题意:猜数字游戏。给定答案序列和猜测序列,统计有多少数字正确(A),多少数字在两个序列中都出现过但位置不对应(B)。解题思路本题是《算法竞赛入门经典》的例题3-4,原题的英文题目很复杂,但是玩过猜数字的都知道是什么意思 :)猜测不限次数,输入0 0 0 0结束这轮猜测;判断A非常简单,直接统计guess[i] =

2017-04-10 21:21:08 1690

原创 UVa 401 Palindromes(常量数组+遍历)

原题地址https://vjudge.net/problem/UVA-401 题意:判断输入的字符串是否满足回文、镜像。 回文即从左往右读和从右往左读的序列一样,镜像即可以通过翻转规则从一个字符变成另一个字符,如(3,E),(J-L)等。 解题思路本题是《算法竞赛入门经典》的例题3-3,题目很简单,值得注意的是常量数组的妙用。判断回文串很简单,只要遍历字符串,判断字符str[i]

2017-04-10 20:14:10 356

原创 《算法竞赛入门经典》习题2-6 三位数排列

原题 题意:用1,2,3,……9组成3个三位数 abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。 按照”abc def ghi”的格式输出所有解,每行一个解。解题思路这道题也是整数拆分、取整取余问题的基础练习。关键信息在于“比例=1:2:3”和“都使用一次”。用visit数组标记每个数字是否出现过枚举(abc, def, ghi)可能的取值,将a

2017-04-08 21:22:41 2731 2

原创 《算法竞赛入门经典》习题2-5 分数化小数(Decimal)

原题 题意:输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。其中a,b ≤ 106, c≤100。输入包含多组数据,结束标记为a=b=c=0。 测试数据: 样例输入: 1 6 4 0 0 0 样例输出: Case 1: 0.1667解题思路这道题是整数取整、取余的练习题。本以为可以直接用C++的setprecision(c)解

2017-04-08 20:26:25 2719 3

原创 基于贪心算法的区间问题

参考贪心算法——有关区间的问题 刘汝佳《算法竞赛入门经典·第2版》第8.4节 贪心法(P231)区间完全覆盖问题贪心策略:先按左界排序,然后每次都选择左界在当前覆盖范围内,右界相对最大的区间,并更新覆盖范围。#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int max

2017-04-07 21:46:52 543

原创 POJ 3069 Saruman's Army(贪心+区间覆盖)

原题地址http://poj.org/problem?id=3069 题意:X轴上有n个点Xi,雷达必须被放置在点上,且能探测与其距离为R内的所有点,求能覆盖所有点的最少雷达数。解题思路这题属于贪心算法的题目,很明显也是区间覆盖问题。我也是愚蠢到极致了,才会想着记录每个点的R范围内的邻居数,对邻居数降序排,在邻居数最多的点上放雷达。浪费了一个半小时,数组套数组,还是WA,debug失败只能参考

2017-04-07 21:00:35 459 2

原创 POJ 2586 Y2K Accounting Bug(贪心+枚举)

原题地址http://poj.org/problem?id=2586 题意:已知每个月的经营状况要么盈利s,要么亏损d,若每五个月的汇总都是亏损,求这一年12个月最大盈利额(不能盈利则输出Deficit)。解题思路这道题被划分到贪心的题库里,但是其实不用花时间在贪心算法的设计上。最直观的贪心思路就是,为了使每5个月亏损且总和盈利,那就要利用相邻的5个月的重叠部分,将亏损的月份放在这些部分且使每

2017-04-07 14:28:49 338

转载 分类算法评价标准

一、引言分类算法有很多,不同分分类算法又用很多不同的变种。不同的分类算法有不同的特定,在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法。正确率确实是一个很好很直观的评价指标,但是有时候正确率高并不能代表一个算法就好。比如某个地区某天地震的预测,假设我们有一堆的特

2017-04-06 16:37:08 1844

原创 POJ 2109 Power of Cryptography(简单计算)

原题地址:http://poj.org/problem?id=2109 已知kn=p,给定n和p,求k。解题思路不知道目录里这道题为什么被分到贪心算法??? 刚看到题目,被题目的p的范围10^101吓到,以为要用高精度整数+二分来求p的n次根。 但是注意到double的数值范围是[-1.7*10^308, +1.7*10^308],远大于10^101;double有效精度为15-16位,题

2017-04-05 22:02:44 245

原创 POJ 1328 Radar Installation(贪心+区间覆盖)

原题地址:http://poj.org/problem?id=1328 题意:将一条海岸线看成X轴,X轴上面是大海,海上有若干岛屿,给出雷达的覆盖半径和岛屿的位置,要求在海岸线上建雷达,在雷达能够覆盖全部岛屿情况下,求雷达的最少使用量。

2017-04-05 20:29:57 310

原创 POJ 2965 The Pilots Brothers' refrigerator(枚举+DFS)

原题地址http://poj.org/problem?id=2965 给定4*4矩阵,每个方格为’+’或’-‘,对每个方格状态的翻转都会引起所在行、所在列其它方格的翻转,求最小的翻转次数和翻转序列,使得所有方格都为’-‘。解题思路本题与前一篇博文《POJ 1753 Flip Game》的题目非常像,都是枚举相关的题目。在POJ 1753里用到了状态压缩的方法,状态压缩的核心思想就是用二进制位来

2017-04-05 14:12:25 281

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除