自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黄子乐的博客

powerLEO101的博客

  • 博客(37)
  • 资源 (7)
  • 收藏
  • 关注

原创 Windows配置Mingw编译

这一年打Code用的基本上都是Ubuntu的Vim,这次突然转到Windows,瞬间不想用Dev-cpp,于是想自己下个编译器,这里介绍如何安装并配置Mingw首先装个Dev-cpp(可以到网上搜),虽然说Dev-cpp只是包含的Mingw,但是因为Mingw下载的速度感人,亲测装Dev-cpp比直接装Mingw快不知道多少倍然后在文件管理器里,计算机->属性->高级系统设置-...

2018-08-10 20:35:03 401

原创 Luogu4011 孤岛营救问题(拯救大兵瑞恩)分层图+最短路

题面:[孤岛营救问题](https://www.luogu.org/problemnew/show/P4011]如果没有钥匙,那么这题就是一个最简单的最短路,有了钥匙以后,就要朝这个方向想(一个很经典的套路):能不能对图做某些操作,使得问题再次变成一个简单的最短路问题。然后就要用到一个技巧:分层图。我们共建2p2p2^p层图,每层图的层数表示当前拥有什么种类的钥匙(用二进制来表示),我们先建立...

2018-08-04 20:36:33 1423

原创 图论500题——POJ_P1308 Is_It_A _tree?

题目: Is It A Tree? Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33009 Accepted: 11196 DescriptionA tree is a well-known data structure that is either empty (null, void,

2017-07-17 17:25:53 863

原创 图论500题——HDU_P1272(小希的迷宫)

题目: 小希的迷宫Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 50831 Accepted Submission(s): 15852Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Probl

2017-07-11 19:40:21 943

原创 背包九讲——多重背包

多重背包是完全背包的升级版,是《背包问题九讲》里的第三讲,先来看看《背包问题九讲》是怎么表述这个问题的: 题目 有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大所属专栏:戳我访问 再来看看背包问题九讲是如何解决这个问题的: 基本算法 这题目和完全背包问

2017-07-06 11:09:58 626

原创 背包九讲——完全背包

完全背包是01背包的加强版,先来看看《背包问题九讲》里是怎么描述这个问题的: 题目 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。所属专栏:戳我访问 再来看看《背包问题九讲》是怎么解决这个问题的: 基本思路 这个问题非常类似于01背包问题,所不同

2017-07-06 09:45:46 836

原创 背包九讲——01背包

题目: 01背包问题 有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是Ci,得到的价值是Wi。求解将哪些物品装入背包可使价值总和最大。所属专栏:戳我访问01背包是动态规划的入门题目。也是《背包问题九讲》里的第一讲。 我们先来看看《背包问题九讲》是怎么讲的: 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[

2017-07-06 08:25:47 499 1

原创 动态规划——洛谷1880石子合并

题目:题目描述在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.输入输出格式 输入格式:数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数.输出格式:输出共2行,第1行为最小得分,第2行为最

2017-07-05 19:35:37 518 1

原创 动态规划——洛谷_P1057传球游戏

题目:题目描述上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师在此吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目。聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法

2017-07-05 17:01:43 711

原创 动态规划——openjudge7624山区建小学

题目: 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往。已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i < m。为了提高山区的文化素质,政府又决定从m个村中选择n个村建小学(设 0 < n < = m < 500 )。请根据给定的m、n以及所有相邻村庄的距离,选择在哪些村庄建小学,才使得所有村到最近小学的

2017-07-05 09:01:48 2826 3

原创 动态规划——最长上升子序列

题目:描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8

2017-07-04 19:10:21 690

原创 动态规划——洛谷1020_导弹拦截(1999年的)

题目测评网址:戳我打开 题目:题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数)

2017-07-04 16:26:15 519

原创 动态规划——如何分析一道动态规划的题

动态规划与其他的算法不一样,动态规划是没有一个固定的模板的,它只是一种思想,并不是一种特殊算法。 那么,动态规划既然没有一个固定的模板,那怎么来分析它呢?或者说,做出来了怎么写题解呢?这里给大家介绍一种分析动态规划的方法: 1:写出DP状态的表达。也就是f[XX]等于XX。 2:写出DP的转移方程。也就是f[XX] = min(f[XX],f[XX]) 3:写出状态的数

2017-07-04 14:24:21 2167

原创 动态规划——什么是动态规划?

先来看看《信息学奥赛一本通第5版》是怎么说的: 动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不像前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决

2017-07-04 10:21:39 714

原创 分治算法——快速排序

快速排序是所有排序里最受欢迎的排序算法,时间复杂度O(NlogN),如果测试数据是有序的话,时间复杂度会下降到线性,也就是O(N^2),算法的核心思想是:挖坑填数。算法代码一般采用递归的形式。 算法思想: 找到一个基准数,也叫哨兵,在我的代码中为temp,用这个基准数去比较其他的所有数字,如果是从小到大排序的话,就让基准数左边的数都小于它,右边的数都大于它,如果是从大到小的话,反之。然后再把它左

2017-06-30 15:50:44 552

原创 图论500题——HDU_P1213 How Many Tables

题目:戳我 这是一道并查集的基础应用题,也是图论500题(戳我)里的第一题,图论500题是个好东西,有兴趣搞图论的童鞋可以去做一做。 题目大意:给出一个图,求里面有多少个连通分支。 并查集可以干这事,先按照并查集的基本框架打一遍,也就是:int father[1001],n,m;int get_father(int u){ if(father[u]==u)return u;

2017-06-29 16:38:43 228

原创 数字(number)

题目可在下载频道下载:戳我 题目: Task 2. 数字(number) 空间限制:256MB 时间限制:1sDescription 给你n个0~9的数字,请你把它们排成一个不含前导0的n位数,满足这个数是233的倍数。求有多少种可行的方案。 (我们把n个数字从1~n标号,两个方案不同当且仅当标号序列不同)Input 第一行一个数n。 第二行n个空格隔开的数,为给你的数。保证

2017-06-29 16:08:46 482

原创 房间(room)

题目可以到下载频道上下载:题目本题题目:Task 1. 房间(room)    空间限制:256MB   时间限制:1s Description有n个房间以及m条双向通道。你需要找到有多少条从1号房间出发到n号房间路径,使得每个房间都恰好经过了一次。 Input第一行两个数n、m。接下来m行,每行两个数x、y,描述一条连接房间x和房间y的通道。保证每条通

2017-06-29 10:31:11 514

原创 图论算法——Kruskal算法

Kruskal 算法是针对最小生成树的一个算法,不优化的时间复杂度是O(e^2),用并查集优化的时间复杂度就是O(eloge)其中e为边数。 所以就可以看出,并查集对Kruskal的优化还是很大的。 我们先来看看Kruskal针对的到底是一个什么样的问题: •输入一个有权无向连通图G,在已有的边中删掉尽可能多的边得到一个新的图G’。使得G’依旧是连通图并且剩余的边权值之和最小,请输出G’中所有

2017-06-27 22:00:49 584

原创 图论算法——SPFA算法

SPFA算法是单源最短路径的最快算法,时间复杂度是O(KE)K一般为1或2,E是边数,就算他O(E)好了。 SPFA在很多教科书上都没有,主要是因为SPFA是中国人提出来的,外国人很少知道,所以就没有Dijkstra拿下算法那么热门,虽然不是很热门,但算法本身还是很好的。 SPFA是Bellman-ford的优化版,单源最短路径,可以检查出有没有负权环,最重要的是没有Dijkstra那么好卡。

2017-06-26 12:23:34 583

原创 6.6题解总结

题目:6.6题目, 密码:pfyk 第一题:

2017-06-13 20:26:24 247

原创 总分

哎,现在发现背包问题的伪装方法越来越多了,这题就是一道完全背包,别的不多说了,上代码:#include<cstdio>#include<cstdlib>#include<algorithm>int c[10001],w[10001],f[10001];int main(){ freopen("score.in","r",stdin); freopen("score.out","

2017-06-13 20:20:52 316

原创 健康的好斯坦奶牛

穿越栅栏这题是一道 DFS题,但觉得DFS代码太长,就写了投机取巧代码。 这个技巧就是,用位运算,呃呃呃,这么说吧,我现在有一个二进制的数,这个数有g位,第i位数字为1是,表示用这种饲料,0表示不用,这样一来,就只要枚举从0~1(<<)g位了,代码会短很多,时间复杂度也并不见得比DFS要慢。 上代码:#include<iostream>#include<cstdio>#include<cst

2017-06-08 21:14:51 428

原创 跳棋的挑战

呃呃,这题是一道经典的DFS题,就是个8皇后啊。 因为本人心虚,赶脚写的代码有点慢,就打了个表。 咳咳咳,说正题,这题说每行,每列,每斜边都至多有一个旗子,这不就是8皇后的标准题目吗,8皇后大家总会写吧。 恩,如果大家连把皇后都不会写的话,那就接着往下看。 先看一下8皇后的原题: 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问

2017-06-08 20:19:44 737

原创 易错点小结——queue

queue这个东西很有意思,总结几个易错的点。 易错点——queue中的入队出队:易错点1

2017-06-06 10:51:29 319

原创 易错点——queue中的入队出队

哎呀呀呀呀呀,queue没学好就是不行啊,每次都把队列想象成头进尾出,然后就尴尬了。 queue前期最大的用处就是BFS了,哎,每次BFS都去访问queue.back()怎么能对啊,最重要的还不是这个,是我每写一次就忘一次,这BFS还怎么写啊所以今天就吧这个错误记录到博客上,以免以后再犯。 这题我做了好久才发现这个错误,尴尬。 题目网址:微软大楼设计方案(戳我) 错误的代码:#include

2017-06-06 10:48:06 2678

原创 有依赖的背包问题——金明的预算方案

题目:金明的预算方案 这是动态规划中的背包问题中的有依赖的背包问题。 幸好题目中说道:每个主件可以有0个、1个或2个附件。附件不再有从属于自己的附件。否则这题就变成了一个树形DP了。 状态表达:f[i] = 当v == i时的最大价值。 状态转移方程:f[j] = std::max(f[j],f[j-num[i].w1]+num[i].c1);

2017-05-23 16:58:31 905

原创 5.21吴老师上课总结

PDF:5.21PDF 背包: 复习了:01背包,多重背包,完全背包 学习了:01背包的小变形,有依赖的背包,状态压缩的一些题。 博客: 01背包:01背包 01背包变形:01背包变形 多重背包:待更新。。。 完全背包:待更新。。。 有依赖的背包问题:有依赖的背包问题 状态压缩:。。。

2017-05-23 16:46:52 413

原创 01背包变形

题目: 给出n个物品,其重量分别是w[i],价值分别是c[i],在背包装满的情况下,求使用v大小的背包所能获得的最大价值。 输入:第一行,两个数n,v(1<=n,v<=1000) 下面n行,每行2个数,分别是w[i],c[i] 输出:一个数,表示最大价值。 ———————————————————————————————————————————————————— 这是01背包的变形 状态

2017-05-23 16:01:48 450

原创 01背包

题目: 给出n个物品,其重量分别是w[i],价值分别是c[i],求使用v大小的背包所能获得的最大价值。 输入:第一行,两个数n,v(1<=n,v<=1000) 下面n行,每行2个数,分别是w[i],c[i] 输出:一个数,表示最大价值。 ——————————————————————————————————————————————————————— 01背包是动态规划的

2017-05-23 15:54:23 364 1

原创 noi.openjudge_P8787数的划分

题目:数的划分(戳我) 推荐用记忆化搜索,代码比动态规划会短很多,省脑经。 记忆的表达:f[i][j] = 把i划分成j个的方法总数。 那么,当j == 0||i#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>int f[1001][1001];const i

2017-05-20 22:06:09 683

原创 noi.openjudge_P8462大盗阿福

题目:大盗阿福(戳我) 这题使用动态规划来解,做动态规划的题有个特点,就是做过的题一下就做出来,没做过的题就很难想出来,所以这里就直接分析这题: 状态表达:f[i] = 在前i家店中最多能盗到的钱数。 转移方程:f[i] = max(f[i-1],f[i-2]+val[i]) 状态数量:n 转移代价:O(1) 时间复杂度:O(n) 空间复杂度:O(n)或O(1) 上面的空间复杂度可以

2017-05-20 09:32:17 810

原创 5.16题解报告

分数:0 尝试过得题目:1 做出的题目:0 第一题,免费馅饼:第一题总结 第二题,I NEED A OFFER:第二题总结 第三题,搬寝室:第三题总结 考试总结: 这次考得不是很理想,如果按正常水平发挥应该可以拿到更好的分数,第一题本该做出来的,可是因为记忆化搜索打错了一个地方,老是WA,回家把代码重写了一遍,就AC了, 第二题其实很简单,但是因为没有学概率,不知道怎么算,所以没做,最

2017-05-19 18:34:16 282

原创 HDU_P1421搬寝室

题目:搬寝室(戳我) 这题是一道动态规划+贪心 贪心用来初始化,动态规划用来求解答案。 首先来看贪心:题目中说到,搬两件物品所需要的体力是abs(a-b)^2,那贪心策略就是选两个重量最相近的放在一起,所以我们要把输入的数据从小到大排序。 所以,很多人的思想就停留在了贪心这个层面,样例是过得了,可测的时候就会WA,这里给出一组反例: 5 1 1 5 10 1000 1000 很明显答

2017-05-19 13:57:25 275

原创 HDU_P1203 I NEED A OFFER

题目:I NEED A OFFER(戳我) 花了2个多小时,终于把这提做出来,对于我这种只用cout的人,坑还是很多的。。。 这题是只要学过概率,就可以把它变成一个01背包——学过动态规划的人都会做。 eee,这里有一个小技巧,就是如何求能申请到一所学校的概率,就是用1-一所学校都申请不到的最小概率。 eee,只说可能有点听不懂,举个栗子: 这是样例: 10 3 4 0.1 4 0.

2017-05-18 22:01:55 325

原创 HDU_P1176免费馅饼

题目:免费馅饼(戳我) 花了两三天的时间,终于把这提给做出来了。 所以今天就来写个总结,这题我使用记忆化搜索做的,我推荐大家多用记忆化搜索,因为用记忆化搜索省脑子,只要把当前的状态记录下来就好了,代码也并不比动态规划的多,时间复杂度只会多几个毫秒,还是很值的。 我就来讲讲我用记忆化搜索的思路,先按照DFS得写一个,相信大家都会,然后再在返回的时候记忆每个状态,状态是这样的:f[i][j]表示当

2017-05-17 22:00:04 309

原创 noi.openjudge_P7627(鸡蛋的硬度)

题目:鸡蛋的硬度(戳我) 此题高大上。。。google面试的一题就和这题差不多。。。 此题用dp来解。 先假设只有两个鸡蛋,那么,f[i]表示楼层最高有i层,且只有两个鸡蛋,测试这鸡蛋的硬度时,需要摔鸡蛋的最小次数. 这个问题很好解决,转移方程是:f[i] = 1+max(f[n-i],i-1);其中f[i-1]表示鸡蛋从第i楼砸下来如果没有烂,那么还要摔几次,i-1表示,如果摔下来烂了,那

2017-05-16 22:33:28 630

高一6.28测试题+测试数据

一套简单的搜索测试题,坑多,做完了会对搜索有很大的帮助。

2017-06-29

lemon测评软件

这是一个比cena等等等等更好用的软件,支持的编译器有GCC,G++,FPC,FBC,JDK,PYTHON等,编译器要自带,当然,+如果你不想自带编译器,也可以到这个网址上下载:http://download.csdn.net/detail/baidu_38496325/9880796

2017-06-26

编译器大全

这里有4个编译器,绝对正版,分别是:gcc,g++,fpc,python

2017-06-26

USACO全部题目翻译

USACO是一个英文网站,里面有很好的题目,但都是英文的,今天把这些题目翻译了一下,还不错呢,欢迎大家下载

2017-06-26

ubuntu下的lemon(一个测试软件)

这是一个比cena更好用的测评软件,而且还是为数不多的在ubuntu下运行的测评软件,欢迎各位下载

2017-06-13

5.21动态规划教材

这是我的一个上课教材,里面有些题还是很好的,上传一下。

2017-05-24

5.21上课教材

教材

2017-05-23

空空如也

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

TA关注的人

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