紫书刷题录
文章平均质量分 97
紫书刷起来
蹲坑看手机
已搬家
展开
-
UVA1625 Color Length(动态规划LCS)
本题Vjudge链接题意:给你两个长度分别为n、m(1≤n,m≤5000)n、m(1 \le n, m \le 5000)n、m(1≤n,m≤5000)的字符串,让你求出组成新串的最小l(c)l(c)l(c)(具体组成方式看原题)个人感觉这题很难,一度怀疑自己的能力和紫书题目的难易分布,最后费了九牛二虎之力终于想通为什么了,所以本文可能会花大篇幅来解释这题是怎么想的思路:一开始看着有点LCS的影子,想着想着就写出了DP的递归函数,但是却死活想不出下一步怎么递归,即如下代码的[][][]片段int原创 2020-09-10 17:59:59 · 154 阅读 · 0 评论 -
UVA11584 Partitioning by Palindromes(动态规划)
本题vjudge链接题意:给你一个字符串,让你求分割成最少回文串的数量,比如racecar最少就是1,fastcar就是7,aaadbccb就是3思路:说实话,不放到动态规划的专题我可能都不知道怎么做提供一种比较好想的思路:记一个长度为lll的字符串最大的分割数量就是lll,如果说第lll个字符和第l−1l - 1l−1个字符拼成的字符串是回文串,则分割数量就可以减少,即将l−1l - 1l−1 ~ lll的字符串看成一个字符,固分割数减一,以此类推往前找能够看成单个字符的回文串来求出长度原创 2020-08-31 19:53:10 · 109 阅读 · 0 评论 -
UVA11400 Lighting System Design(动态规划)
本题vjudge链接题意:你要设计一个一共需要n种不同电压灯泡的照明系统,不同种类的灯泡用不同的电源,同一种灯泡必须要用同一个电源,现在为了省钱,在亮度不减的前提下,可以用电压高的灯泡来换电压低的灯泡减小费用,现给你每种灯泡的电压V,电源费用K,每个灯泡的费用C,每种灯泡所需要的数量L,问你计算出最优的方案的费用思路:为了减少电压之间的比较可以对灯泡进行从小到大的排序,这样的话就可以默认是下标大的换下标小的注意到对于一种灯泡,要不就全换掉,要不就全部都不换,不可能说最优的方案是当前这种灯泡原创 2020-08-31 19:51:15 · 137 阅读 · 0 评论 -
UVA1600 Patrol Robot(BFS)
title: “UVA1600”date: 2020-08-03T16:26:13+08:00draft: truecategories: [“紫书刷题录-ch6”]tags: [“题解”, “图”]description: “description.”本题vjudge链接BFS进阶题题意:有个移动的机器人,从(1, 1)点出发,目标是(m, n)点,0为可以通过的点,1为障碍点,机器人一次最多只能穿越k障碍,问你最少要走多少步到达终点BFS走,要注意个是要记录到达障碍点的最短穿越障碍.原创 2020-08-13 14:26:23 · 102 阅读 · 0 评论 -
UVA12166 Equilibrium Mobile(二叉树)
title: “UVA12166”date: 2020-08-03T20:27:46+08:00draft: truecategories: [“紫书刷题录-ch6”]tags: [“题解”, “树”, “思维”]description: “description.”本题vjudge链接题意:给你一个天平,修改某些节点可以使得天平平衡,让你求出最小的修改数量竟然是一道思维题,不行,这题要写写题解思路:假设这个数是一个满二叉树的,并且每个叶子节点每个叶子节点的重量(权值)都不一样,则.原创 2020-08-12 09:26:34 · 152 阅读 · 0 评论 -
UVA10305 Ordering Tasks(拓扑排序)
title: “UVA10305”date: 2020-08-01T09:47:35+08:00draft: truetags: [“题解”, “图”, “拓扑排序”]description: “description.”本题vjudge链接题意:给你一堆未知数的大小关系,让你输出可能的总体大小关系简化了拓扑排序,只因根据题中的意思了解到一定是DAG#include <bits/stdc++.h>using namespace std;const int M = 1.原创 2020-08-12 09:25:13 · 94 阅读 · 0 评论 -
UVA10410 Tree Reconstruction
title: “UVA10410”date: 2020-08-05T10:12:16+08:00draft: truecategories: [“紫书刷题录-ch6”]tags: [“题解”, “树”]description: “description.”本题vjudge链接题意:给你一个DFS和一个BFS遍历的树(具体遍历方式都是小的权值优先),让你求出每个节点的子节点直接说思路:栈的运用,题目说输出任意可能的答案,所以把树当成一个二叉树来做,bfs本质就是树的一层一层的遍历,当一个节.原创 2020-08-12 09:26:00 · 76 阅读 · 0 评论 -
UVA839 Not so Mobile
title: “UVA839”date: 2020-07-31T17:53:32+08:00draft: truecategories: [“紫书刷题录-ch6”]tags: [“题解”, “树”]description: “description.”本题vjudge链接题意:天平平衡,题意很好懂,就是让你判断给的天平平不平衡,直接递归读入就好了#include <bits/stdc++.h>using namespace std;int t, w;bool ok.原创 2020-08-13 14:25:16 · 83 阅读 · 0 评论 -
UVA816 Abbott‘s Revenge(BFS)
title: “UVA816”date: 2020-08-01T15:56:21+08:00draft: truetags: [“题解”, “图”]description: “description.”本题vjudge链接题意:给你起点和终点,每个点面向不同的方向有不用的指定方向,问你从起点到终点最短路BFS就好,但是要注意的是每个点都有不用的方向,所以要多加一维来保存这些方向,即每个点相当于是4个点一道值得学习深究的一题#include <bits/stdc++.h>.原创 2020-08-12 09:24:28 · 91 阅读 · 0 评论 -
UVA804 Petri Net Simulation(模拟)
title: “UVA804”date: 2020-08-04T14:26:40+08:00draft: truecategories: [“紫书刷题录-ch6”]tags: [“题解”, “图”, “模拟”]description: “description.”本题vjudge链接每个T变迁都有限制,必须是指定的P库有足够的token才行(注意,T指定的P库不一定只有一个),直接模拟就好了#include <bits/stdc++.h>using namespace .原创 2020-08-12 09:23:11 · 136 阅读 · 0 评论 -
UVA806 Spatial Structures(树)
title: “UVA806”date: 2020-08-04T18:02:01+08:00draft: truecategories: [“紫书刷题录-ch6”]tags: [“题解”, “树”]description: “description.”本题vjudge链接类似于计算像素的,读懂题意直接模拟就好了毒瘤题#include <bits/stdc++.h>using namespace std;using ll = long long;int n, kas.原创 2020-08-12 09:23:45 · 92 阅读 · 0 评论 -
UVA712 S-Trees(二叉树)
title: “UVA712”date: 2020-08-02T14:41:02+08:00draft: truecategories: [“紫书刷题录-ch6”]tags: [“题解”, “树”]description: “description.”本题vjudge链接题意:一棵二叉树,每个层节点都有有个逻辑布尔变量,0往左走,1往右走,给你最后一层的结果值,再给你每个变量的取值,问你最后走到的最后一层叶子节点的值这题有点迷,一开始忘记记录变量的顺序尽然也过了,后来记录了也能过不考虑.原创 2020-08-12 09:22:19 · 126 阅读 · 0 评论 -
UVA699 The Falling Leaves(二叉树)
title: “UVA699”date: 2020-07-31T19:38:47+08:00draft: truecategories: [“紫书刷题录-ch6”]tags: [“题解”, “树”]description: “description.”本题vjudge链接二叉树的计算,直接递归读入遍历即可所有数据要以空行相隔,UVA特色#include <bits/stdc++.h>using namespace std;const int M = 5e5;in.原创 2020-08-12 09:21:15 · 72 阅读 · 0 评论 -
UVA679 Dropping Balls(二叉树)
本题vjudge链接题意:小球在一个二叉树上下落,每个节点都有一个开关,起初全是关的,如果节点是开小球往右走,反之往左走,让你求最后一个球落到了哪个节点如果直接单纯的模拟是会超时的,观察可以发现一个节点的第奇数个球都会落到左子树,第偶数个球都落到了右边,自己草稿模拟一下就好了代码如下#include <bits/stdc++.h>using namespace std;int d, n, t;int main() {#ifndef ONLINE_JUDGE fr原创 2020-08-12 09:20:02 · 74 阅读 · 0 评论 -
UVA672 Parentheses Balance(栈)
本题vjudge链接让你判断括号是否合法,栈的经典例题#include <bits/stdc++.h>using namespace std;int t;int main () {#ifndef ONLINE_JUDGE freopen("test.in", "r", stdin); freopen("test.out", "w", stdout);#endif scanf("%d", &t); getchar(); whi原创 2020-08-12 09:18:18 · 66 阅读 · 0 评论 -
UVA572 Oil Deposits(dfs)
本题vjudge链接给你一个矩形图,让你求连通的“@”块,一个连通的定义是该点的八个方向都是连通的,dfs就行了#include <bits/stdc++.h>using namespace std;int m, n, cont[110][110];char g[110][110];void dfs(int x, int y, int num) { if (x < 0 || y < 0 || x >= m || y >= n || cont[原创 2020-08-11 14:14:10 · 111 阅读 · 1 评论 -
UVA548 Tree(树)
本题vjudge链接给你二叉树的中序和先序遍历,让你求从根节点到叶节点的的距离权值和最小,如果有多解,叶节点的权值要小,输出叶节点的权值#include <bits/stdc++.h>using namespace std;const int M = 1e4 + 10;string str;int ino[M], posto[M], ans, Max, lson[M], rson[M], len = 0;void dfs(int u, int sum) { if原创 2020-08-11 14:11:21 · 136 阅读 · 0 评论 -
UVA536 Tree Recovery(树)
本题vjudge链接给你一个二叉树的先序和中序遍历,输出对应的后序遍历#include <bits/stdc++.h>using namespace std;char pre[30], in[30];void dfs(int a, int b, int c, int d) { if (c > d) return; char tmp = pre[a]; int indx = c; while (in[indx] != tmp) indx+原创 2020-08-11 14:08:51 · 76 阅读 · 0 评论 -
UVA514 Rails(栈)
本题vjudge链接让你判断列车出站是否正确,栈的运用#include <algorithm>#include <cstdio>#include <cstring>#include <stack>using namespace std;const int M = 1e3 + 10;int n, arr[M];int main() {#ifndef ONLINE_JUDGE freopen("test.in", "r", s原创 2020-08-11 14:05:46 · 98 阅读 · 0 评论 -
UVA442 Matrix Chain Multiplication (栈)
本题vjudge链接#include <bits/stdc++.h>using namespace std;using pii = pair<int, int>;int n;pii m[30];char str[100000];int main() {#ifndef ONLINE_JUDGE freopen("test.in", "r", stdin); freopen("test.out", "w", stdout);#endif sc原创 2020-08-11 11:38:48 · 121 阅读 · 0 评论 -
UVA439 Knight Moves(BFS)
UVA439 Knight Movesvjudge链接#include <bits/stdc++.h>#define mk(a, b) make_pair(a, b)using namespace std;using pii = pair<int, int>;using pdi = pair<pii, int>;int sx, sy, ex, ey;bool vis[10][10];char a[5], b[5];const int dx[] = {原创 2020-08-11 11:25:36 · 80 阅读 · 0 评论 -
UVA122 Trees on the level(二叉树)
UVA122Trees on the level#include <bits/stdc++.h>using namespace std;const int M = 1e5 + 10;int lson[M], rson[M], cnt, node[M];bool ok, in[M] = {false};//in记录节点是否存在vector<int> ans;int newnode() {//申请新的地址 int u = ++cnt; lson[u原创 2020-08-11 11:15:03 · 126 阅读 · 1 评论 -
UVA12558 Egyptian Fractions (HARD version)(IDA*)
本题vjudge链接题意:埃及分数问题困难版,问你一个真分数a/ba/ba/b,在表达成a/b=1/c+1/d……a/b = 1/c + 1/d ……a/b=1/c+1/d……,选的分数尽量少,相同情况下自小的分数尽量大,限制有k(k≤5)k(k \le 5)k(k≤5)个数不能用来做分母,让你求解思路,IDA*的经典题,和普通埃及分数差不多的写法,就是要加一个限制,即有些数不能用一开始写了一个分数的结构体,后来发现没必要,直接IDA*就好了注意几个剪枝的地方,到达目标层时判断分子是否为1原创 2020-08-16 21:54:55 · 89 阅读 · 0 评论 -
UVA12113 Overlapping Squares(DFS + 回溯)
Overlapping Squares题意:给你个4×44 \times 44×4的网格图,问你有没有可能用不超过6张2×22 \times 22×2的纸叠成给的样子一开始想破脑袋都想不出来应该怎么验证是否相同,没办法还是问了下度娘,知道思路后自己写了代码ac了想不出的是如何验证正确性,一开始想着是否要把被遮住的部分补全然后验证,但这样又怎么验证?看了看别人的思路发现自己是真的蠢,直接模拟用2×22 \times 22×2的纸一张一张地放上去不就好了吗dfs最多也就6层,纸放下去只有9种可能,能想原创 2020-08-16 21:55:24 · 113 阅读 · 0 评论 -
UVA690 Pipeline Scheduling(DFS + 回溯)
本题vjudge链接历经千辛万苦终于a了这题题意:一台电脑有5个工作单元(unit0 ~ unit4),有10(0 ~ 9)个程序需要完成,每个程序都要在n(n<20>)(n < 20>)(n<20>)的时间片完成,在同一时间里,一个单元只能执行一个程序,开始执行后就要严格按顺序执行完,问你最小的完成10个程序的时间是多少从读题到思考到ac用了近两天,下面我将会从运行时间慢到运行时间快,tle到ac开始阐释解决这题时的坎坷首先是这题怎么dfs一开始想的时候想原创 2020-08-15 15:42:02 · 105 阅读 · 0 评论 -
UVA211 The Domino Effect(DFS + 回溯)
title: “UVA211”date: 2020-08-13T14:46:51+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “DFS”, “回溯”]description: “description.”本题vjudge链接题意:一个多米诺骨牌有两个面,一共有28个不同的多米诺骨牌,放在那,可能横着,可能竖着,这样就形成了一个7×87 \times 87×8的一个数字图,问你所有可能的摆放方式dfs就好了,一开始没想到怎么d.原创 2020-08-15 15:42:24 · 113 阅读 · 0 评论 -
UVA225 Golygons(DFS + 回溯)
本题vjudge链接题意:一个网格图,现在给你图中k(k≤50)k(k \le 50)k(k≤50)个障碍的坐标(坐标可能为负),不能继续上次的方向继续走也不能后退,这就意味着只能左右走,第iii次走iii个单位,从(0, 0)点出发,走了n(n≤20)n(n \le 20)n(n≤20)次恰好回到(0, 0)点,让你输出所有可能的路线,按字典序输出因为深度已知,所以我才用了DFS的方法,考虑到坐标可能有负数,所以我把坐标原点移动了一下,将(1000, 1000)记为原点,其余点也一样有同样变化,因为原创 2020-08-15 15:43:10 · 123 阅读 · 0 评论 -
UVA208 Firetruck(DFS + 回溯)
title: “UVA208”date: 2020-08-12T10:24:20+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “DFS”, “回溯”]description: “description.”本题vjudge链接题意:给你一个无向图,让你求出从1号节点到n号节点的所有路径,按顺序输出,具体看样例DFS和BFS都可以,这里我用了DFS,利用了一个ans的vector数组来储存答案,根据题目要求,优先递归节点权值小的.原创 2020-08-15 15:42:50 · 127 阅读 · 0 评论 -
UVA11212 Editing a Book(DFS + 回溯)
title: “UVA11212”date: 2020-08-11T10:02:22+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “DFS”, “回溯”, “IDA*”]description: “description.”本题vjudge链接题意:给你一个排列,你一次能够剪切一段字串,然后在别的地方插入粘贴,让你求最少的剪切粘贴次数使得排列是1~n按顺序的IDA*的题,每次规定递归的层数,长度为n的排列最多是剪切粘贴n -.原创 2020-08-13 14:32:11 · 127 阅读 · 0 评论 -
UVA11059 Maximum Product(暴力美学)
title: “UVA11059”date: 2020-08-06T17:34:18+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “暴力美学”]description: “description.”本题vjudge链接给你一个数组,让你求子字串的最大乘积,如果没有就输出0暴力解就好了#include <cstdio>#include <algorithm>#include <vector.原创 2020-08-13 14:31:44 · 77 阅读 · 0 评论 -
UVA10976 Fractions Again?!(暴力美学)
title: “UVA10976”date: 2020-08-06T18:27:25+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “暴力美学”]description: “description.”本题vjudge链接#include <cstdio>#include <vector>using namespace std;using ll = long long;ll n;int mai.原创 2020-08-15 15:38:40 · 95 阅读 · 0 评论 -
UVA10603 Fill(BFS + 状态图)
title: “UVA10603”date: 2020-08-09T20:37:14+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “BFS”, “状态图”]description: “description.”本题vjudge链接题意:给你3个没有刻度的杯子,每个杯子的都有自己的容量,现利用这三个杯子量出体积为d的水,现在问最少的倒水量,如果量不到d,就量和d想接近的d’按照书中的说法这是一个隐式图,求最短路,最短路的评判标.原创 2020-08-13 14:30:45 · 84 阅读 · 0 评论 -
UVA1601 The Morning after Halloween(双向BFS)
title: “UVA1601”date: 2020-08-10T17:00:48+08:00draft: truetags: [“题解”, “BFS”, “状态图”, “双BFS”]description: “description.”本题vjudge链接题意:给你一个图,"#“为障碍物,” "为通路,图里面最多有3个小写字母(a, b, c)和于其对应的大写字母(A, B, C),每次移动每个小写字母都有4个方向和不动5种方案,一次移动可以有多个小写字母一起移动,不能一个空格点不能同时有.原创 2020-08-13 14:30:24 · 129 阅读 · 0 评论 -
UVA1354 Mobile Computing(DFS + 回溯)
title: “UVA1354”date: 2020-08-09T15:45:24+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “DFS”, “回溯”]description: “description.”本题vjudge链接题意:有一个房间,有长为1的木棍,用天平的方式放一些物品,让你求出不超过房间的宽度的最长宽度的,如果误解输出-1做了两天,习得了两种dfs非枚举子集的办法(到时再回头研究刘神方法),只选择了一种学习,当.原创 2020-08-13 14:29:41 · 166 阅读 · 2 评论 -
UVA725 Division(暴力美学)
title: “UVA725”date: 2020-08-06T16:25:28+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “暴力美学”]description: “description.”本题vjudge链接题意:给你一个数n,让你求出 abcde/fghij=nabcde / fghij = nabcde/fghij=n 的所有结果,a ~ j 的恰好是 0 ~ 9 的数暴力遍历分子就好了,然后检查分母是否合法就行了.原创 2020-08-13 14:28:48 · 90 阅读 · 0 评论 -
UVA524 Prime Ring Problem(DFS + 回溯)
title: “UVA524”date: 2020-08-06T20:32:38+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “回溯”, “DFS”]description: “description.”本题vjudge链接题意:给你一个数n,让你求出所有素数环,素数环:利用 1 ~ n来排列组合成的一个环,相邻的两个数的和必须都是素数直接dfs遍历所有排列,途中要剪枝,如果当前放的数和前面的数的和不是素数就直接剪了画出解.原创 2020-08-15 15:38:57 · 91 阅读 · 0 评论 -
UVA140 Bandwidth(DFS + 剪枝)
title: “UVA140”date: 2020-08-07T19:53:14+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “剪枝”, “DFS”]description: “description.”本题vjudge链接题意:给你一个无向图,让你输出一种序列使得每个节点到该节点在图中相连的节点的最远距离的最小值,直接看题目比较好懂dfs遍历所有可能的序列,然后求出一个最小值,我的代码用了邻接表剪枝的话一种是利用计算好最.原创 2020-08-13 14:27:06 · 104 阅读 · 0 评论 -
UVA129 Krypton Factor(DFS + 回溯)
title: “UVA129”date: 2020-08-07T11:57:39+08:00draft: truecategories: [“紫书刷题录-ch7”]tags: [“题解”, “回溯”, “DFS”]description: “description.”本题vjudge链接定义一个串是容易串:有相邻的相同的字串;反之就是困难串让你求只利用前k个大写字母的第n个困难串dfs模拟一下,值得注意的是剪枝时只看当前串的后缀即可,例如遍历到ABCDEFGH时,就只判断H和G、GH和.原创 2020-08-13 14:28:27 · 192 阅读 · 0 评论 -
UVA1149 Bin Packing(贪心)
本题vjudge链接题意:给你n个物品,每个物品的重量为wiw_iwi,你有容量为w的背包,每个背包最多只能装两件物品,问你最少要多少背包来装贪心就好了,贪心策略:将物品按重量排序,如果最重和最轻的物品一起不超过w就放一起,然后就让次重和次轻的放一起;否则重的单独放在一个背包,然后让次重的背包和最轻的一起,以此循环代码如下#include <cstdio>#include <cstring>#include <algorithm>using name原创 2020-08-21 21:40:01 · 136 阅读 · 0 评论 -
UVA11572 Unique Snowflakes(思维 )
本vjudge链接题意:给你一个长度为n(n≤1000000)n(n \le 1000000)n(n≤1000000)的数组,问你最长有不重复数字的连续子序列有多长用set和map的速度都差不多,set记录是否重复,map记录当前数字在此之前最近出现的位置,如果没有就是-1如果嫌set和map慢的话直接用unordered_set或者unordered_map这里用了上次偶遇了一种很牛逼很简洁的hash方式后就喜欢上这个hash,跑进了100ms代码如下#include <cstdio原创 2020-08-21 21:40:23 · 82 阅读 · 0 评论