获得徽章 17
- #每日一题#
题目描述:
对于给定的整数序列 A={a1,a2,…,an},找出两个不重合连续子段,使得两子段中所有数字的和最大。
输入格式:
第一行是一个整数 T,代表一共有多少组数据。
接下来是 T 组数据。
每组数据的第一行是一个整数,代表数据个数据 n,第二行是 n 个整数 a1,a2,…,an。
输出格式:
每组数据输出一个整数,占一行,就是 d(A) 的值。
C++代码(线性DP):code.juejin.cn
展开评论点赞 - #每日一题#
题目描述:
n 个小朋友站成一排,等着吃水果。
一共有 m 种水果,每种水果的数量都足够多。
现在,要给每个小朋友都发一个水果,要求:在所有小朋友都拿到水果后,恰好有 k 个小朋友拿到的水果和其左边相邻小朋友拿到的水果不同(最左边的小朋友当然不算数,即最左边的小朋友不包含在 k 个小朋友内)。
请你计算,一共有多少种不同的分发水果的方案。
输入格式:
一行,三个整数 n,m,k。
输出格式:
一个整数,表示合理的分发水果的方案总数量对 998244353 取模后的结果。
C++代码(组合数学):code.juejin.cn
展开赞过评论1 - #每日一题#
题目描述:
约翰的农场可以看作一个二维平面。
农场中有 n 个老鼠,在毁坏着农田。
第 i 个老鼠的位置坐标为 (xi,yi)。
不同老鼠可能位于同一位置。
在 (x0,y0) 处,装有一个双向发射的激光枪,该位置没有老鼠。
激光枪每次发射都可以将穿过点 (x0,y0) 的某一条直线上的所有老鼠都消灭掉。
请问,为了消灭所有老鼠,至少需要激光枪发射几次。
输入格式:
第一行包含三个整数 n,x0,y0,表示共有 n 只老鼠,激光枪的位置为 (x0,y0)。
接下来 n 行,每行包含两个整数 xi,yi,表示第 i 只老鼠的位置为 (xi,yi)。
输出格式:
一个整数,表示激光枪的最少发射次数。
C++代码(最大公约数):code.juejin.cn
展开赞过评论1 - #每日一题#
题目描述:
给定两个整数 n 和 k,请你判断在 [2,n] 的范围内是否存在不少于 k 个质数,满足可以表示为两个相邻质数与 1 的和。
例如,19 满足条件,因为 19=7+11+1。
输入格式:
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含两个整数 n 和 k。
输出格式:
每组数据输出占一行,如果存在不少于 k 个质数满足条件则输出 YES,否则输出 NO。
C++代码(筛质数):code.juejin.cn
展开赞过评论1 - #每日一题#
题目描述:
农夫约翰上周刚刚建好了新的牛棚,并引进了最新的挤奶技术。
不幸的是,由于工程问题,牛棚中的每个单间都不太一样。
第一周,约翰将奶牛们随机分配在了各个单间中。
但是很快他就发现,每头奶牛都只愿意在一部分自己喜欢的单间中产奶。
在过去的一周中,农夫约翰一直在收集有关哪些奶牛愿意在哪些单间产奶的数据。
一个单间只能分配给一头奶牛,当然,一头奶牛也可能只愿意在一个单间中产奶。
给定奶牛的住宿喜好,请你计算,通过合理分配奶牛的住所,最多能够让多少奶牛可以住在自己愿意产奶的单间中。
输入格式:
第一行包含两个整数 N 和 M,分别表示奶牛的数量以及单间的数量。
接下来 N 行,每行记录一个奶牛愿意产奶的单间信息。首先包含一个整数 Si,表示这头奶牛愿意在 Si 个单间中产奶。接下来包含 Si 个不同的整数,表示这些单间的编号。
所有单间的编号为 1∼M。
输出格式:
输出一个整数,表示可以被分配在自己愿意产奶的单间中的奶牛的最大数量。
C++代码(匈牙利算法):code.juejin.cn
展开评论点赞 - #每日一题#
题目描述:
给定一个 n 个结点(编号 1∼n)构成的二叉树,其根结点为 1 号点。
进行 m 次询问,每次询问两个结点之间的最短路径长度。
树中所有边长均为 1。
输入格式:
第一行包含一个整数 T,表示共有 T 组测试数据。
每组数据第一行包含两个整数 n,m。
接下来 n 行,每行包含两个整数,其中第 i 行的整数表示结点 i 的子结点编号。如果没有子结点则输出 −1。
接下来 m 行,每行包含两个整数,表示要询问的两个结点的编号。
输出格式:
每组测试数据输出 m 行,代表查询的两个结点之间的最短路径长度。
C++代码(LCA):code.juejin.cn
展开赞过评论1 - #每日一题#
题目描述:
某个局域网内有 n 台计算机和 k 条 双向 网线,计算机的编号是 1∼n。由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象。
注意:
对于某一个连接,虽然它是双向的,但我们不将其当做回路。本题中所描述的回路至少要包含两条不同的连接。
两台计算机之间最多只会存在一条连接。
不存在一条连接,它所连接的两端是同一台计算机。
因为连接计算机的网线本身不同,所以有一些连线不是很畅通,我们用 f(i,j) 表示 i,j之间连接的畅通程度,f(i,j) 值越小表示 i,j 之间连接越通畅。
现在我们需要解决回路问题,我们将除去一些连线,使得网络中没有回路且不影响连通(即如果之前某两个点是连通的,去完之后也必须是连通的),并且被除去网线的 Σf(i,j) 最大,请求出这个最大值。
输入格式:
第一行两个正整数 n,k。
接下来的 k 行每行三个正整数 i,j,m 表示 i,j 两台计算机之间有网线联通,通畅程度为 m。
输出格式:
一个正整数,表示被除去网线的 Σf(i,j) 的最大值。
C++代码(Prim最小生成树):code.juejin.cn
展开赞过评论1 - #每日一题#
题目描述:
某国家有 n个城市(编号 1∼n)和 m条双向铁路。
每条铁路连接两个不同的城市,没有两条铁路连接同一对城市。
除了铁路以外,该国家还有公路。
对于每对不同的城市 x,y,当且仅当它们之间没有铁路时,它们之间会存在一条双向公路。
经过每条铁路或公路都需要花费 1 小时的时间。
现在有一列火车和一辆汽车同时离开城市 1,它们的目的地都是城市 n。
它们不会在途中停靠(但是可以在城市 n 停靠)。
火车只能沿铁路行驶,汽车只能沿公路行驶。
请你为它们规划行进路线,每条路线中可重复经过同一条铁路或公路,但是为了避免发生事故,火车和汽车不得同时到达同一个城市(城市 n 除外)。
请问,在这些条件的约束下,两辆车全部到达城市 n 所需的最少小时数,即求更慢到达城市 n 的那辆车所需的时间的最小值。
注意,两辆车允许但不必要同时到达城市 n。
输入格式:
第一行包含整数 n 和 m。
接下来 m 行,每行包含两个整数 u,v,表示城市 u 和城市 v 之间存在一条铁路。
输出格式:
一个整数,表示所需的最少小时数。
如果至少有一辆车无法到达城市 n,则输出 −1。
C++代码(Floyd):code.juejin.cn
展开赞过评论1 - #青训营笔记创作活动#
2月20日 打卡day11
主要学习了Docker的基本概念和安装、使用Docker启动一个vue项目,底层原理简介和进阶技巧。评论点赞 - #青训营笔记创作活动#
2月18日 打卡day10
key 的作用:key是唯一标识,为了让diff算法更准确的找到需要被对比的两个节点。
虚拟DOM:虚拟DOM结构就是一个对象而已,其中描述了每一层容器的特征。减少真实DOM结构的操作,对于浏览器来说,减少开销,提高性能。
diff算法:只要数据源发生变化,就一定会触发watcher观察者函数(Object。defineProperty())的回调函数,去驱动视图更新。
为什么不能用index作为key
1. 使用index作为key,会导致diff中的优化失效(降低了复用性,违背了虚拟DOM的初衷)。原本可以复用的东西,不能被复用,徒然增加了性能开销,浪费性能。
2. 使用index作为key时,在删除数据时,因为vue不会深入地区对比子组件的文本内容,所以会错误移除VDOM中的节点(index的值是不固定的)。展开评论点赞