02 2021 档案
摘要:代码 /* 思路来源: f(i, j) = max(f(i - 1, j), f(i - 1, j - v) + w, f(i - 1, j - 2 * v) + 2 * w, ..., f(i - 1, j - s * v) + s * w) f(i, j - v) = max( f(i - 1,
阅读全文
摘要:题意 分别求滑动窗口中的最小值和最大值。 代码 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N = 1000010; int n, k; int a[N]; int q
阅读全文
摘要:题意 博览馆正在展出由世上最佳的 位画家所画的幅图画。可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必须说明两个数字,和,代表他要看展览中的第 幅至第 幅画(包含 和 )之间的所有图画,而门票的价钱就是一张图画一元。
阅读全文
摘要:题意 某地有 个能量发射站排成一行,每个发射站 都有不相同的高度 ,并能向两边(当然两端的只能向一边)同时发射能量值为 的能量,并且发出的能量只被两边最近的且比它高的发射站接收。 显然,每个发射站发来的能量有可能被 或 或
阅读全文
摘要:题意 给定一个序列,求能覆盖整个序列的最少的不上升子序列的个数。 思路 考虑贪心,维护一个数组,数组里面存的是每个不上升子序列的最后一个元素。 遍历原序列中的每一个元素,如果当前元素比数组中所有的元素都大,即它不能作为之前那些不上升子序列的结尾。因此插入数组最后。 反之,找到大于等于它的第一个元素,
阅读全文
摘要:题意 给定两个字符串和,现在要将经过若干操作变为,可进行的操作有: 删除–将字符串A中的某个字符删除。 插入–在字符串A的某个位置插入某个字符。 替换–将字符串A中的某个字符替换为另一个字符。 现在请你求出,将变为至少需要进行多少次操作。 数据范围 \(1 \le
阅读全文
摘要:题意 给定一个长度为的数列,求数值严格单调递增的子序列的长度最长是多少。 数据范围 思路 维护一个数组 nums,要求这个数组里的元素在数值上是严格递增的。 遍历每一个数,如果这个数比数组里的最后一个数更大,那么就将这个数插入数组的最后;反之,
阅读全文
摘要:题意 有若干个人在数轴上跑步,每个人可能往左跑,也可能往右跑,但是方向不能变。速度是 现在给定个报告,每个报告给出时刻在位置有人经过。 问至少有多少个人在跑步。 思路 注:坐标旋转公式: \[
阅读全文
摘要:题意 思路 这道题与取方格数那道题如出一辙,唯一需要改变的就是不能通过的格点需要跳过。 这道题输出方案有点麻烦,这里有一个技巧就是只看上一个格子的出点与下一个格子的入点之间的边,如果这条边的反向边有流量那么可以走,并顺便将其减 代码 #include <iostream> #includ
阅读全文
摘要:题意 给定一张航空图,图中顶点代表城市,边代表两个城市间的直通航线。现要求找出一条满足下述限制条件的且途经城市最多的旅行路线。 从最西端城市出发,单向从西向东途经若干城市到达最东端城市,然后再单向从东向西飞回起点(可途经若干城市)。 除起点城市外,任何城市只能访问 次。 对于给定的航空图
阅读全文
摘要:题意 假设有根柱子,现要按下述规则在这根柱子中依次放入编号为的球。 每次只能在某根柱子的最上面放球。 在同一根柱子中,任何 个相邻球的编号之和为完全平方数。 试设计一个算法,计算出在 根柱子上最多能放多少个球。 思路 典型的最小路径点覆盖
阅读全文
摘要:题意 有个项目需要 天才能完成,其中第 天至少需要 个人。 一共有 类志愿者可以招募。其中第 类可以从第 天工作到第 天,招募费用是每人 元。 求能招募足够的志愿者的最少费用。 数据保证一
阅读全文
摘要:题意 一个餐厅在相继的 天里,每天需用的餐巾数不尽相同。假设第 天需要 块餐巾 ()。 餐厅可以购买新的餐巾,每块餐巾的费用为 分;或者把旧餐巾送到快洗部,洗一块需 天,其费用为 分;或者送
阅读全文
摘要:题意 在一个的矩形网格中,每个格子里都写着一个非负整数。 可以从左上角到右下角安排条路线,每一步只能往下或往右,沿途经过的格子中的整数会被取走。 若多条路线重复经过一个格子,只取一次。求能取得的整数的和最大是多少。 思路 这道题与数字梯形那道题的第三问很像,区别在于数字梯形是个
阅读全文
摘要:题意 思路 第一问 这条路径中,每个点只能使用次,每条边也只能使用次,获益为经过点的点权和。 这里的费用不是边的费用,而是点的费用,因此可以采用拆点的技巧,即拆成一个入点和一个出点,入点与出点连边,容量是(因为每个点只能使用一次),费用是点权。 设立虚拟源点,与第一行的
阅读全文
摘要:题意 有 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。 如何用最少搬运量可以使 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。 数据保证一定有解。 思路 这道题与运输问题有一些相似点。可以将这些仓库分成两类,一类是比最终数量多的仓库,另一
阅读全文
摘要:#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace std; const int N = 5010, M = 100010, in
阅读全文
摘要:题意 给定一张无向图,求最少去掉多少个点,可以使图不连通。点数 思路 这里引用李煜东《算法竞赛进阶指南》给出的方法。 若无向图不连通,则图中必有两个点不连通,但这两个点是未知的。因此可以枚举源点和汇点,然后求去掉多少个点可以使得和不连通。答案为各次中的最
阅读全文
摘要:题意 有个实验,和种器材。 每个实验都需要若干种器材,做一个实验可以获得的收益,配置一个器材需要花费 问做哪些实验,可以获得最大收益。 思路 最大获利的推广版,最大权闭合图模板题 代码 #include <iostream> #include <cstdio> #in
阅读全文
摘要:题意 思路 首先可以发现两个性质: 只有在偶数秒才可以拿宝石 相邻格子的宝石不能都拿到 根据这两条性质,可以发现这是一个二分图最大独立集问题。 对网格构建二分图,即横纵坐标之和为奇数的格点与源点连容量是宝石价值的边,汇点与横纵坐标之和为偶数的格点连容量是宝石价值的边。 横纵坐标之和为奇数
阅读全文
摘要:题意 个小朋友投票,虽然每个人都有自己的主见,但是为了照顾一下自己朋友的想法,他们也可以投和自己本来意愿相反的票。 我们定义一次投票的冲突数为好朋友之间发生冲突的总数加上和所有和自己本来意愿发生冲突的人数。 现在给定初始每个人的决定,求冲突的最小值。 思路 因为每个人有两种决定,因此我们就能很
阅读全文
摘要:题意 给定一个个点,条边的有向图。 现在有一种操作,就是可以将任意点的所有出边或者所有入边删掉。 已知对于第个点,将所有射入该点的边移除所需的花费为,将所有从该点射出的边移除所需的花费为。 求移除所有边的最小花费。 思路 考察一条边,要删
阅读全文
摘要:题意 求不带点权和边权的最大密度子图 思路 最大密度子图模板题 代码 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #define x first #def
阅读全文
摘要:题意 有个中转站,费用为。有个用户群,第个用户群可以连接第和个中转站,获利为。 现在要建立一些中转站,求最大净收益(净收益 = 获利 - 花费) 思路 最大权闭合图 用户群有点权,中转站有点权。用户群与可连接的中转站建立
阅读全文
摘要:模型描述 一张无向图,没有点权也没有边权。 选取一个子图,使得最大。 注意:这里的子图指的是,选取一些点,与之相关的边不一定全选。但是如果选取了某条边,那么其两个顶点必选。 但是因为全选与这些点相关的边,肯定是最优的,于是下文就默认是全选
阅读全文
摘要:#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace std; const int N = 10010, M = 200010, i
阅读全文
摘要:模型描述 一个有向图,每个点有点权。 选取一个点集,要求与这个点集相关的边不能指向这个点集之外,称为一个闭合图。 所有闭合图中,点权和最大的称为最大权闭合图。 解法 原图中每条边的两个顶点,向连容量是的边。 设立虚拟源点,
阅读全文
摘要:题意 思路 首先分析一下边权是如何计算的,边权等于两点的异或值,由于异或是按位计算,不同位之间是独立,因此我们可以单独看一位,只要每一位的答案最小,然后将这些位的答案拼起来,就是最终的答案。 每一位的数值非即,因此可以划分成两个集合。对于已经知道点权的点,如果是,就与源点相连
阅读全文
摘要:题意 思路 首先推一下01分数规划的式子,\(\frac{\sum_{e \in C} w_e}{|C|} > \lambda \Leftrightarrow \sum_{e \in C} w_e > \lambda |C| \Leftrightarrow \sum_{e \in C} (w_e -
阅读全文
摘要:题意 以及都是 方法 异或运算可以看成是不进位的加法,因此直接高斯消元即可 代码 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N =
阅读全文
摘要:题意 给定的线性方程组的增广矩阵,求方程的解。 做法 枚举每一列: 找到当前列绝对值最大的那个元素。 把这一行换到最上面 将该行的主元(第一个数)变成(其余所有数字依次跟着变化) 将下面所有行的当前列的值变成(其余所有数字依次跟着变化) 代码 #
阅读全文
摘要:题意 思路 这道题的建图是这样的,每个顾客作为流网络中的点。并设立虚拟源点和虚拟汇点。 对于一个顾客,考察每个他能开启的猪圈,如果该猪圈之前没用过,则源点向他连容量是该猪圈起始猪数的边。如果该猪圈之前用过,则从上一次用这个猪圈的顾客向他连一条容量是的边。 跑一遍最大
阅读全文
摘要:题意 思路 将企鹅个数看作流量。 考虑转移方式,如果两块浮冰之间距离在企鹅跳跃距离以内,那么这两块浮冰之间就是可以互相转移的,因此可以互相连容量是的边。 由于每块浮冰都有跳跃次数限制,因此考虑拆点,拆成入点和出点,入点向出点连容量大小等于跳跃次数限制的边。 设置虚拟源点,连向每
阅读全文
摘要:题意 给定正整数序列 。 计算其最长递增子序列的长度 。 计算从给定的序列中最多可取出多少个长度为 的递增子序列。(给定序列中的每个元素最多只能被取出使用一次) 如果允许在取出的序列中多次使用 和 ,则从给定
阅读全文
摘要:题意 有头奶牛,每头奶牛都有喜欢的食品和饮料。每头牛只能吃一种食品、喝一种饮料,每种食品、饮料都只能使用次。 问最多能让多少头牛得到自己喜欢的食品、饮料。 思路 因为是奶牛匹配食品、奶牛匹配饮料,因此将奶牛放在中间。 设置源点,向每款食品连容量是的边,原因是只能使用次;
阅读全文
摘要:题意 思路 这道题有两个量,一个是人数(作为限制条件),另一个是天数(作为优化目标)。遇到这种问题,一般考虑分层图,将优化目标作为层。 这道题将个空间站(包括地球和月球)作为节点,将天数作为层,即每层个节点。 位于前一天空间站的人数转移方式有两种,一种是留在这个空间站(向
阅读全文
摘要:题意 给定一个无向图,每条边有边权。 现在要从起点到终点次,并且在这次行程中图中每条边最多只能使用次。 目标是使得走过的边的最大值最小,求这个最小值。 思路 这道题使用最大流。一般来说,最大流的题目都会有一定的限制条件,比如次数限制,数值限制等。还可能会出现改变边权,或者从起点到终
阅读全文
摘要:题意 给定一个流网络,问有多少条关键边。 关键边指的是,增加这条边的容量,可以使得最大流的流量增加。 思路 我们来分析一下什么样的边是关键边。 跑完最大流之后,如果这条边的流量不满,那么一定不是关键边。因为都没跑满,增加容量的话还是那些流量,没有实质作用。 因此只有满流的边才可能是关键边。 对于满流
阅读全文
摘要:题意 给定一个包含个点条边的有向图,并给定每条边的容量,边的容量非负。 其中有个源点,个汇点。 图中可能存在重边和自环。 求整个网络的最大流。 思路 建立虚拟源点,分别向源点连容量是的边(正无穷的原因是不能让其成为流量的限制) 建立虚拟汇点,汇
阅读全文
摘要:无源汇上下界可行流 模型描述 在流网络中,每条边的流量范围不再是,同时还要满足流量守恒。求一个可行流。 建模 我们要想办法转变为一般的最大流问题。 考虑将容量上界和下界分别减去,即可行流需满足$0 \leq f'_i \l
阅读全文
摘要:题意 个单位,每个单位有个代表。个桌子,每张桌子最多可容纳个人。 同一张桌子不能有两个代表是来自同一个单位的。 求是否能有符合要求的排座方案。 思路 二分图裸题。从数量关系入手。 建立超级源点和,从向每个单位连容量是的边,从每张桌子向
阅读全文
摘要:题意 有个外籍飞行员和个英国飞行员,每个外籍飞行员可以与若干英国飞行员配对。 每个飞行员最多只能使用一次,问最多可以有多少对飞行员,并输出方案。 思路 二分图裸题。 设置虚拟源点和,从向外籍飞行员节点连容量是的边,从英国飞行员向连容量是的边(使用数量限
阅读全文
摘要:图像语义分割形象化描述 图像语义分割是指像素级地识别图像,即标注出图像中每个像素所属的对象类别。 目标:一般是将一张RGB图像(height*width*3)或是灰度图(height*width*1)作为输入,输出的是分割图,其中每一个像素包含了其类别的标签(height*width*1) Unet
阅读全文
摘要:图像定位的直观理解 不仅需要我们知道图片中的对象是什么,还要在对象的附近画一个边框,确定该对象所处的位置。 也就是最终输出的是一个四元组,表示边框的位置 图像定位网络架构 可以将图像定位任务看作是一个回归问题! 数据集介绍 采用Oxford-IIIT数据集 The Oxford-IIIT Pet D
阅读全文
摘要:题意 有堆石子,每堆有个,并且相邻两堆石子的个数互不相同。 两个人轮流取石子,每次取个。取石子的过程中不能打破相邻两堆石子个数不同的规则。 无法再取时,游戏终止。问先手必胜还是后手必胜。 注意:当某一堆个数是时,也算是一堆 数据范围 \(1 \leq T \leq 100
阅读全文
摘要:网络结构 因为主要是学习pytorch,具体原理没有深究。如果将来搞CV的话,可能再回来搞懂吧。 网络结构大概就是,用多个卷积核提取特征,然后将提取到的特征拼接在一起 网络结构如下: 实现思路是,首先定义卷积模型(包括卷积层和BN层),然后再实现Inception的Block(图中所示结构) 卷积模
阅读全文
摘要:数据集描述 总共类图像,每一类图像都存放在一个以类别名称命名的文件夹下,每张图片的命名格式如下图: 数据预处理 首先分析一下我们在数据预处理阶段的目标和工作流程 获取每张图像以及对应的标签 划分测试集和训练集 通过写数据集类的方式,获取数据集并进一步获得DataLoader 打印图片,验证
阅读全文
摘要:题意 输入输出 思路 用优先队列维护等待进程,同时用两个变量分别维护当前时间和当前进程。 每当一个新进程到来时,看看再其到来之前,又有哪些进程执行完毕。 然后再与当前优先级最高的进程比较优先级,进行简单的分类讨论。 最后不要忘记,所有进程都进来之后,再将他们从优先队列中弹出,直到优先队列为空为止。
阅读全文
摘要:产生背景 随着网络深度的增加,会出现网络退化的现象。 网络退化现象形象化解释是在训练集上的loss不增反降。 这说明,浅层网络的训练效果要好于深层网络 一个想法就是,如果将浅层网络的特征传到深层网络,那么深层网络的训练效果不会比浅层网络差 举个例子,就是假设总共有50层,20层的训练结果就比50层的
阅读全文
摘要:构建路径集和标签集 取出所有路径 import glob all_imgs_path = glob.glob(r"E:\datasets2\29-42\29-42\dataset2\dataset2\*.jpg") 获得所有标签 species = ['cloudy', 'rain', 'shine
阅读全文
摘要:保存训练过程中使得测试集上准确率最高的参数 import copy best_model_wts = copy.deepcopy(model.state_dict()) best_acc = 0 train_loss = [] train_acc = [] test_loss = [] test_a
阅读全文
摘要:resnet预训练模型 resnet模型与之前笔记中的vgg模型不同,需要我们直接覆盖掉最后的全连接层 先看一下resnet模型的结构: 我们需要先将所有的参数都设置成requires_grad = False 然后再重新定义fc层,并覆盖掉原来的。 重新定义的fc层的requires_grad默认
阅读全文
摘要:数据增强 常用数据增强方法: transforms.RandomCrop # 随机位置裁剪 transforms.CenterCrop # 中心位置裁剪 transforms.RandomHorizontalFlip(p = 1) # 随机水平翻转 transforms.RandomVertical
阅读全文