洛谷题解
题解
bugu、
这个作者很懒,什么都没留下…
展开
-
【洛谷】【区间与环形dp】P1880 [NOI1995] 石子合并
题目描述在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。试设计出一个算法,计算出将N堆石子合并成1堆的最小得分和最大得分。输入格式数据的第1行是正整数N,表示有N堆石子。第2行有N个整数,第i个整数ai表示第i堆石子的个数。输出格式输出共2行,第1行为最小得分,第2行为最大得分。输入输出样例输入 #1复制44 5...原创 2021-06-02 18:50:04 · 114 阅读 · 0 评论 -
【洛谷】【模板】P3371 和 P4779 单源最短路径
题目链接:P4779 【模板】单源最短路径(标准版)P3371 【模板】单源最短路径(弱化版)dijkstra最短路模板 :#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;inline int read(){ register int x = 0, f = 1; re...原创 2021-05-30 15:07:17 · 79 阅读 · 0 评论 -
【洛谷】【dp最长上升和下降子序列组成的最长序列】P1091 [NOIP2004 提高组] 合唱队形
题目描述NN位同学站成一排,音乐老师要请其中的(N-KN−K)位同学出列,使得剩下的KK位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K1,2,…,K,他们的身高分别为T_1,T_2,…,T_KT1,T2,…,TK, 则他们的身高满足T_1<...<T_i>T_{i+1}>…>T_K(1 \le i \le K)T1<...<Ti>Ti+1>…>TK(1≤i≤K)。你的任务是,已.原创 2021-05-28 21:46:24 · 140 阅读 · 0 评论 -
【洛谷】【dp】【要求两单调性,转成求最长上升子序列】P1233 木棍加工
题目描述一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的。棍子可以被一台机器一个接一个地加工。机器处理一根棍子之前需要准备时间。准备时间是这样定义的:第一根棍子的准备时间为1分钟;如果刚处理完长度为L,宽度为W的棍子,那么如果下一个棍子长度为Li,宽度为Wi,并且满足L>=Li,W>=Wi,这个棍子就不需要准备时间,否则需要1分钟的准备时间;计算处理完n根棍子所需要的最短准备时间。比如,你有5根棍子,长度和宽度分别为(4, 9),(5, 2),(2, 1),(3, 5),(.原创 2021-05-27 13:35:45 · 88 阅读 · 0 评论 -
【洛谷】【线性dp,类01背包】P1077 摆花
题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共mm盆。通过调查顾客的喜好,小明列出了顾客最喜欢的nn种花,从11到nn标号。为了在门口展出更多种花,规定第ii种花不能超过a_iai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算,一共有多少种不同的摆花方案。输入格式第一行包含两个正整数nn和mm,中间用一个空格隔开。第二行有nn个整数,每两个整数之间用一个空格隔开,依次表示a_1,a_2,…,a_na1,a2,…,an.原创 2021-05-26 21:35:48 · 121 阅读 · 0 评论 -
【洛谷】【线性dp】P2758 编辑距离
题目描述设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种:1、删除一个字符;2、插入一个字符;3、将一个字符改为另一个字符;!皆为小写字母!输入格式第一行为字符串A;第二行为字符串B;字符串A和B的长度均小于2000。输出格式只有一个正整数,为最少字符操作次数。输入输出样例输入 #1复制sfdqxbwgfdgw输出 #1复制4#include <iostream>#.原创 2021-05-26 19:35:49 · 177 阅读 · 0 评论 -
【洛谷】【最长递增子序列O(nlog2n)】P1020 导弹拦截[NOIP1999 普及组]
题目链接:https://www.luogu.com.cn/problem/P1020题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套..原创 2021-05-22 13:06:40 · 168 阅读 · 0 评论 -
【洛谷】【最大公共子序列】P1439 【模板】最长公共子序列
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;//解题思路://解法二O(nlog2n)://由于两串值都一样,将一个串离散化成升序1-n//则在读入另一串时,按照离散化顺序后的最长递增序列则是最大公共子串#define max(x, y) (x) > (y)? (x) : (y);inline void read(int &x).原创 2021-05-20 23:26:26 · 246 阅读 · 0 评论 -
【洛谷】【dp】P1434 [SHOI2002]滑雪
题目描述Michael 喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael 想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相...原创 2021-05-19 15:58:45 · 126 阅读 · 0 评论 -
【洛谷】P1878 舞蹈课
#include <iostream>#include <cstdio>#include <queue>using namespace std;//模拟到头痛的一道题//有一点细节出错就会全WA,自己思考不够全面细致的问题在这道题暴露的淋漓尽致//解题思路://建堆,然后每次得到差值最小的pop,再从两边找没有出列过的,并且异性的两个#define abs(x) (x) < 0? -(x) : (x)inline void read(int .原创 2021-05-13 12:43:21 · 243 阅读 · 0 评论 -
【洛谷】[最短路]P1629邮递员送信
#include <iostream>#include <cstdio>#include <vector>#include <queue>#include <cstring>using namespace std;//此题有坑点:可能有多条不同权值的重边,因为这道题无负权,所以不需要标记,也不可以标记//解题思路:jijkstra裸题,有所不同的是还需要沿另一条路径回来而不是原路返回,则需要反向建图,得到返回时各点距离cons.原创 2021-05-12 11:05:03 · 109 阅读 · 0 评论 -
【洛谷】P3884二叉树问题
#include <iostream>#include <cstdio>#include <vector>using namespace std;//解题思路://倍增法打表求最近公共祖先//倍增法原理:任何一个数都可以由二进制数组成、表示,则最近祖先的距离也可以分成2的幂次的各个段落//其实这道题可以不用lca求解,因为数据较弱,只需求一组的lca//所以也可以不用这种方法,反向建图dfs暴力求解应该也可以inline void read(int.原创 2021-05-11 15:44:44 · 106 阅读 · 0 评论 -
【洛谷】P3865-ST表模板
#include <iostream>#include <cstdio>using namespace std;//倍增法打表(类dp)//建表复杂度为o(nlog(n)),查询复杂度为o(1)#define max(x, y) (x) > (y)? (x) : (y)const int maxn = 1e5 + 5;inline void read(int &x){ register int f = 1; x = 0; re.原创 2021-05-10 11:00:49 · 73 阅读 · 0 评论 -
【洛谷】P4913二叉树深度
#include <iostream>#include <cstdio>using namespace std;//简单树的遍历题//需要注意的是,所给数据不一定会按构造顺序给出,故在读入中记录最大深度的解法//可能会导致所需数据未读入而WA#define qmax(x, y) (x) > (y)? (x) : (y)const int mode = 1e6 + 5;inline void read(int &x){ register in.原创 2021-05-06 15:48:33 · 247 阅读 · 0 评论 -
【洛谷】P1229遍历问题
//解题思路://前序遍历和后序遍历都只能确定根的位置//给定中序才能确定左右子树,例如前序:abc 中序:bca 那么中序里a左边的则全在其左子树上//中序和另外任意一种遍历可以递归还原出唯一的二叉树//而这道题的缺了中序,则无法确定左右子树边界,只有一个子树的,其在左在右对前后序没有影响,会相应有两种可能//则枚举出只有一个子树的个数,答案是2^个数;代码:#include <iostream>#include <cstdio>#include ..原创 2021-05-06 14:06:54 · 149 阅读 · 0 评论