- 博客(26)
- 收藏
- 关注
原创 《计算机网络个人总结》
前言:懂不懂老师只读PPT还能及格的含金量啊实验部分:吐槽一下学校实验书的版本是windows XP系统。按书上根本做不出来,无语。2.2 基于ensp实现多机互连:使用一台交换机(switch)和多台PC,连接上拓扑线,然后启动即可。启动后,可以用ping命令检查连通性。命令为:ping 192.168.1.1(后面这个即为要ping的IP地址)2.3.1 FTP服务器架构实现:参考:http://win2000.ctocio.com.cn/win2000/2021/0316/70419
2021-06-02 14:25:21
602
原创 《省赛选拔题解》
B:贪心考虑,从小的开始砍即可,排序一下。#include<bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<int,int> pii;const int N = 1e5 + 5;const int M = 1e9 + 1;const LL Mod = 2147483647;#define pi acos(-1)#define INF 1e9#define dbg(ax) cou
2021-03-20 15:22:11
318
2
原创 《随机题库练习10》G
思路:看题就想到了拓扑.但是由于这里可以同时进行多个安装.所以我先跑了一次dfs.(果然超时了).首先这个答案肯定是有向边的最长边集的长度。(边的长度为安装时间)。那么如果直接上拓扑,记录安装到每一个点的时间,然后通过前驱点不断转移。这样是不行的.因为可能会存在多个前驱点。我们需要取最长的前驱点作为开始安装的点,也就是说当我们入度删到0时,此时的前驱点应该是所有前驱点里安装到的时间最大...
2020-04-27 17:58:31
189
原创 《随机题库练习10》D
HDU4166的一个进阶版吧.思路:首先联想到bfs的性质.当我们搜素到(x,y)点时,那么这时的距离一定是到这个点最短的距离.对于到X点的最短距离,可能会存在多个点到它的距离满足到x的最短距离.但是这样的情况只是说明最短的路径很多,但是到x点的最短距离肯定是不变的.因为从x->y的最短路径肯定是优于(其他到x的>最短路径的距离)->y的距离.所以说我们只需要统计到...
2020-04-27 16:32:19
168
原创 《随机题库训练10》 A:
最长上升子序列的变形.思路:很明显,对于i,j位置满足的大小关系,长大于长,宽大于宽,肯定能满足的几率会高一些.那么只需要取长的作为长,短的作为宽。排序之后,再跑一次最长上升子序列就行了.复杂度:O(n^2).#include<bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<i...
2020-04-27 09:31:27
288
原创 《Tzoj-3927》dp思路
题意:给你一个环形序列,让你求最大连续子序列和.解法:环形的最大连续子序列和问题一开始我的思路是化环为链,然后去dp,但是这样就不能保证有没有重复。如果要保证没有重复。那就需要去枚举长度,这样时间复杂度就会升到n^2。正解思路:首先这个子序列肯定分为两种情况:1.跨过了首尾.2.没有跨过首尾.对于2我们只需要传统的dp就行了.即普通地求最大连续子序列和对于1这种情况,我们可以求...
2020-04-13 18:40:39
170
原创 《数据结构练习-结构体与联合体 》代码详解
首先明确共用体(又称联合体)的概念:所有成员都在同一段内存中存放,起始地址一样,并且同一时刻只能使用其中的一个成员变量。即可以理解为,所有成员同时附上值。(不是很明确)上代码:union Mat{ int f[3][3],f11; struct{ int ff[4],f22,fff[3],f33; }; }matrix;上组测试样例,...
2020-03-25 18:23:03
153
原创 《Hud 2589》Phalanx详解
题意不再赘述。思路:采取一个由里及外的dp思路。设置状态:dp[i][j],我看大多数题解都说的是最大的对称矩阵,但我觉得还不是特别明确.dp[i][j],代表以i,j为左下角,向右上角扩散的最大对称矩阵这样的设置我们就可以得出一个转移方程。因为我们推得i,j位置时,其右上角的矩阵的最大对称矩阵肯定已经推得。所以dp[i][j]可以由dp[i-1][j+1].这里我们详细来思考下dp[i...
2020-03-18 09:47:14
128
原创 《poj 1661》详解(动态规划)
一开始拿到题的时候想从高处往下dp,但是发现不行,于是看了很多网上的题解。讲的思路都蛮好,但是有些地方没有说清楚.于是想来记录一下.首先,这题显然是一个dp的解法.那么我们设置状态:dp[i][0]表示从i平台的左边走到地面所需的最小时间dp[i][1]表示从i平台的右边走到地面所需的最小时间将左右走分开找.由这样的设置状态我们可以明白:我们采取应该从底向上的递推顺序.然后就可以去...
2020-03-17 15:30:04
307
原创 《The King’s Ups and Downs》超详细题解!(dp+组合数)
作为一个dp蒟蒻,这题也卡了我很久,一开始看大佬们的题解愣是没看懂。首先这里我们用的思想是dp的思想。那么应该怎么dp?我们要用前面的人的状态来计算。题目给我们n个数.并且这个n个数是从1~n的,那么我们可以从小到大开始摆人.首先摆1,确定1的方案数,然后2,确定2的方案数,然后3,4…那么我们该怎么确实这个方案数呢?这里就开始用到dp了。对于我们目前摆到的这个人x,因为我们是从小到大...
2020-02-26 16:11:37
347
原创 《L2-001 紧急救援》(深度剖析)浅谈最短路
首先看这道题,我们需要去找到最短路.并且记录相同的最短路数,然后找到 最短路里人数最多的路打印它作为一个蒟蒻,我只会最基本的最短路来找单点到各点的最短路.我认知里的真正熟练掌握应该是完全明白这个算法思想,并且能够自己模改算法里的一些来实现自己的目的.虽然这确实很难,但是我觉得在不断深入了解与使用后,就会对这个算法有一个更加深刻的理解。再看这道题,普通的狄杰斯特拉算法貌似无法实现我们的目的。...
2020-02-21 20:32:12
286
1
原创 《Extended Traffic》最短路spfa
这个问题核心就是负环上元素的处理。这里给出两种思路。1.首先在找到一个负环上的元素时,即它的进队次数大于n时,不退出spfa函数,继续更新,直到所有在环上的元素的进队次数都大于n,这是肯定的,因为是负环最后环上的元素都肯定会大于n。注意为了不死循环,当一个元素确定为在负环上时,我们就不再让它入队。2.dfs法:当我们找到一个负环上的元素时,我们就dfs它能到的所有点,用一个数组标记,最后这些...
2020-02-17 14:25:37
138
原创 《昂贵的礼物》最短路思路详解
题意在这里不再赘述.我想讲的是思路。首先我们要把这个问题反向来看.把1号人物与其他人物的关系,当成其他人物与他的关系,然后我们建立一个虚拟的人物0,他与所有人的边权都是所有人物的原价值.转化为图的思想就是,每个人物都是图上的点,然后兑换优惠是边,然后我们反向建边,通过虚拟点出发,不断松弛更新到1的距离,最后这个最短的距离就是我们要的答案。注意的是:这题还有个等级限制,所以我们枚举以每个人物的...
2020-02-17 09:28:22
120
原创 《Currency Exchange》spfa(详解)
做完后梳理下这道题。首先,题意是给我们n种货币,m个货币兑换点,然后有转换规则.问你最后经过一连串转换后,回到起点,你手上的这种货币数量有没有增多我们将它转化为一个图的问题.那么就是把n种货币看成n个点,把m个货币兑换点看成m条边,但是注意这条边上存的是转换规则,因为边的权值应该是转换后的货币量,我们一开始不可能知道。那么,我们再看一下这个提问,问你回到起点后的数量,首先,我们边可以将它看...
2020-02-15 09:03:57
541
原创 《Frogger》最短路之最长边
题意就不赘述了.想讲一讲思路:我们要求得最长边里的最短.就要不断去更新,到当前位置的最长边里的最短边是什么.所以也就是,我们的距离数组中存储的是,到当前点的所有路径中的最长边里的最短边.#include<iostream>#include<stdio.h>#include<queue>#include<algorithm>#include...
2020-02-13 16:18:00
247
原创 《Roadblocks》次短路问题
这里是一个求次短路问题,也就是除了最短路之外第二短的路.这里我用dj…算法(不会拼)。首先明确一点,次短路肯定是最短路上拿掉某一段换成第二短的.对于一个点u,到它的次短路肯定是到它之前的某个点的最短路加上到它的距离,或者是到它前某个点的最短路加上到它的距离.然后就能求解#include<bits/stdc++.h>using namespace std;typedef l...
2020-02-12 19:21:05
192
原创 《字串变化》广搜
这一题是广搜不难写,难的就是继续找下去。所以这里参考了dalao的思路,枚举要变得字符串的每一位,并且继续枚举每一位的每一种变换方法…然后就是看细节了(蒟蒻的细节太弱了…)#include<bits/stdc++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;typedef...
2020-02-03 12:31:24
100
原创 《01迷宫》DFS加联通图
这个题目,虽然说是bfs题,但是显然dfs要简单一些。可能是本蒟蒻不会写bfs吧…思路:可以发现,相邻的一块区域里的步数是一样的,就是这个联通图里的块总数,所以我们只需要dfs出这个联通图里的块总数,再把这个总数赋值给这个联通图里的所有点就可以了。#include<bits/stdc++.h>using namespace std;#define INF INT_MAX#de...
2020-02-01 09:34:54
182
原创 《单词接龙》dfs
这里我觉得还是蛮好的。思路:先预处理出所有字符串的最小重叠部分,然后dfs加上回溯思想,就能找到。对于这里的几个限定条件的处理:1.每个单词只能出现2次,这个比较简单只要vis < 2就行了。2.对于不能包含情况的理解,这里其实不用去处理这种情况,因为包含了就相当于还是加了原来的单词,长度肯定不会是最长的。#include<bits/stdc++.h>using na...
2020-01-30 09:33:57
369
原创 《八皇后问题》dfs+回溯
这是个比较经典的问题了,以前看见都没怎么动手写,今天看见了,决定写一些。思路:我们dfs每一行上的每个数,满足条件就加入数组继续搜,搜完一遍重置数据,这就是回溯的思想,不影响下一次搜索。我一开始被卡在了对角线有没有被搜索过的判断上了。后面发现。从左下角到右上角的每一条对角线都可以用vis[i+j]来表示。而从左上角到右下角的每一条对角线都可以用vis[i-j]来表示,因为i-j可能会小于n...
2020-01-28 15:11:02
211
原创 《UVA11624 Fire!》两次BFS+优化思路
这题真的好多细节问题,我调了好久,感觉自己还是好菜!言归正传:这题我开始的思路是找到各个火的点,然后一次次bfs去调整各个点的最短蔓延到的时间,但是超时了,后来仔细一想确实,如果点有很多,那就需要很多时间去搜索了。看了大神们的博客后,才明白,其实一次去搜索蔓延时间就可以了。因为这点最短的蔓延时间会由离他最近的火的时间来覆盖,所以就只需要一次。然后我们只要去比较逃到这点的时间火有没有蔓延到就可以了...
2020-01-27 10:46:14
173
原创 《POJ3279 Fliptile》枚举+DFS(详解)
对于这道题:首先明确思路:枚举第一行的所有情况,然后再dfs下面几行的情况。为什么可以这样做?因为下一行的翻转情况都可以通过上一行的情况来决定,就比如上一行的这个是黑的,那下一行必定要翻转,因为上一行已经翻转过了,只能通过这一行的翻转来改变上一行。其次,怎么枚举?这里我们用二进制来模拟枚举的情况。因为每个位置有翻转和不翻转两种情况,所以每个位置有2种可能,因为第一行一共有n个位置,所以情况数...
2020-01-24 09:16:49
2733
原创 《Wooden Sticks》
描述There is a pile of n wooden sticks. The length and weight of each stick are known in advance. The sticks are to be processed by a woodworking machine in one by one fashion. It needs some time, call...
2020-01-17 10:09:49
370
原创 《PAT-050》倒第N个字符串
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, …, aaz, aba, abb, …, abz, …, zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。输入格式:输入在一行中...
2020-01-15 10:35:36
165
原创 《简单迷宫问题》(dfs)
定义一个二维数组:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的路线。输入一个5 × 5的二维数组,表示一个迷宫。数据保证只有一条...
2020-01-14 18:27:46
459
原创 《tzoj5024》大数除以小数
《tzoj5024》大数除以小数》 第一次写博客,拿来记录下oj上写的代码,方便以后能回忆。 描述 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商 数Q和余数R,使得A = B * Q + R成立。 输入 输入在1行中依次给出A和B,中间以1空格分隔。 输出 在1行中依次输出Q和R,中间以1空格分隔。 样例输入 123456789...
2020-01-13 16:13:00
1052
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人