自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 (数学)P1037 产生数

一、算法分析开始时写了一个搜索,果断超时,然后意识到答案就是每一位的转移可能种类的乘积。然后果断祭出离散数学,一发传递闭包加高精AC。二、代码及注释#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>using namespace std;stri...

2020-01-31 11:42:12 228

原创 (对顶堆)SP15376 RMID - Running Median

一、算法分析题意很显然,要求在线动态维护中位数。这时要用到对顶堆思路,即既然我们是每次取中位数,那就要涉及从中间取数,这样我们设置一个大顶堆,一个小顶堆,把两个堆的堆顶“挨”在一起,维持两个堆的大小相等或最多相差1(因为可能总数是奇数个)这样中间的数就一定是从两个堆的堆顶产生了。难点在于维护的过程。其实个人对这个对顶堆的维护,个人理解是这样的,想象自己有一条绳子,绳子从中间分开,左边是大顶堆,...

2020-01-26 23:49:38 207

原创 (贪心)洛谷P2887 [USACO07NOV]防晒霜Sunscreen

一、算法分析贪心策略是将牛按照minspf的降序排,然后在尽可能满足当前牛的情况下,优先取spf值大的防晒霜。这样选择的原因是本题的特点(也是一些其它贪心类问题的特点),即如果我放弃了当前的牛,后面的情况也只能一样或更差。题目要求找出可满足的最多牛,如果我们放弃了当前牛,可能导致后面有一个牛用了本来打算给当前牛的防晒霜,也可能没有,但是无论如何,答案不会因为我们的刻意放弃而增加。所以基本的贪心...

2020-01-26 11:03:15 302

原创 (扫描法)UVA11054 Gergovia的酒交易 均分纸牌

一、算法分析首先观察这道题,题目中表明,只有相邻的村庄才可以实现买卖,那么可以想象一下,将这一行的村庄看做是三个部分,处理区、交易集散地、待处理区。然后从左向右扫。比如对于:5 -4 1 -3 1这个序列,我们从左向右开始扫描。首先将5看做处理区,将-4看做交易集散地,进行第一次交易,维护处理区的供需平衡,就要给交易集散地加5,变为了-1这样劳动力耗费了5,接下来继续扫描,将交易集散地向右...

2020-01-25 22:27:08 171

原创 (迭代加深搜索)UVA529 Addition Chains(0x24节)

一、算法分析首先本题要求输出序列,我们发现,序列的第一个元素一定为1且最后一个元素一定为n,也就是说,如果用bfs的话,宽度是确定的(从1到n)。但是考虑n的范围过大,用bfs会爆空间,那么就想到使用dfs。要用dfs就要考虑解答树的深度,本题如果用dfs,解答树深度就是序列的长度。由于搜索过程中的解答树节点是随深度指数级增长的,本题解答树深度的最大情况初步估算与n接近(初步估算一下即可,这里不...

2020-01-23 15:40:01 132

原创 (枚举)洛谷P1556幸福的路

一、算法分析暴力和枚举几乎是一个同义词,看到数据范围,n最大只有10,这就几乎等于直接告诉你要进行枚举了。紫书上有一道例题UVA140 带宽 Bandwidth提供了生成排列的思路。枚举出所有到达牛的顺序,这样对于每次移动,我们只需要关心当前牛和下一头牛之间的关系(如果不剪枝的话)再在必要的地方进行剪枝(剪枝显然是要剪的)。剪枝方案如下:1、要求所有路径都必须是(正东南西北),我们可...

2020-01-22 17:03:13 220

原创 (细节处理,负数下标变正数下标,并查集)洛谷P2078 朋友

一、算法分析算法很直观,直接用并查集判朋友关系,预处理时先让小明和小红成为朋友。最后找和小明(或小红)是朋友的人,统计其中男性和女性的个数,输出较小的那个就行。本题的一个关键在于细节处理,女性下标是负值。这时可以观察题目给出的数据范围,数据范围在10000,不大这样的话,就可以把所有女性的下标加上20001,注意是20001不是20000,要再多加一个1.二、代码及注释#include&lt...

2020-01-22 10:11:04 337

原创 (离散化)洛谷P1496火烧赤壁

一、洛谷P1496火烧赤壁前言:首先这道题,可以用模拟过,模拟方法需要一些技巧,但是本文讲的是离散化方法,就忽略模拟法了。算法分析1:首先,如果忽略本题的船的位置范围(本题船位置范围达到了10^9而且还包含负数),假设范围比较小且不包含正数,那么这道题的解法就是相当直观的,只需要用一个标记数组(bool数组),数组初始化时元素全部为false,然后主函数中将输入所涉及的范围全部打成true,最...

2020-01-21 20:07:23 1575 1

原创 (算法分析,无代码)洛谷P3063 [USACO12DEC]牛奶的路由Milk Routing

一、算法分析乍一看以为是网络流,差点弃题,因为网络流还没看。。。但是显然这不是一道网络流,题目描述很明显,单源双向边最短路径问题,这道题关键在于边权的处理方面,所以先手算一下样例。开始的时候自己手算样例算半天一直不对,后来才看到下面还有一个说明提示(所以以后一定要多看说明提示里面的内容)说明提示:FJ wants to send 15 units of milk through his pi...

2020-01-20 20:31:15 283

原创 UVA816 Abbott的复仇 Abbott's Revenge(完善紫书代码)

一、写在前面紫书上的代码没有给全,缺省了输入函数和一些定义,自己补全了一下,同时加了一些注释。反复修改,交上去终于对了。Tip1:输出格式很坑Tip2:读入很麻烦,所以最好写完读入函数之后,试验一下,再写后面的。免得最后如果出错了很难找错。自己写完读入函数之后,试验过程中就改出了不少错误。二、代码及注释#include<iostream>#include<cstrin...

2020-01-16 23:10:40 251 5

原创 (flood fill优化BFS)(无代码)洛谷P1649 [USACO07OCT]障碍路线Obstacle Course

一、算法分析求有障碍情况下,A到B的最小转弯数,显然如果是最短路,那就当然是一道模板题了,但是本题要求是求最小的转弯次数,这就要用到flood fill的思想了以样例来说. x A. . .B x .直接观察得出,最后的路径显然是从A开始,向下走一格,再走到最左边,再向下走一格,总转弯次数是2.当用flood fill算法的时候,对于第一次拓展,就可以向下直接走到底(也就...

2020-01-16 09:41:45 234

原创 洛谷P1588 丢失的牛

一、算法分析典型的bfs问题,结果自己做的时候有些糊,犯了很多低级错误(在代码中有注释),另外代码虽长,但是写到后面那些行基本就是直接复制前面行的代码。。。二、代码及注释#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<ve...

2020-01-16 01:21:55 332

原创 (floyd)洛谷P2888 [USACO07NOV]牛栏Cow Hurdles

一、算法分析题目的意思显然就是要用Floyd来解,直接套上模板。最开始还理解错了题意,以为就是一个纯模板题,后来发现没有那么简单。注意区分合理化条件和最优化条件。二、代码及注释#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include&lt...

2020-01-15 22:22:21 161

原创 (细节处理)P3093 [USACO13DEC]牛奶调度Milk Scheduling

一、算法分析本题是一道比较简单的贪心题目,想法也很直观,先按照g由大到小排,如果g相等再按d由小到大排即可。但是对于题目中的时间的细节处理却困扰了自己不少。仔细想想还是没有领会题意所致,巧的是,自己之前的错误代码,竟然恰好能过样例(说明样例很水),于是自己就一直没有认识到自己程序的问题。所以反思一下,今后还是应该在样例比较水的情况下,自己手算几个样例出来进行对比。本题细节处理的地方就在于挤奶的...

2020-01-15 20:58:03 322

原创 洛谷P2665 [USACO08FEB]连线游戏Game of Lines

一、算法分析本题上来先想到的就是爆搜一下,结果tle两个点。后仔细看题,原来只要求出所有斜率的可能,每种斜率各一条直线,就可以得到答案。注意对斜率的计算一定要对分母为0的情况进行特判。二、暴搜代码(tle两个点)#include<iostream>#include<cstdio>#include<cstring>#include<vector&...

2020-01-15 20:27:25 127

原创 (Floyd算法的妙用)洛谷P2419 [USACO08JAN]牛大赛Cow Contest

一、算法分析floyd算法可以将两个点之间的“到达”关系进行拓展。本题可以将两个奶牛间的确定的比较关系视作一种“到达”关系。然后再进行拓展。当一个点可以“到达”所有其它点的时候,就说明这个奶牛是与其它奶牛可比的,也就是说其是可以确定名次的。二、代码与注释#include<iostream>#include<cstdio>#include<cstring&gt...

2020-01-15 18:31:18 151

原创 洛谷P1461 海明码 Hamming Codes(P9)

一、算法分析题目的关键在于,对于所找出的编码,任两两编码之间都至少有 d 个单位的 “Hamming距离”。解决方案即从起始数0开始,进行编码生成(实则就是从0开始枚举十进制数1,2,3,4…并转换为二进制数)。然后将生成的编码和前面的编码一一比较,只要保证当前生成编码和前面任一编码的hamming距离都大于等于d,则最后所有的编码都是满足条件的。这里求算hamming距离的方法,可以联系树状数...

2020-01-15 17:32:18 212

原创 (区间相关问题)[USACO]修理牛棚 Barn Repair

一、算法分析首先选择一个恰覆盖第一头牛到最后一头牛的木板(此时要排序,因为题给的数据不一定是有序的)。然后考虑截取区间的问题,题目要求木板最大数目为s,换言之,就是要截s-1次。(注意这里截一次等于两刀,具体看图)由贪心原则,算法还是很直观的,显然,在规定木板个数的基础上,我们一定会优先截掉比较大的“连续空位”,比如第一次和第二次的,而对于第三头和第四头之间的那个空位,由于我们的截取次数不够...

2020-01-15 09:42:04 223

空空如也

空空如也

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

TA关注的人

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