各种算法题汇总
文章平均质量分 77
主要聚集本蒟蒻接触的各种典型算法(包括部分数论题)和对应典例
(c++和pascal都会有)
JimCell
我不过一只细胞,众大神轻喷……
展开
-
洛谷P1156
国庆最后一天校集训队来了场模拟赛,发现本蒟蒻还是太弱了……(NOIP2007初赛真题57.5,上机模拟赛倒数)于是决定还是要多刷点题……然后做了道DP==========分========割=========线==========点击看题:洛谷P1156一道怎么看怎么奇怪的DP,好像背包的说……好吧,整道题决策其实就2个,丢下来的东西要么吃,要么堆用f[i]表示时间为i时的原创 2016-10-09 13:51:29 · 402 阅读 · 0 评论 -
洛谷P1941 Flappy Bird
坑到爆炸……想转移方程+打代码一个中午不到的事,调细节调了将近两个中午…………………………点击看题这道题看上去真的就是P1156的改版啊喂……首先认真看完这道题肯定会想到下面的这个东西:f[i][j]=min(f[i][j],min(f[i][j-data[i-1].up],f[i-1][j-data[i-1].up])+1) j>data[i-1].up =原创 2016-10-13 23:02:51 · 294 阅读 · 0 评论 -
ZOJ3329
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3754题目大意:三个骰子,分别有k1,k2,k3个面,如果三个骰子分别扔到a,b,c时分数置零,否则将分数加上a+b+c,当总分超过n时游戏停止,问游戏进行次数期望(初始分数为0)难点:通过假设线性关系消去f[0]以外的位题目做法:首先明确f[i]=su原创 2016-03-07 13:49:49 · 479 阅读 · 0 评论 -
HDU4418——高斯消元+DP
HDU4418题目大意:一个人站在编号为0..n-1的数轴上,以p[i]的概率走i步(i∈[1,m],且∑p[i]=1)给定n,m,起点s,终点e,方向d,求出这人走到终点的步数期望。题目难点:列方程求解;不要用pascal题目思路:首先按一般思路先列出f数组表示期望(废话……)显然f[e]=0,f[i]=∑((f[x+j]+j)*p[j])然后把第二条式子变形,则得到:原创 2016-03-11 14:00:49 · 1404 阅读 · 0 评论 -
洛谷P1313
原题在此一道略微奇葩的杨辉三角变形题首先估计看到以后都能想到是杨辉三角吧(不知杨辉三角为何物的同学戳这儿)然后果断求出杨辉三角之后把系数a和b乘个方就可以了注意:1.要开long long2.要开long long3.要开long long(重要的事情说三遍,博主SB杨辉三角的数组和快速幂没开long long WA了2次)#include #incl原创 2016-04-20 13:50:19 · 367 阅读 · 0 评论 -
欧拉函数
最近决定做一发数论题提高智商数学分析能力,然后看到了一个要用之前看到的陈景润在《初等数论》里提及的欧拉函数,于是随手弄了一发,然而《初等数论》似乎并没提及一个重要的通式…………欧拉函数只对正整数有意义,对于phi(n),表示的是小于n的并且与n互质的正整数个数原创 2016-05-18 16:15:41 · 712 阅读 · 0 评论 -
论二分法的利处
前几天上数学课的时候发生了一件有趣的事情。我们的数学老师在上二分法的课的时候猛批二分法,顺带着连编程也遭殃。结果,1/4个班的人都用一个奇怪的眼神看着我……我只想说,老师,请给我手算一个一千位大整数开方(不用二分法),好吧,我也没法手算。但这恰恰说明了二分法思想和编程的重要性。编程基础的事情出门左拐寻各种书籍吧。今天我主要讲二分法。一.概念二分法,顾名思义就是把一个区间分开来找答案,而数学原创 2015-12-28 13:13:14 · 938 阅读 · 1 评论 -
扩展欧几里得算法
其实我最近在想要不要把写堆排序的计划取消掉……毕竟最近在忙GDKOI,GDKOI出堆排的可能性又实在不大…………好吧,扯远了。N周后DWJED大神要将扩展欧几里得算法,说实话,其实我之前也学过这个了,不过由于DWJED大神要讲我还是决定复习一下这个,毕竟NOIP之前复习(详见我NOIP2015的总结)的时候发现快把这事忘光了……其实扩展欧几里得算法(下简称扩欧)是在辗转相除法求最原创 2015-12-28 13:13:32 · 418 阅读 · 0 评论 -
矩阵乘法
前一阵子FYH和XYY连讲了两周的矩阵乘法,不过单学一个矩乘顶多是在学模拟对吧,所以我们要知道这个算法怎么应用,这里的话主要讲怎样优化递推。首先,我们要知道怎样操作矩乘,公式如下:C[i,j]=∑a[i,k]*b[k,j]前提是a的列数和b的行数一致。原创 2015-12-28 13:13:35 · 899 阅读 · 0 评论 -
算法复习——LazyTag
《铁路大亨2》貌似已经是一个很古老的游戏了……但是它的古老没有妨碍我们对它的研究。今天我来讲讲怎样用线段树来让我们了解收益情况。估计在玩这个游戏时大家会有个问题,那就是即使我们设计了一条很好的铁路线,但是我们没法知道我们规划的火车路线能带来的收益是多少,毕竟有货物价格浮动和火车维护费不定等因素存在。线段树+一定的实践可以比较好地解决这个问题。现在先来假设我们有这么一条铁路,这条原创 2015-12-28 13:26:08 · 998 阅读 · 0 评论 -
树链剖分
前些天提到了GDKOI的事情,严sir说这周六之前要自学一下树链剖分,然后我就去看了一下,这一下就是一周……(某LJ好像看了一周多才搞定)然后ZZX大神讲课的时候我就意识到我的实现方法在细节上严重受到hzwer大神污染……反正大体上是一样的。感谢hzwer大神提供了代码和详细解答:http://hzwer.com/2543.html其实树链剖分的意思就是把一棵树里每条边的情况放到线原创 2015-12-28 13:28:11 · 279 阅读 · 0 评论 -
算法复习——SPFA
市选快到了,尽管我能预测到自己有99.9%的几率要挂(flag),我还是决定好好复习一下,于是找了一道SPFA开切。SPFA就是一个求最短路的算法,其中心思想就是用一个队列来存要扩展的节点,每次从队首元素进行扩展,如果有一点的最短路径值发生变化,那么就把这个点丢进队尾。由于不能让一些点进队次数太多,于是我们再加一个数组进行判重。当然,如果要判图里是否有负环的话,那么可以对每个点的进队次数原创 2016-03-23 14:04:25 · 371 阅读 · 0 评论 -
算法复习——堆排
Long long ago,我曾经想过要写堆排(话说已经是刚开始写二分那个博客的时候了),后来好久没写,现在总算想到要写了……好了,进入正题。我以前曾经自己打过一个课件,现在打算放在CSDN下载那里,就当是放基础知识了,现在写写一道题的题解……PPT网址如下(下载者先交1积分……):http://download.csdn.net/detail/u014120397/9472391原创 2016-03-25 13:57:37 · 264 阅读 · 0 评论 -
算法复习——背包DP问题
额,看到这题目的童鞋不要马上骂博主SB,我要说的其实不是0/1背包问题,而是树型背包。不过其实可以参考一下0/1背包来看这个文章,因为其实很像的。好吧,讲DP最好的方式还是结合题目一起讲——洛谷1273点击有屠龙宝刀题目看这里:http://dev.luogu.org:3308/problem/show?pid=1273首先我们很自然地想到开一个f数组f[i][j]代表了在i节点为原创 2016-04-15 13:53:14 · 346 阅读 · 0 评论 -
算法复习——归并排序
其实这是那篇《二分法》的延伸版本……归并排序跟堆排序一样可以稳定把时间压在O(log n),因为它始终会把区间二分处理,到了不能再二分时便开始合并区间。废话少说,上图更好理解:接下来看一道题:codevs3286这一道题就是典型的逆序对。要使两列火柴距离最小,明显就要让在两序列中相对大小相同的火柴在同一位置于是我们对两列火柴进行排序,排序后用一个pos[a[i].p]=b[i]原创 2016-04-19 14:00:02 · 276 阅读 · 0 评论 -
网络流SAP
折腾了一两个小时(包括昨天校本那1个多小时)总算搞定了神(gui)奇(chu)的SAP算法。本来呢想先用Dinic,结果YoungTree(YoungTree期中考RANK21Orz)曰SAP很快,于是就跑去用SAP了先定义一下一些东西:1.距离标号指假设图上每一条边边权为1时,某一点到终点的距离,当然level[t]=0(t表示终点)2.GAP断层gap[i]表示距离标号原创 2016-05-12 13:52:04 · 539 阅读 · 0 评论 -
BZOJ1483——链表
点击看题这题其实可以用链表随意乱搞……将每个颜色做成一个链表(然而可以不用指针),链表里面存这些颜色的起始点、终止点、前继点、个数等信息然后变颜色时就用启发式合并,将少的颜色接在多的颜色后面就可以了……吗?并不是,比如说我把颜色1染成颜色2,但是颜色2的个数小于颜色1的个数的话,那么颜色2接在颜色1后面。但是如果接下来找颜色2的链表时,它就不见了……因此我们要加开一个bel原创 2016-09-17 15:51:42 · 324 阅读 · 0 评论 -
POJ2406——KMP
玄学的KMP算法……点击看题题意是给一个字符串,求最小循环节的循环次数按kmp的一般思路,我们先来求一个p数组(一般叫next数组),p[i]表示模式串第i位如果和文本串当中某一位不匹配、则需退回p[i]位重新和这一位匹配。明显地,对于模式串来讲,第1位到第p[n]位和第n-p[n]位到第n位是匹配的。如果n%(n-p[n])=0,那么重复连续子串存在且长度位n-p[n](我会说我原创 2016-09-24 14:21:35 · 341 阅读 · 0 评论