Processing math: 100%

06 2018 档案

摘要:参考博文:区间dp小结(附经典例题) 首先,什么是区间dp?它是干什么的? 以上。 模板如下: 注意区间的枚举起点。 例题1:51Nod1021 石子合并 题意: N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算 阅读全文
posted @ 2018-06-20 23:49 romaLzhih 阅读(595) 评论(0) 推荐(0) 编辑
摘要:文章参考:数位dp之总结 首先,什么是数位dp?它是干什么的? 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。 举个栗子: 加入我们要枚举所有上界不超过231的数,那么我们一般的做法就是: 这里的le和ri分别是0和231。 方法可以是可以,但是有时候枚举量 阅读全文
posted @ 2018-06-20 23:20 romaLzhih 阅读(180) 评论(0) 推荐(0) 编辑
摘要:设n个重量为(W1,W2,…Wn)的物品和一个载重为m的背包,每个物品只能选择放或不放,将物品放进背包中的利润是Pi,问背包中物品的利润和的最大值。设f[i][j]表示装前i件物品重量为j的时候的最大利润值转移方程:f[i][j]=max(f[i-1][j],f[i]... 阅读全文
posted @ 2018-06-18 23:20 romaLzhih 阅读(96) 评论(0) 推荐(0) 编辑
摘要:Uva 208: 题意: 输入n个结点的无向图及某个节点k,字典序升序输出n到k的所有道路,不可重复经过结点题解: dfs裸搜会T,所以需要每次搜索的时候都判断一下搜索的这个节点与目的节点能否联通,这里用并查集实现这个功能,若两个结点在同一集合中就表示为联通代码如下:... 阅读全文
posted @ 2018-06-16 15:09 romaLzhih 阅读(140) 评论(0) 推荐(0) 编辑
摘要:用途:在O(n)时间内,求出以每一个点为中心的回文串长度。 首先,有一个非常巧妙的转化。由于回文串长度有可能为奇数也有可能为偶数,说明回文中心不一定在一个字符上。所以要将字符串做如下处理:在每两个字母之间插入一个特殊字符,通常用“#”,这样所有的回文串就都变成了以一... 阅读全文
posted @ 2018-06-14 19:52 romaLzhih 阅读(133) 评论(0) 推荐(0) 编辑
摘要:首先,明白Ex-KMP是干什么的: 给定两个字符串母串S和子串T(长度分别为n和m),下标从0开始,定义extend[i]等于S[i]…S[n-1]与T的最长公共前缀的长度,求出所有的extend[i]。简单来说,就是求母串的每个后缀与子串的最长公共前缀长度,存在e... 阅读全文
posted @ 2018-06-13 10:30 romaLzhih 阅读(213) 评论(0) 推荐(0) 编辑
摘要:A*是bfs的优化,IDA*是dfs的优化 A*算法: 为启发式算法中很重要的一种,被广泛应用在最优路径求解和一些策略设计的问题中。而A*算法最为核心的部分,就在于它的一个估值函数的设计上: f(n)=g(n)+h(n) 其中f(n)是每个可能试探点的估值,... 阅读全文
posted @ 2018-06-13 00:06 romaLzhih 阅读(345) 评论(0) 推荐(0) 编辑
摘要:N皇后问题自不必多说,这道题的先行条件是在放置的时候已经指定了一个棋子的位置。输入第一行为N,第二行为指定棋子的坐标(x,y);输出方案总数以及按字典序升序的各种方案。思路: 首先是回溯,其次对待指定棋子有三种方法: 枚举所有情况,最后判断 在枚举到那一行的时... 阅读全文
posted @ 2018-06-12 12:51 romaLzhih 阅读(143) 评论(0) 推荐(0) 编辑
摘要:题目: 我们定义n位自幂数为: 如果x是n位数,x的各位的n次方的也为x,那么x为n位自幂数 求n位自幂数有哪些,0 0,排序后输出 时限3000ms。解法1:打表 首先,如果拿到一个数列,可以先试试这个网站:OEIS,输入数列串,就会返回通项公式同时给出表,可以以后... 阅读全文
posted @ 2018-06-12 10:49 romaLzhih 阅读(165) 评论(0) 推荐(0) 编辑
摘要:首先要明白AC自动机是干什么的: AC自动机其实就是一种多模匹配算法,那么你可能会问什么叫做多模匹配算法。下面是我对多模匹配的理解,与多模与之对于的是单模,单模就是给你一个单词,然后给你一个字符串,问你这个单词是否在这个字符串中出现过(匹配),这个问题可以用kmp算... 阅读全文
posted @ 2018-06-12 00:51 romaLzhih 阅读(165) 评论(0) 推荐(0) 编辑
摘要:题目链接:N - 方程的解 给定一个四元二次方程: Ax12+Bx22+Cx32+Dx42=0 试求1000x1,x2,x3,x41000非零整数解的个数。 10000A,B,C,D10000 输出解的个数。 解法: 首先这道题直接用网上HDU1496的板子过不去,原 阅读全文
posted @ 2018-06-12 00:32 romaLzhih 阅读(118) 评论(0) 推荐(0) 编辑
摘要:算法讲解: KMP算法最浅显易懂 模板来源: 从头到尾彻底理解KMP 首先:KMP的模板为: 例题:2018 UESTC Training for Search Algorithm & String——L主楼 题意:求字符串中的最短循环节,并输出该循环节 KMP最小循环节、循环周期: 定理:假设S的 阅读全文
posted @ 2018-06-11 12:40 romaLzhih 阅读(166) 评论(0) 推荐(0) 编辑
摘要:引用: Palindromic Tree——回文树【处理一类回文串问题的强力工具】 回文树练习题集首先,回文树有何功能? 假设我们有一个串S,S下标从0开始,则回文树能做到如下几点:1.求串S前缀0~i内本质不同回文串的个数(两个串长度不同或者长度相同且至少有一个字符... 阅读全文
posted @ 2018-06-10 20:51 romaLzhih 阅读(142) 评论(0) 推荐(0) 编辑
摘要:字符串模板,在模数意义下的,比较好用 阅读全文
posted @ 2018-06-10 19:16 romaLzhih 阅读(204) 评论(0) 推荐(0) 编辑
摘要:转载自:远航休息栈Hash是什么意思呢?某度翻译告诉我们:hash 英[hæʃ] 美[hæʃ] n. 剁碎的食物; #号; 蔬菜肉丁; vt. 把…弄乱; 切碎; 反复推敲; 搞糟;我觉得Hash是引申出 把…弄乱 的意思。今天就来谈谈Hash的一种——字符串hash... 阅读全文
posted @ 2018-06-10 11:55 romaLzhih 阅读(211) 评论(0) 推荐(0) 编辑
摘要:题意:给出两个不同方案,每个方案使得所有的城堡被连通(形成连通图),同时使边权之和尽量小,问第一个方案与第二个方案的大小关系。解题思路: 因为m个桥能使n个城堡联通,而两个大爷的方案中至少存在一个桥不相同,那么我们判断这是一个求次小生成树的方法。 求次小生成树模板: ... 阅读全文
posted @ 2018-06-08 13:01 romaLzhih 阅读(206) 评论(0) 推荐(0) 编辑
摘要:题意:问能否构造一个矩阵,使得矩阵中的每个数字范围是1-20并且满足矩阵每行之和与矩阵每列之和与所给数组相等。 思路:尽管矩阵是20*20 ,但是如果爆搜复杂度依旧爆炸,我们考虑使用网络流解决这个问题,下面重点讲解怎么构图。至于怎么写可以参考紫书,与网上的模板。 建图:先来考虑本题的限制是什么,首先 阅读全文
posted @ 2018-06-08 12:59 romaLzhih 阅读(1318) 评论(0) 推荐(0) 编辑
摘要:板子: 题意:N个城堡,M个桥,每个桥的权值都不一样,题目要求能使城堡彼此联通的所有桥集合里面权值最小的那种,由此可以判断这是一道求最小生成树的题。 POJ3723 题意:有 N 个男人 M 个女人,给出若干男女之间的 1~9999 之间的亲密度关系,征募某个人的费用是 10000 -(已经征募到的 阅读全文
posted @ 2018-06-08 12:58 romaLzhih 阅读(130) 评论(0) 推荐(0) 编辑
摘要:题意: 给定数字n,m,(1≤n,m≤500000) 将n变为n*2的花费为2,将n变为n-3的花费为3,要求过程当中所有数字都在[1,500000]区间内。 求将n变为m的最少花费。 思路: 将每个数字视为图论中的点,数字之间的转换视为图论中的边。有向图! 500000个点,连边(i,i*2)权值 阅读全文
posted @ 2018-06-08 12:58 romaLzhih 阅读(144) 评论(0) 推荐(0) 编辑
摘要:求联通快模板 Uva 油田#include#include#includeusing namespace std;const int maxn = 1000 + 5;char g[maxn][maxn];int m, n, id[maxn][maxn];void df... 阅读全文
posted @ 2018-06-08 12:58 romaLzhih 阅读(96) 评论(0) 推荐(0) 编辑
摘要:题意: 有n个点,m条边,问能不能找到一条路把所有的边都经过一次。求解思路: 因为是要遍历所有的边,所以这个问题就可以规约到求一个图的欧拉路径上。 但是这道题的数据是比较严格的,我们不能写递归,因此就要用非递归写欧拉回路,参考博客如下: https://blog.cs... 阅读全文
posted @ 2018-06-08 12:57 romaLzhih 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题意: 给出一个无向图,问从1到n是否存在一条长度为L的路径。 n,m<=50,1<=路径长度<=10000,L<=10^18 思路: 改变一下思路,我们发现,假设从起点1走到终点N有一条路径的长度为a,假设它再往一条与终点相连的长为b的路径反复走无数次后使得路径长度到达了T,那么一定有(T-a)% 阅读全文
posted @ 2018-06-08 12:57 romaLzhih 阅读(276) 评论(1) 推荐(0) 编辑
摘要:一般地,差分约束系统分两类:求最大差和最小差 原因如下: 对于线性规划问题,上述不等式的特点就是式子的左右两边都只有 1 个变量( B 为常数)。这与图上的最短路是类似的。记从起点 s 出发,到各个定点的 v 的最短距离为 d(v),因此对于每条权值为 w 的边 e =(v,u),都有 d(v)+ 阅读全文
posted @ 2018-06-08 12:56 romaLzhih 阅读(142) 评论(0) 推荐(0) 编辑
摘要:题意: 给你N个点的一幅图,初始图中有M条边,每次操作可以使得一个点连接的所有点变成一个团,问你最少多少次操作可以使得整个图变成一个团.解法: 因为N很小 所以我们可以二进制压缩来表示一个点与其他点之间的关系。二进制的第i位代表标号位i+1的人。例如标号为1的人认识标... 阅读全文
posted @ 2018-06-08 12:56 romaLzhih 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目: http://poj.org/problem?id=1776题意: 给出一个n*n的矩阵,若第i个任务做完之后可以做第j个任务,则矩阵的第i行第j列为1,否则为0。机器完成一项任务之后会自动转到下一个任务,否则机器会自动停止。 求出最少的启动次数,输出每次启动... 阅读全文
posted @ 2018-06-08 12:56 romaLzhih 阅读(238) 评论(0) 推荐(0) 编辑
摘要:题意: 给定m*n的棋盘,有若干只咕咕。希望去掉一部分咕咕使得剩下的咕咕在上下左右四个方向越过咕咕槽的情况下都看不到咕咕。 思路: 建立一个二分图的方法有很多,这里采用xy二分。 假设没有咕咕槽的情况下,咕咕的最大放置数其实有点像八皇后问题,当然这里我们用最大匹配的... 阅读全文
posted @ 2018-06-08 12:56 romaLzhih 阅读(209) 评论(0) 推荐(0) 编辑
摘要:1 int a[MAXN], ans[MAXN > 1; 21 Build(l, mid, rt > 1; 32 //PushDown(rt,mid-l+1,r-mid); 若既有点更新又有区间更新,需要这句话 33 if (L > 1; 47 PushDown(rt, mid - l + 1, r - mid); 48 if (L mid) 51 ... 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(327) 评论(0) 推荐(0) 编辑
摘要:并查集模板 1 int p[MAXN]; 2 int r[MAXN]; 3 4 void init(int n) { 5 for (int i = 1; i <= n; i++) { 6 p[i] = i, r[i] = 0; 7 } 8 } 9 10 int find(int x) { retur 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(118) 评论(0) 推荐(0) 编辑
摘要:题意: 给定一个带权有向图,若P(A,B)表示节点A到B的最短路长度,选择四个节点ABCD,使得P(A,B)+P(B,C)+P(C,D)最大。 节点数n在1,000以内,边数m在2,000以内。 思路: 首先先将两两点之间的最短路都算出来。 之后建立pre和next两... 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(250) 评论(0) 推荐(0) 编辑
摘要:题目: 给你一个数组A[1::n],初始时每个元素都为零。对数组完成一些操作: 第一种可能,给你两个数p 和x(1#includeusing namespace std;typedef long long ll;const int maxn = 1e6 + 5;str... 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(278) 评论(2) 推荐(0) 编辑
摘要:题意: 给出类似剪刀石头布的相互克制关系,看是否有矛盾条件出现。经典题目,根据poj 1182“食物链”改编。题解: 题面描述了一些生物之间的关系,不难会想到并查集。 但是生物关系不是确定的,所以要在描述关系的集合当中加入一些额外的参数。 因为只有三种生物,所以我们定... 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(89) 评论(0) 推荐(0) 编辑
摘要:题意: 分析: 哈夫曼树 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。对于一颗哈夫曼树,我们把所有节点排序,权值大... 阅读全文
posted @ 2018-06-08 12:55 romaLzhih 阅读(173) 评论(0) 推荐(0) 编辑
摘要:题意: 只有两种西瓜,给出一系列信息——两个西瓜同种或异种,询问某两个西瓜的关系。题解: 对于每个节点建立对立节点。 约束关系: A、B相同:使用并查集合并(A、B),合并 (对立A、对立B) A、B不同:使用并查集合并(A、对立B),合并( B、对立A)若节点x与... 阅读全文
posted @ 2018-06-08 12:54 romaLzhih 阅读(158) 评论(0) 推荐(0) 编辑
摘要:题意: 与吃瓜题1题意一致,只是西瓜的种类从两种变成了无数种。题解: 在吃瓜题1里,由于只有两类西瓜,因此我们可以使用分类的方法来表示异同。而在这题中,由于种类数无穷,我们只有记录每个节点的对立节点,在询问x与y的关系时,我们查询x的对立节点集合中是否出现y节点。 那... 阅读全文
posted @ 2018-06-08 12:54 romaLzhih 阅读(95) 评论(0) 推荐(0) 编辑
摘要:转自:http://hzwer.com/8053.html 很好的分块知识讲解。可能涉及的几个词语解释: 区间:数列中连续一段的元素 区间操作:将某个区间[a,b]的所有元素进行某种改动的操作 块:我们将数列划分成若干个不相交的区间,每个区间称为一个块 整块:在一个区... 阅读全文
posted @ 2018-06-08 12:54 romaLzhih 阅读(216) 评论(0) 推荐(0) 编辑
摘要:大致题意:给你一个有向无环图,问从任意度数为0的节点出发到达节点n的最短路(边长为1)解法: 首先看到是一个有向无环图,再看到选了课程A之后才能选课程B,第一反应是拓扑排序之后dfs,但是拓扑排序的结果不会唯一,因此工作量会很大,会T,之后看到题解之后发现倒着一遍bf... 阅读全文
posted @ 2018-06-08 12:53 romaLzhih 阅读(154) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示