【马蹄集】—— 百度之星 2023
百度之星 2023
目录
- BD202301 公园⭐
- BD202302 蛋糕划分⭐⭐⭐
- BD202303 第五维度⭐⭐
BD202301 公园⭐
难度:钻石 时间限制:1秒 占用内存:64M
题目描述
今天是六一节,小度去公园玩,公园一共 N N N 个景点,正巧看到朋友圈度度熊也在这个公园玩,于是他们约定好一块去景点 N N N。小度当前所在景点编号为 T T T,从一个景点到附近的景点需要消耗的体力是 T E TE TE,而度度熊所在景点编号为 F F F,移动消耗为 F E FE FE。好朋友在一块,赶路都会开心很多,所以如果小度和度度熊一块移动(即在相同位置向相同方向移动),每一步他俩的总消耗将会减少 S S S。
求他俩到景点 N N N 时,所需要的总消耗最少是多少?
格式
输入格式:
第一行三个数值 T E , F E , S TE,\ FE,\ S TE, FE, S,分别代表小度移动消耗值,度度熊移动消耗值,一起移动的消耗减少值。 1 ≤ T E , F E , S ≤ 4000 , S ≤ T E + F E 1\le TE,\ FE,\ S\le4000,\ S\le TE+FE 1≤TE, FE, S≤4000, S≤TE+FE;
第二行四个数值 T , F , N , M T,\ F,\ N,\ M T, F, N, M,分别代表小度出发点,度度熊出发点,目标节点,总路径数。 1 ≤ T , F , N , M ≤ 40000 1\le T,\ F,\ N,\ M\le40000 1≤T, F, N, M≤40000。
接下来 M M M 行,每行两个整数 X , Y X,Y X,Y,代表连通的两个景点。 1 ≤ X , Y ≤ N 1\le X,Y\le N 1≤X,Y≤N。
输出格式:
一个整数,即总消耗最小值。如果不能到达 N N N,输出-1
。样例 1
输入:
4 4 3
1 2 8 8
1 4
2 3
3 4
4 7
2 5
5 6
6 8
7 8输出:
22
相关知识点:
广度优先搜索
题解
这道题给出了各点之间的可达关系和代价(不同角色的代价不同),最终要求出两个人到终点所需消耗的最低能量。对于这种点之间为可达关系而不是距离的走迷宫问题,其对应图的邻接关系通常是个稀疏阵,这时,切不可用二维数组来存放该图,而要用邻接表。一方面可避免爆内存的风险,另一方面则能大大加快对图的搜索速度。
接下来我们思考如何寻找具有最低能耗的路线。由于题目指出“如果小度和度度熊一块移动,每一步他俩的总消耗将会减少”,因此从贪心的角度出发,自然是越早碰面越有利于降低总能耗。但是,存在一种情况,即在追求“尽早碰面”的过程中付出了巨大代价,那么这样的碰面还不如各自走自己的。因此,对本题寻找最低能耗的路线而言,很难通过贪心的思路来求解。
在这样的情况下,最简单有效的办法就是枚举。即逐个枚举中间节点作为碰面点,并以此计算在这种方案下的总能耗。最终,输出所有方案里的最低能耗即可。由于每次枚举一个点作为见面点时,都需要计算 T 和 F 到 O 的距离,以及 O 到 N 的距离。为了降低时间开销,我们可事先算出 T、F 到其余各点的距离,以及各点到终点 O 的距离。这样一来,每次在枚举时就不再需要单独计算各段距离,而是直接取值。
下面直接给出基于以上思路得到的求解本题的完整代码:
/*BD202301 公园 深度优先搜索
*/
#include<bits/stdc++.h>
using namespace std; const int MAX = 4e4+5;
// 存放各点之间的可达关系(稀疏阵)
vector<int> v[MAX];
// 分别存放从T、F 和N到其他所有点之间的最短距离
int pt[MAX], pf[MAX], pn[MAX];// 计算从 start 出发到其余所有点的最短距离
void bfs(int start, int dis[])
{// 初值统一赋为一个较大的值for(int i=0; i<MAX; i++) dis[i] = MAX;// 广度优先搜索求最短距离 queue<int> q; q.push(start); dis[start] = 0;while(!q.empty()){int cur = q.front(); q.pop();// 遍历邻接点 for(int i=0; i<v[cur].size(); i++) {int neighbor = v[cur][i]; if(dis[neighbor] > dis[cur]+1) {q.push(neighbor);dis[neighbor] = dis[cur] + 1;}}}
}int main()
{// 获取输入int TE, FE, S, T, F, N, M, X, Y;cin>>TE>>FE>>S;cin>>T>>F>>N>>M;for(int i=0; i<M; i++){cin>>X>>Y;v[X].push_back(Y);v[Y].push_back(X);}// 寻找从小度(T)、小熊(F)到其余各点的最短路径以及各点到目的地(N)的最短距离 bfs(T, pt), bfs(F, pf), bfs(N, pn);// 若两个点都无法到达终点,则输出 -1 if (pt[N] == MAX || pf[N] == MAX)cout<<"-1"<<endl;else{// 最坏情况下各自单独去终点 int ans = pt[N] * TE + pf[N] * FE, tmp; // 枚举所有点作为见面地点,查找是否存在更低的能量消耗情况 for (int i = 1; i < N; i++) { tmp = pt[i] * TE + pf[i] * FE + pn[i] * (TE+FE-S);ans = min(ans, tmp);}cout<<ans<<endl;}return 0;
}
BD202302 蛋糕划分⭐⭐⭐
难度:星耀 时间限制:1秒 占用内存:64M
题目描述
小度准备切一个蛋糕。这个蛋糕的大小为 N × N N\times N N×N,蛋糕每个部分的重量并不均匀。
小度一共可以切 K K K 刀,每一刀都是垂直或者水平的,现在小度想知道在切了 K K K 刀之后,最重的一块蛋糕最轻的重量是多少。
格式
输入格式:第一行包含 N N N 和 K K K。其中: 2 ≤ N ≤ 15 , 1 ≤ K ≤ 2 N − 2 2\le N\le15,\ \ 1\le K\le2N-2 2≤N≤15, 1≤K≤2N−2;
第二到第 1 + N 1+N 1+N 行每行 N N N 个数字,描述这一行蛋糕每个位置的重量 W W W 。其中: 0 ≤ W ≤ 1000 0\le W\le1000 0≤W≤1000。
输出格式:输出一个整数,最重的一块蛋糕最轻是多少。。样例 1
输入:
3 2
1 1 2
1 1 2
2 2 5输出:
5
相关知识点:
贪心
、二分查找
、二维前缀和
题解
首先要充分理解题目所说 “最重的一块蛋糕最轻的重量是多少” 的含义。对一个蛋糕按其固有分块线进行切割,势必会得到若干子块,在这些子块中肯定有一个重量最大的。例如,对如下蛋糕采取图示切割方案时,得到四个子块中重量最大的为 7:
但是,我们发现还存在一种切割方式能降低最重子块的重量:
还有没有能继续降低最重子块重量的切割方案呢?对本题而言,这是最终解,于是输出 5。
基于此可知,最简单的做法就是枚举全部的切割方案,并算出各方案下的最重子块,然后取这些最重质量中的最小值即可。但是,极限情况下,最多的切割方案高达 C 14 2 28 = C 196 28 C_{{14}^2}^{28}=C_{196}^{28} C14228=C19628 种,必定超时。因此我们不能直接对切割方案进行线性枚举。这时候通常要想到二分法,但此时二分的目标将变为“最重子块的重量”。即寻找一个重量,使得不存在任何切割方案能切出比该重量更低的子块蛋糕。从题目给出的数据可知,极限情况下最大的重量为 1000 × 15 × 15 1000\times15\times15 1000×15×15(即,整个蛋糕各子块均为最大重量 1000,且一刀不切)。这在 log 2 x \log_2{x} log2x 级下,将不会超过 17 次枚举。这样一来,我们就将原任务转换为“给定一个重量,问是否存在一种切割方式使得其切出的各子块都不大于该值”。而该过程最多进行 17 次。
现在我们思考,如何判断某个重量是否存在一种满足以上要求的切割方案。这还是涉及到对蛋糕进行切割的问题。但是我们现在不需要求“指定切割次数下的各切割方案”,而是找一种满足要求的解。这是一个证存在的问题,因此我们可采取贪心的思路进行求解。
整体的切割思路如下:
- 按行枚举切割方案;
- 对每一个按行切割的方案按列进行切割,并统计切割得到的子块重量。在切割满足要求的情况下(即总的切割次数不能超过 K K K),算出切割出的各子块重量。若存在被切割出的子块重量超过二分法给定的重量限制,则说明当前切割方法是不成立的,于是跳过此列切割并继续查找(这一操作类似剪枝的作用,直接否定了一类切割方案,大大降低枚举次数)。若能从某一次列切割中顺利遍历全部列(即表示找到了一个切割方案使得其切出的所有子块重量均小于二分法给定的重量限制),则直接返回真。
- 枚举结束,说明没有找到任何切割方法能使最重的一块蛋糕最轻的重量小于给定值,则返回假。
下面介绍如何按行枚举切割方案。注意到一件事,对于一个长度为 n n n 的格子,其形成的空隙数量为 n − 1 n-1 n−1 ,这就是说有 n − 1 n-1 n−1 个位置可进行切割。对每个位置有切与不切两种选择,因此由这 n − 1 n-1 n−1 个位置可产生的切割方案共有 2 n − 1 2^{n-1} 2n−1 种。实际上,这 2 n − 1 2^{n-1} 2n−1 种不同的切割方案正好可用其对应的二进制位来表达,如下图所示。而由十进制数转换为二进制数的过程正好可用于记录该数对应的切割方案。需要注意的是,在枚举按行切割的方案数时,一旦某种方案的切割次数超过了给定的切割次数 K K K 时,就需要直接跳过此切割方案(这也相当于是进行剪枝)。
有了具体的横向切割方案,接下来便能根据贪心的思想来寻找满足“使切出的子块均不大于给定重量”这一要求的切割方案,具体的流程如下:
- 遍历全部列(尝试在纵向进行划分,包括了不对列进行切割的情况);
- 对每一列,从上到下计算其在当前横向切割方案下的产生的全部子块重量(这一步涉及到求矩阵元素和的操作)。由于我们要使“最重的一块蛋糕最轻”,因此我们在这一步求解时,需要在满足重量不大于给定值的前提下尽可能重(即贪心)。在这样的前提下,我们动态向右累加子块重量,一旦某次添加的列(单列块)使得该子块重量已经超过给定重量,则表示必须在此列前的位置切割,否则那样的切割方案必定不满足要求。另外,若“单列块”本身的重量超过了给定重量,则基于目前行切割方案进行的任何切割都不可能得到满足条件的切割方式,这种情况下可直接跳过目前的行切割方案(为此,需要单独设计一个标记变量)。
在上述枚举过程中,涉及到一个求二维矩阵中子阵元素之和的过程(即计算子块的重量)。显然,我们不可能每次都单独算子阵元素和。于是,这就需要用二维前缀和数组
。有关二维前缀和的构建和求和在前面已经讲过,在此就不过多赘述(二位前缀和数组传送门)。
本题是一道综合性非常强的例题,涉及到二分法查找、贪心、二维前缀和等相关知识,是一道非常值得练习的题目!
下面直接给出基于以上思路得到的求解本题的完整代码:
/*BD202302 蛋糕划分 贪心、二分查找、二维前缀和
*/
#include<bits/stdc++.h>
using namespace std; const int N = 20;
int n, K, maxQuality;
int ary[N][N], prefixAry[N][N];// 根据二维前缀和数组计算子块和
int getPrefixSum(int max_x,int max_y,int min_x,int min_y)
{return prefixAry[max_x][max_y] - prefixAry[min_x-1][max_y] - prefixAry[max_x][min_y-1] + prefixAry[min_x-1][min_y-1];
}// 判断在 K 刀之内是否存在一种切割方案使得所有蛋糕的质量都小于 quality
bool check(int quality)
{// 如果最重的子块比 quality 大,则不可能存在切割方案使各块小于 qualityif(maxQuality > quality) return false;// 纵向切割方案对应的二进制表达形式容器int col[N] = {0};// 横向切割时,对应子块的累计元素和,以及该位置的元素值int sum_col[N], cur_col[N];// 枚举横向切割的方案(n 个块之间有 n-1 个切割位置,对应就有 2^(n-1) 种切割方式)int limit = 1 << (n-1), tmp, pos, cutCnt;for(int i=0; i<limit; i++){// 切割点容器vector<int> v;tmp = i;// 记录切割位置pos = 0;// 记录切割次数cutCnt = 0;// 取出十进制数 i 对应的二进制编码中所表示的切割方案while(tmp){pos ++;if(tmp & 1){v.push_back(pos);cutCnt++;}tmp /= 2;}// 如果该切割方案的切割次数超过了 K 则跳过if(cutCnt > K) continue;v.push_back(n);// 不合适的横向切割标记,用于提前跳出一些始终不满足要求的横向切割方案 int fail = 0;// 初始化memset(col, 0, sizeof(col));memset(cur_col,0,sizeof(cur_col));memset(sum_col,0,sizeof(sum_col));int top;// 按列枚举被横向切割的蛋糕质量,如果超过了 quality 就必须进行切割for(int j=1; j<=n; j++){// 当前块的最小行下标top = 1;// 对于第 j 列,从上到下枚举计算其产生的子块for(int k=0; k<v.size(); k++){// 当前块的最大行下标int down = v[k];// 当前宽度为 1 的块的重量int now = getPrefixSum(down,j,top,j);// 若切割得到子块的质量位超过 quality 就需要重新切割if(now > quality){fail = 1;break;}// 否则就继续沿横向累加sum_col[k] += now;// 缓存当前列的数据,防止被切以形成新块cur_col[k] = now;// 若前一列为切割点,则说明当前列的上层块已经满足切割条件,则重新开启新列计数 if(col[j-1])sum_col[k] = now;// 第 j 块 i 列累加超过了 quality,说明当前列不能被累加,因此需进行切割if(sum_col[k] > quality){// 记录竖切位置col[j-1] = 1;sum_col[k] = now;// 更新 k 横块以上的第 j 列的重量,不再累加前面的for(int p=0; p<k; p++)sum_col[p] = cur_col[p];}// 更新最小行的行号top = down+1; }if(fail == 1) break;}if(fail == 1) continue;// 遍历完整个列切割过程,累加列切割次数 for(int p=1; p<n; p++)if(col[p]) cutCnt++;// 若总切割次数不大于 K 则说明找到一个满足要求的切割方案 if(cutCnt <= K) return true;}// 不存在任何切割方案满足要求 return false;
}int main()
{// 获取输入cin>>n>>K;for(int i=1; i<=n; i++)for(int j=1; j<=n; j++){cin>>ary[i][j];maxQuality = max(maxQuality, ary[i][j]);// 构建二维前缀和数组prefixAry[i][j] = ary[i][j] + prefixAry[i-1][j] + prefixAry[i][j-1] - prefixAry[i-1][j-1];}// 二分查找一个质量,使得该质量是划分能得到的最小值int l = 0, r = 1000*15*15, m;while(l <= r){m = (l+r) >> 1;// 若存在一种切法使所有块都小于 m,说明还存在更小切块的方案if(check(m)) r = m-1;// 否则说明当前切法是在保证质量尽可能大的情况下的最小切割方案else l = m+1;}// 输出结果cout<<l<<endl;return 0;
}
BD202303 第五维度⭐⭐
难度:星耀 时间限制:1秒 占用内存:64M
题目描述
零维是点,点动成线;
一维是线,线动成面;
二维是面,面动成体;
三维是体,体动成史;
四维是史,史动???
现在人类企图理解第五维度。
小度是第五维度的一位智者。一天,小度发现人类的许多科学家在试图理解第五维度,人类是四维生物,若是他们理解了第五维度,很可能也会到来第五维度的空间,这显然是小度不愿意看到的(毕竟哪里都有人口数量的问题….)所以小度希望他们尽可能晚的理解第五维度,因此,小度用更高维度的视角把所有人类中在理解第五维的科学家都看到了,而这些科学家的智商会不一样,所以他们的理解速度 V i V_i Vi 也会不一样;并且,他们开始理解的时间点 S i S_i Si 也不一样。理解速度 V i V_i Vi 描述为每过单位时间可获得 V i V_i Vi 个单位理解力,也就是说在 S i + 1 S_i+1 Si+1 的时间点该科学家会第一次贡献 V i V_i Vi 的理解力。我们定义理解力总数超过 m m m 时理解了第五维度。 小度因为维度更高,可以使用时间悖论来给人类一次重大的打击,小度可以让任意一位科学家在任意一个时间点消失,所以他接下来的理解不会继续;而且人类不会记得他,所以他之前的贡献会消失。因为小度能力有限,所以小度只能使用一次暂时悖论。现在求在尽可能晚的情况下,人类理解第五维度的最早时间点。时间点初始为 0,但显然,没有科学家能够在 0 时刻有贡献。
格式
输入格式:第一行给出一个整数 n n n 和一个整数 m m m,表示有 n n n 个科学家,在理解力总数超过 m m m 时理解了第五维度;
第二行至第 n + 1 n+1 n+1 行:每行两个整数 S i S_i Si 和 V i V_i Vi 。
对于 100% 的数据: 1 ≤ n ≤ 10 5 , m ≤ 2 × 10 9 , 0 ≤ S i ≤ 2 × 10 9 , 0 ≤ V i ≤ 10 3 1\le n\le{10}^5,m\le2\times{10}^9,0\le S_i\le2\times{10}^9,0\le V_i\le{10}^3 1≤n≤105,m≤2×109,0≤Si≤2×109,0≤Vi≤103。
输出格式:一行,包含一个整数 T T T 表示在尽可能晚的情况下,人类理解第五维度的最早时间点。若人类永远无法理解第五维度,则输出-1
。样例 1
输入:
3 10
0 1
4 6
5 1输出:
8
样例 2
输入:
3 10
0 0
4 0
5 1输出:
-1
备注
对于第一个样例,使得 S i = 4 , V i = 6 {\ S}_i=4,V_i=6 Si=4,Vi=6 的科学家消失,则每个时刻总共理解力为:0 1 2 3 4 5 7 9 11,在时刻 8 超过 m = 10 m=10 m=10,因此输出 8;对于第二个样例,人类永远无法理解第五维度,因此输出
-1
。
相关知识点:
贪心
题解
首先对本题的意思进行一个简化:输入 n n n 个科学家开始理解第五维度的时间点 S i {\ S}_i Si 以及其单位时间能得到的理解力 V i V_i Vi (均为非负整数),那么随着时间的推移,全部科学家的总理解力肯定是不断增加的。一旦总理解力达到了 m m m ,则认为人类能理解第五维度。但是,现在有一个具有上帝视角的人,他总能找到在这些科学家中具有最高理解力的那位并将其从抹除(则他的理解力也将消失),那么这时候人类还能理解第五维度么?如果能,则输出在这样的前提下人类理解第五维度的最早时间;否则输出 -1。
本题中, m m m 的最大取值为 2 × 10 9 2\times{10}^9 2×109 ,那么在极限情况下(只有一个科学家且 S i = 0 , V i = 1 {\ S}_i=0,\ V_i=1 Si=0, Vi=1)的最长时间也是 2 × 10 9 2\times{10}^9 2×109 。可以看出,如果直接枚举时间线算出人类的总理解力,并在抹除具有最高理解力的人后判断与 m m m 的大小关系是极易超时的。在这种情况下,一定要敏锐地想到二分法查找。
对于每一次查找的时间 T T T,可采取下式求解全部人类的总理解力:
for(int i=0; i<n; i++){if(T > S[i]){// 累加sum_comp += ((long long)T - S[i]) * V[i];}
}
注意,题目要求在尽可能晚的情况下,人类理解第五维度的最早时间点。而尽可能晚,就意味着每次都要抹除此刻对人类理解力共享最大的科学家。为此,我们可以在求全部人类总理解力的同时,记录其中的最大理解力,并在最后减去该值即可,于是有:
// 判断在指定时间下,人类能否理解第五维度
bool check(int T)
{// 在指定时间下人类的理解力总和、这些理解力中的最大值 long long sum_comp = 0, max_comp = 0, tmp;// 计算所有人的理解力总和,并找到其中的最大值for(int i=0; i<n; i++){if(T > S[i]){// 计算当前第 i 个人的获取的理解力 tmp = ((long long)T - S[i]) * V[i];// 累加sum_comp += tmp;// 找出具有最大贡献的理解力 max_comp = max(max_comp, tmp);}}// 要求尽可能晚的情况下,那就把具有最大共享的理解力去除即可 return (sum_comp - max_comp > m);
}
下面给出基于以上思路得到的求解本题的完整代码:
/*BD202303 第五维度 贪心、二分法
*/ #include<bits/stdc++.h>
using namespace std;const int N = 1e5+5;
// 各科学家的理解力起始数组、单位时间增长数组
int S[N], V[N];
// 科学家数量和需要理解五维空间的总理解力
int n, m; // 判断在指定时间下,人类能否理解第五维度
bool check(int T)
{// 在指定时间下人类的理解力总和、这些理解力中的最大值 long long sum_comp = 0, max_comp = 0, tmp;// 计算所有人的理解力总和,并找到其中的最大值for(int i=0; i<n; i++){if(T > S[i]){// 计算当前第 i 个人的获取的理解力 tmp = ((long long)T - S[i]) * V[i];// 累加sum_comp += tmp;// 找出具有最大贡献的理解力 max_comp = max(max_comp, tmp);}}// 要求尽可能晚的情况下,那就把具有最大共享的理解力去除即可 return (sum_comp - max_comp > m);
}// 二分查找使科学家能理解的最早时间
int BinarySearch()
{// 能理解的极限情况下,只有 1 个科学家,理解力最小为 1,则最长的时间为 2e9long long l = 1, r = 2e9;int ans = -1;// 二分查找 while(l < r){int mid = l+r >> 1;// 判断该时间下(尽可能晚),人类能否理解第五维度if(check(mid)){r = mid;ans = mid; }else{l = mid + 1;} }return ans;
}int main( )
{// 录入数据 cin>>n>>m;for(int i=0; i<n; i++)cin>>S[i]>>V[i];// 输出使科学家能理解的最早时间cout<<BinarySearch()<<endl;return 0;
}
END
相关文章:

【马蹄集】—— 百度之星 2023
百度之星 2023 目录 BD202301 公园⭐BD202302 蛋糕划分⭐⭐⭐BD202303 第五维度⭐⭐ BD202301 公园⭐ 难度:钻石 时间限制:1秒 占用内存:64M 题目描述 今天是六一节,小度去公园玩,公园一共 N N N 个景点&am…...

大数据毕业设计选题推荐-无线网络大数据平台-Hadoop-Spark-Hive
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

【jvm】虚拟机之本地方法接口与本地方法库
目录 一、本地方法1.1 说明1.2 代码示例1.3 为什么要使用native method 二、现状 一、本地方法 1.1 说明 1.一个Native Method就是一个Java调用非Java代码的接口。 2.一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。 3.这个…...

HDFS系统操作命令大全
一,前言 HDFS作为分布式存储的文件系统,有其对数据的路径表达方式 HDFS同linux系统一样,均是以/作为根目录的组织形式 linux:/usr/local/hello.txt HDFS:/usr/local/hello.txt 二,如何区分呢? L…...

雷尼绍探头编程 9810
9810 安全移动 使用参数 参数含义#9移动速度 F#117移动速度 F#148#24X 移动 终点绝对坐标#25Y 移动 终点绝对坐标#26Z 移动 终点绝对坐标#123机床移动到终点的绝对坐标 与 终点的理论值 的 差#5041当前绝对坐标 X 值#5042当前绝对坐标 Y 值#5043当前绝对坐标 Z 值#116刀具…...

el-table 列分页
<template><div><el-table:data"tableData":key"tampTime"style"width: 100%"><el-table-columnprop"name"label"姓名"width"180"></el-table-column><el-table-columnprop&quo…...

APP攻防--ADB基础
进入app包 先使用 adb devices查看链接状态 手机连接成功的 adb shell 获取到手机的一个shell 此时想进入app包时没有权限的,APP包一般在data/data/下。没有执行权限,如图 Permission denied 权限被拒绝 此时需要手机root,root后输入 su …...

【Linux】第十站:git和gdb的基本使用
文章目录 一、git的基本操作1.gitee新建仓库注意事项2.git的安装3.git的克隆4.git的add5.git的commit6.git的push7.git log8.git status9. .gitignore 二、Linux调试器---gdb1.背景2.gdb安装、进入与退出3.list/l4.r/run运行程序5. break/b 打断点6.info/i b 查看断点7.delete/…...

Single Image Haze Removal Using Dark Channel Prior(暗通道先验)
去雾算法都会依赖于很强的先验以及假设,并结合相应的物理模型,完成去雾过程。本文作者何凯明及其团队通过大量的无雾图像和有雾图像,归纳总结出无雾图像在其对应的暗通道图像上具有极低的强度值(趋近于0),并…...

力扣382.链表随机节点(java利用数组随机返回节点值)
Problem: 382. 链表随机节点 文章目录 思路解题方法复杂度Code 思路 注意链表与数组的特性,对于随机访问读取的操作利用数组可以较方便实现,所以我们可以将链表中的节点值先存入到数组中最后再取出随机生成节点位置的值。 解题方法 1.生成List集合与Rand…...

在jupyter中使用R
如果想在Jupyter Notebook中使用R语言,以下几个步骤操作可行: 1、启动Anaconda Prompt 2、进入R的安装位置,切换到R的安装位置:D:\Program Files\R\R-3.4.3\bin,启动R,具体代码操作步骤如下,在…...

2023(第四届)江西开放数据创新应用大赛等你来挑战!
邀请函 这是一个友好的邀请。无论你是数据领域的专家、学生还是爱好者,我们都欢迎你加入这个平台。这不仅仅是一场比赛,更是一个交流、学习和展示自己的机会。 丰厚奖金:我们为参赛者准备了总计15W的奖金池,期待你的才华在这里得…...

2023-mac rz sz 安装
之前安装过一次,没问题,这次按照之前教程装了就不管上传下载都会卡住; step1: brew install lrzsz step2:在/usr/local/bin 路径下配置两个sh,之前从网上找到的直接用都不对,下面这个是调试过的正式可用的 iterm2…...

使用Matplotlib绘画3D图时运行不出结果,也不报错,图片是空白 !!
1.问题: 我使用如下代码运用matplotlib中的Axes3D绘画3D图,但是运行出来的结果是空白。 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D #导入3D包 fig plt.figure() #窗口 #ax Axes3D(fig) # X, Y …...

Matlab函数——find
介绍 当你需要返回某个数组中符合指定条件的所有元素的索引时,可以使用 MATLAB 中的 find 函数。 find 函数语法: indices find(X) indices find(X, k) indices find(X, k, first) indices find(X, k, last) 其中,X 是一个数组…...

mac安装python3
文章目录 1. 安装1.1 brew安装(失败)2. 下载安装包 2. 查看版本3. 配置 1. 安装 1.1 brew安装(失败) brew install python3下载完成后报错:Error: python3.10: unknown or unsupported macOS version: :dunno 解决&a…...

【星海出品】VUE(一)
Windows安装nvm控制器 Windows里找都PowerShell。右击点击管理员运行。 1.安装choco Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString(https://chocolatey.org/install.ps1))2.安装NVM choco install nvm 3.查看可…...

Stable Diffusion 的提示词使用技巧
推荐Stable Diffusion自动纹理工具: DreamTexture.js自动纹理化开发包 什么是提示语? 提示语是人工智能中的一个重要组成部分,尤其是自然语言处理 (NLP)。在AI自人工智能中,想要获得好的效果,简…...

Hook函数
在嵌入式系统中,hook函数(也被称为钩子函数)是一种特殊类型的函数,它会在特定的事件发生时被操作系统内部调用。例如,在实时操作系统(RTOS)中,如果删除了一个任务,就会调…...

USB简介系列-01
文章目录 USB简介一、电气USB简介 通用串行总线(USB)是由Compaq,Intel,Microsoft和NEC开发的规范,后来惠普,朗讯和飞利浦加入。这些公司成立了 USB Implementers Forum, Inc 作为一家非营利性公司,以发布规范并组织 USB 的进一步开发。 USB-IF的目的是为当时使用的PC…...

算法小白的心得笔记:比较小数点后五位,而不会受到浮点数精度问题的影响。
epsilon 来比较浮点数 double epsilon 1e-6; // for 6 decimal places for (const auto &ratio : colorRatio) {std::cout << "__" << inum << "__" << ratio << " ";if ((inum - 1) % 10 0){std::cout &l…...

11月起,33个省份纳入数电票开票试点范围内,发票无纸化已是大势所趋!
10月底,北京、贵州、山东(不含青岛市)、湖南、宁夏5个地区相继发布开展数电票试点工作的通知,至此,全国已有33个省份纳入数电票开票试点范围内。根据上述5地区发布的相关公告,11月1日将正式推行“数电票”开…...

NLP之Bert多分类实现案例(数据获取与处理)
文章目录 1. 代码解读1.1 代码展示1.2 流程介绍1.3 debug的方式逐行介绍 3. 知识点 1. 代码解读 1.1 代码展示 import json import numpy as np from tqdm import tqdmbert_model "bert-base-chinese"from transformers import AutoTokenizertokenizer AutoToken…...

matlab中的mapminmax函数初步理解和应用
matlab中的mapminmax函数初步认识 一、mapminmax 顾名思义:映射最大最小 二、语法及举例 2.1 语法1 [Y,PS] mapminmax(X) 将矩阵X映射形成矩阵Y, Y中每行中的最小值对应-1,最大值对应1。PS是一个包含映射信息的结构体。 举例: clc cle…...

svc和ingress的关系
在Kubernetes中,SVC有三种类型,分别是ClusterIP、NodePort和LoadBalancer。而Ingress则是一种服务类型的扩展,它主要用于处理HTTP和HTTPS流量,并提供了对集群内部服务的路由和负载均衡功能。 下面简要介绍SVC的三种类型和Ingress…...

可以使用以下代码对数据库查询结果进行分组统计
public static void GroupAndStatistic(string connectionString, string query) {// 创建一个SQLSugar实例var db new SQLSugarClient(connectionString);// 使用QueryHelper类执行查询var dataTable db.Query<DataRow>().From(query).ExecuteDataTable();// 使用LINQ…...

win10提示mfc100u.dll丢失的解决方法,快速解决dll问题
在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“mfc100u.dll丢失”。那么,mfc100u.dll是什么?mfc100u.dll是Microsoft Visual C Redistributable文件之一,它包含了用于MFC (Microsoft Foundation Class…...

zookeeper:启动原理
主类: QuorumPeerMain, 其中调用了main对象的initializeAndRun方法, 首先定义了QuorumPeerConfig对象,然后调用了parse方法,parse方法代码如下: 其中调用的parseProperties方法的代码如下: 可以看到&am…...

kafka问题汇总
报错1: 解决方式 1、停止docker服务 输入如下命令停止docker服务 systemctl stop docker 或者service docker stop1 停止成功的话,再输入docker ps 就会提示出下边的话: Cannot connect to the Docker daemon. Is the docker daem…...

C#使用随机数模拟英雄联盟S13瑞士轮比赛
瑞士轮赛制的由来 瑞士制:又称积分循环制,最早出现于1895年在瑞士苏黎世举办的国际象棋比赛中,故而得名。其基本原则是避免种子选手一开始就交锋、拼掉,是比较科学合理、用得最多的一种赛制;英语名称为Swiss System。…...