自定义博客皮肤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.

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

原创 HDU 1166 敌兵布阵(树状数组)

题目http://acm.hdu.edu.cn/showproblem.php?pid=1166 给出数组A的每个元素的值,执行以下三种操作: Add(i, j):A[i]加上j Sub(i, j):A[i]减去j Query(i, j):求A[i], A[i+1]…A[j]的和解题思路树状数组的裸题。树状数组( Binary Indexed Tree,BIT,二分索引树)的

2017-06-30 20:24:17 241

原创 POJ 3255 RoadBlocks(次短路+dijkstra变形)

题目http://poj.org/problem?id=3255 题意:求从起点到终点的次短路。次短路是指比最短路长的路径中,相对最短的那一条。解题思路《挑战程序设计竞赛》中的一道题。 引用别人的博文->图论算法小结:次短路的求解 首先来回顾一下Dijkstra算法的原理:首先把所有结点的最短距离设置为无穷大,然后令d[0]=0。接下来,每次都找到最短路已经确定的经典,更新从它出发的相邻

2017-06-30 14:37:19 344

原创 POJ 1804 Brainman、 EOJ 3234 Sort(归并排序+逆序对)

题目http://poj.org/problem?id=1804 题意:求数组中的逆序对个数。逆序对指的是满足ai > aj的数对(ai, aj)。解题思路在归并排序的合并过程中,加入统计逆序对的语句即可。 归并排序利用了分治的思想,将数列a[l, r]分成两半a[l, mid]和a[mid+1, r],分别进行归并排序,然后再将这两半合并(merge)起来。 在合并的过程中(设

2017-06-29 21:34:26 416

原创 琐碎BFS/DFS

简单部分和 给定n个数字,能否取出部分数字的和等于k。DFS适合于解决“是否存在解”的问题。复杂度随数据量呈指数级上升,只适合于小数据量。DFS(i, sum)表示处理完前i-1个数以后的和为sum,正要对第i个数处理。对第i个数处理时,要么将s[i]加到sum里,要么跳过这个数,然后继续搜索。 剪枝:当处理到第i个数时已经溢出k,则直接返回false。#include <iostream>

2017-06-29 20:25:15 193

原创 PAT 1079 Total Sales of Supply Chain(树遍历+BFS)

题目https://www.patest.cn/contests/pat-a-practise/1079 题意:将零售商-经销商-供应商这条链抽象为一棵树;供应商作为根节点,出货物的价格为p,然后从根结点开始每往下走一层,该层的货物价格将会在父亲结点的价格上增加r%,给出每个叶结点(即零售商)的货物量,求他们的价格之和。解题思路供应商-经销商-零售商三者的关系可以看作是树的根节点-内部节点-叶

2017-06-29 15:34:23 354

原创 PAT 1034 Head of a Gang(图遍历+BFS)

题目https://www.patest.cn/contests/pat-a-practise/1034 题意:给出1000条以内的通话记录A B和权值w,如果一个团伙人数超过2人并且通话总权值超过阈值k,令团伙里面的自身权值的最大值为头目,输出所有满足条件的团伙的头目,和他们团伙里面的人数。解题思路数据结构邻接表存放图的邻接关系,weight数组存放节点权重邻接节点 = 它通话过的所有节点

2017-06-29 11:55:17 325

原创 总结:大整数类加法、乘法

总结了一下大整数的加、乘操作涉及的代码。 需要注意的点:注意C++类的语法,尤其是构造函数、重载内访问另一个对象数字在数组中是逆序存放的,每一位都是十进制表示,用len来记录这个大整数的有效长度加法操作时,由于两个数的长度可能不一,因此不能漏掉多出来的那一段,以及最后的溢出位。乘法操作时,每一次外层循环(从最低位开始遍历第二个数)得到的乘法结果,要和前一次乘法结果错开一位相加。输出时,注

2017-06-28 17:26:14 1504

原创 PAT 1032 Sharing(哈希)

题目https://www.patest.cn/contests/pat-a-practise/1032 求两个链表的首个共同结点的地址。如果没有公共节点则输出-1。解题思路总体思想就是都地址哈希,由于不要求输出字符,所以不需要结构体。刚开始想法是统计地址出现的次数,而不去遍历后来形成的链表,出现次数为3的地址即公共节点地址(也可能是首个地址则次数为2),但是尝试了很久都无法通过测试3和测试5

2017-06-20 22:36:38 415 1

原创 PAT 1030 Travel Plan(单源最短路径+优化Dijkstra)

题目https://www.patest.cn/contests/pat-a-practise/1030 题意:给出每座城市之间高速公路的长度和花费,求从给定起点到终点的最短路径并输出,若有多条最短路径,记录花费最小的那条。解题思路本题是单源最短路径的简单变形。不仅要考虑距离,还要考虑花费。关于单源最短路径,详见之前的一篇博客:PAT 1003 Emergency(单源最短路径+Dijkstr

2017-06-17 19:48:19 310

原创 PAT 1029 Median(中位数+归并排序)

题目https://www.patest.cn/contests/pat-a-practise/1029 题意:求两个排好序的数组合并后的中位数。解题思路担心直接sort会超时,所以拿归并排序的merge方法合并数组,即从每次都从两个数组剩余的元素中挑出最小的,若某个数组先挑完,则另一个数组原样抄回。然而,sort也能过……(摊手)AC代码#include <iostream>using n

2017-06-16 22:41:00 796

原创 PAT 1025 PAT Ranking(双重排序)

题目https://www.patest.cn/contests/pat-a-practise/1025 题意:给出每个考场中每个学生的成绩,求所有学生的总排名以及所在考场内的分排名。注意,同分的学生排名相同,其后的学生排名后推。解题思路简单的排序题,用结构体保存每个学生的所有信息。先对分数局部排序,再整体排序即可。需要注意的是排名的值,与前一个学生同分的时候排名相同,否则排名为比该学生分数高

2017-06-16 19:48:14 1091

原创 PAT 1024 Palindromic Number (大整数相加)

题目https://www.patest.cn/contests/pat-a-practise/1024 已知非回文串可以通过不断和自身逆序相加来得到回文串,称为一次操作,如67+76=143+341=484的操作次数为2。给定一个正数N和操作的最大次数,判断该数串在最大操作次数内能否得到回文串。解题思路由于N最大可以为10^10,操作次数最多可以为100次,所以数字长度会很长,在long l

2017-06-16 17:03:52 411

原创 PAT 1023 Have Fun with Numbers(简单计数+大整数)

题目https://www.patest.cn/contests/pat-a-practise/1023 题意:输入一串不超过20位的数字,将该数字串乘以两倍后,判断新数串是否为原数串的一个排列。解题思路统计旧字符串中数字0-9的出现次数和新字符串中数字0-9的出现次数,若两者完全相同,则新数串是原数串的一个排列。AC代码#include <iostream>#include <cstrin

2017-06-16 15:19:02 240

原创 PAT 1021 Deepest Root(树的直径+BFS+并查集)

题目https://www.patest.cn/contests/pat-a-practise/1021 题意:给出一张图,判断该图能否形成一棵树,若能则求出树的最长简单路(树的直径),否则求出连通分量的个数。解题思路本题是树的直径+并查集的应用,似乎是某C9的机试题之一。解决这道题的整体思路是: 1. 先通过并查集判断连通分量的个数,若连通分量只有1个就说明不存在森林; 2. 对剩下

2017-06-16 14:29:44 371

原创 PAT 1020 Tree Traversals(树重建+BFS)

题目https://www.patest.cn/contests/pat-a-practise/1020 题意:给定二叉树的后序、中序遍历结果,输出其层次遍历结果解题思路首先重建树,关于利用含中序的两种序列构建这棵二叉树,详见之前的博客二叉树遍历(已知前中序求后序),最后根据这棵树的层次做输出,一遍BFS就可以解决。AC代码#include <iostream>#include <queue

2017-06-06 23:23:32 280

原创 PAT 1019 General Palindromic Number(进制水题)

题目https://www.patest.cn/contests/pat-a-practise/1019 题意:判断将数字N转换到base进制下以后是否满足回文。解题思路进制转换的水题,只需模拟短除法将n转换到base进制下,每次短除法的余数都push到vector里,判断vector中对应位置的元素是否相同。判断回文的方法是两端的下标从首尾往中间走。刚开始由于循环条件写成了 i != las

2017-06-06 22:16:42 446

原创 PAT 1018 Public Bike Management(最短路径+DFS)

题目 https://www.patest.cn/contests/pat-a-practise/1018 题意:自行车管理中心PBMC监控所有站点的实时自行车量,每个站点的最大容纳量都是Cmax,最优状态为Cmax/2。当一个站点为Empty或者Full的时候会向PBMC报告,这时候PBMC需要选择一条到达该站点耗时最短的路径,并且将沿路经过的站点都调整为最优状态。求解这些最短路径中

2017-06-06 10:20:04 474

空空如也

空空如也

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

TA关注的人

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