【算法】网络流初涉 一些定义 最大流Ford-Fulkerson增广路取一条路径P由s—>t 如果相对于P上的点连接的边方向与P相等 称作前向边P+ 如果相对于P上的点连接的边方向与P相反 称作后向边P- 满足所有P+ f[u][v]<=c[u][v] P- f[u][v]>0 (说明有流入) 则称为增广路步骤...
【题解】洛谷P3399 丝绸之路 我丑,话说在前头题目: https://www.luogu.org/problemnew/show/P3399一道挺简单的DP 思路不难想 但是蒟蒻总是写错初始化啥的思路定义f[i][j]为第i天到达第j个城市 以天来进行DP 每一天可以由以下两种方法到达休息一天走一天那么方程就可以得出 f[i][j]=min(f[i-1][j],f[i-1][j...
【计算几何】几何基础 前言这章早在2017年寒假就在培训的时候由来自清华的hta老师上过了 但是本蒟蒻那时候并不是懂的太多 所以这周ww老师又上了一遍 大概记录一下start点积大概就跟高中必修4的平面向量差不多(有上过的应该都会)a = (x1, y1) b = (x2, y2) a · b = x1x2 + y1y2 a · b = |a||b|cos< a, b>...
【题解】洛谷 P1525 关押罪犯 题目 https://www.luogu.org/problemnew/show/P1525思路把所有边sort一遍从大到小排列运用并查集思想敌人的敌人就是朋友从最大边开始查找连着的两个罪犯如果他们在一个监狱就输出并结束程序如果不在就把他们互为敌人存下来如果他们已经有一个敌人了那就把他们敌人和自己合并(因为总共只有两个监狱)最后判0代码#inc...
【算法】不知道有啥用的拓扑排序 定义一共有好多件事情 事情A要再事情B(或者更多)事情做完才能做 然后排序! (有向无环图)思路一个网上找的图便于理解(下列过程以此图为例) 记录所有点的入度和出度找到入度为0的点加入栈中 为a栈顶元素输出删除并把与栈顶元素相连的点的入度减一删除过程中如果有入度为零的点也加入栈中直到输出的数等于n完成排序PS:如果输出的数小于n 说明此图有环例题...
【算法】欧拉筛找素数 思路从2开始找 找到一个加入素数表中 在之后的每一个数与前面找到素数表中的素数相乘的积也不是质数(任意一个合数是一个质数与一个数的积*)例题洛谷P3383:线性筛素数(可用埃筛做) https://www.luogu.org/problemnew/show/P3383代码:#include<iostream>using namespace st...
【算法】最小生成树的解法 最小生成树定义关于N个点用其中的N-1条边连起来的权值最小的图算法prim类似Dijkstra和贪心的思路 1. 取一个点为起点遍历所有与其连接的点 2. 把最小权值的点加入最小生成树 3. 修改于其相连的点权值 4. 重复1,2,3直到N次循环 例题: 洛谷P3366:最小生成树模板 https://www.luogu.org/prob...
【算法】无趣的并查集 并查集定义把许多有关系的人合并成一个集合 然后询问其中的人是否有关系的时候用并查集思路用树存图 每一次输入判断他们的祖先是否同一个 不同的话就把两个数的祖先改成同一个 最后的询问只要O(1)例子和代码一个入门的并查集题目 洛谷P1551:https://www.luogu.org/problemnew/show/P1551 代...
【算法】前向星存图 本文转自acdreamers的博客 原文网址: https://blog.csdn.net/ACdreamers/article/details/16902023我们首先来看一下什么是前向星.前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序,并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星...
【板子】最短路径算法 最短路径算法FloyedPS:能求带负边图,但不能带负权回路 可以求出任意两点之间的最短路径 主代码:for(k=1;k<=n;k++)for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(i!=j&&j!=k&&i!=k) dis[i][j]=min(dis[i][k]+dis[k...
【板子】欧拉(回)路与哈密尔顿环 概念“哈密尔顿回路问题”是访问除原出发结点以外的每个结点一次且仅一次,而“欧拉回路问题”是访问每条边一次且仅一次欧拉回路与欧拉路PS:已经判断此图有欧拉路或欧拉回路#include<iostream>using namespace std;int g[101][101];int du[101];int lu[101];int n,e,l,start,x...
【题解】洛谷P3370字符串哈希板子 #include<iostream> #include<cstdio> #include<cstring> #define mo 21313 int n,m,i,j,k,ans; struct SC { int len; char s[1505]; } f[mo],t...
【算法】难想到的母函数解整数分解 母函数法解整数划分上课的时候听得挺MB然后自己看了半天dalao们的思路才理解(此次%%%一波大佬们orz)关键两个数相乘指数相加G(x)=(1+x+x^2+x^3+x^4+……)(1+x^2+x^4+x^6)(1+x^3+x^6+x^9+……)(1+x^4+x^8+x^12+……)……第一个式子代表的是1取一个,两个,三个,这里的几个代表式子中的指数而...
【板子】背包九讲 背包九讲板子 例题参考《信息学奥赛一本通》初始化分两种情况 1、如果背包要求正好装满则初始化 f[0] = 0, f[1~v] = -INF; 2、如果不需要正好装满 f[0~v] = 0; 01背包有N件物品和一个容量为V的背包。第i件物品的费用(即体积,下同)是w[i],价值是c[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容...
【板子】高精四则运算 高精度加法 #include<iostream> #include<cstring> #include<cstdio> using namespace std; char a[200],b[200]; int a1[200],b1[200],c1[200]; int l1,l2,l3; int...
【题解】洛谷P1002过河卒 首先,一道入门DP然而对于蒟蒻的我已经难到爆了好吗第一点:动态转移方程用DP的关键!这题我们可以发现每一步的方案数由上面的那步加上左边的那步得到所以自然而然的方程就出来了:f[i][k]=f[i-1][k]+f[i][k-1]第二点:DP边界在所有的方案数计算内我们可以快速准确地发现:f[0][0]=1即走到起点的方案数为一种注意事项...
【题解】洛谷P2426删数 链接https://www.luogu.org/problemnew/show/P2426念念碎第一次接触到区间DP(瑟瑟发抖) 所以象征性地看了一下题解 这好像是一道比较基础的区间DP吧 但是蒟蒻我还是不会啊思路因为是连续删除一段数字所以明显是区间DP我们不妨设f[i][j]为从i开始删除j个数字所以我们可以得到两种方案为:一起删去或者从中间某个数...
【题解】洛谷P1006传纸条 链接https://www.luogu.org/problemnew/show/P1006日常牢骚过年前最后一节课上完了坐标DP 也接触了一点区间DP(noi1995石子合并)下次做做看看吧 老师布置了好多道DP这让我这个刚刚学的蒟蒻可咋办呀 想die的心正题不扯淡了赶紧扯回来 首先看到这题我想到了另外一题很相似的叫啥我忘了…… 反正也是双向DP(姑...
【算法】数组模拟链表 数组模拟链表前言对于一个踏踏实实用数组的蒟蒻来说这真的是太难了好吗?步骤首先我们需要设一个数组date用来存原始数值和一个数组right充当指针 如图所示 这里的right指向date的下一位的date下标(注意是下标而不是数值)我们现在尝试模拟一下在排序下插入一个数值6 明显需要插在date{3}和date{4}之间 直接把date{10}赋值成6