【算法每日一练]-图论(保姆级教程篇12 tarjan篇)#POJ3352道路建设 #POJ2553图的底部 #POJ1236校园网络 #缩点
目录:
今天知识点
加边使得无向图图变成双连通图
找出度为0的强连通分量
加边使得有向图变成强连通图
将有向图转成DAG图进行dp
POJ3352:道路建设
思路:
POJ2553:图的底部
思路:
POJ1236校园网络
思路:
缩点:
思路:
POJ3352:道路建设
由于道路要维修,维修时候来回都不能走,现要在各个景点间建设新道路以便维修时候也能保证任何两个景点之间可以相互到达,求最少的新道路数量
任何一对景点间最多只能在它们之间有一条道路(没有重边)。道路一开始是联通的
输入:
3 3
1 2
2 3
1 3
或
10 12
1 2
1 3
1 4
2 5
2 6
5 6
3 7
3 8
7 8
4 9
4 10
9 10
思路:
先求解边双连通分量,然后缩点,然后通过加边再把新图变成双连通图。
加边原理是这样的:
先统计叶节点个数为k,(k+1)/2就是要建的边数。因为在树中,给叶节点加边一定会产生环
说一下tarjan后的操作
for(int u=1;u<=n;u++)for(int i=head[u];i;i=e[i].next){int v=e[i].to;if(low[u]!=low[v]) deg[low[u]]++;//遍历新图的边(其实就是旧图的桥)
//有重边也要记录。low[u]就是连通分量号,每个连通分量中只有桥的点才有度}int leaf=0;
// for(int i=1;i<=n;i++){
// cout<<i<<' '<<deg[i]<<' '<<low[i]<<'\n';//看详情
// }for(int i=1;i<=n;i++){//检查每个连通分量号的度(一定不为零)if(deg[i]==1) leaf++;//度是1就是叶子}cout<<(leaf+1)/2<<'\n';
首先是缩点:low是连通分量号,把度(无向图没有入度出度之分)统计到桥点身上(很像并查集中的缩点到祖宗点身上),注意我们这种缩点的过程肯定会遇到重边。此题中的重边是不能去掉的,否则叶节点会统计错误!!!
然后统计度为1就是叶子就行。
对于重边:有时候必须要,有时候不影响,有时候也必须去重。要仔细分析!
#include <bits/stdc++.h>//无向图的桥
using namespace std;
const int maxn=1000+5;
int n,m;
int head[maxn],cnt;
struct node{int to,next;}e[maxn*2];
int low[maxn],dfn[maxn],deg[maxn],num;//deg是度(无向图没有入度和出度之分)void add(int u,int v){ e[++cnt]=(node){v,head[u]};head[u]=cnt;}void tarjan(int u,int fa){dfn[u]=low[u]=++num;//初始化for(int i=head[u];i;i=e[i].next){int v=e[i].to;if(v==fa) continue;//不可以走父子边回去if(!dfn[v]){//没访问过就递归访问tarjan(v,u);low[u]=min(low[u],low[v]);//low是自己或子孙能走回的最小dfn}else{//可以从非父子边回去就要获取dfn值,就是该点能回到的最小dfnlow[u]=min(low[u],dfn[v]);}}
}void init(){memset(head,0,sizeof(head));memset(low,0,sizeof(low));memset(dfn,0,sizeof(dfn));memset(deg,0,sizeof(deg));cnt=num=0;
}int main(){while(cin>>n>>m){init();int u,v;while(m--){cin>>u>>v;add(u,v);add(v,u);}tarjan(1,0);//求边双连通分量for(int u=1;u<=n;u++)for(int i=head[u];i;i=e[i].next){int v=e[i].to;//遍历新图的边(其实就是旧图的桥)if(low[u]!=low[v]) deg[low[u]]++;
//有重边也要记录。low[u]就是连通分量号,每个连通分量中只有桥的点才有度}int leaf=0;
// for(int i=1;i<=n;i++){
// cout<<i<<' '<<deg[i]<<' '<<low[i]<<'\n';//看详情
// }for(int i=1;i<=n;i++){//检查每个连通分量号的度(一定不为零)if(deg[i]==1) leaf++;//度是1就是叶子}cout<<(leaf+1)/2<<'\n';}
}
POJ2553:图的底部
有向图中若v可以到的任何一个u,u也可以到v,则v是一个sink点,图的底部是由所有sink点构成的,按顺序输出所有sink点编号,没有sink就输出一个空行
输::
3 3
1 3 2 3 3 1
2 1
1 2
0
思路:
你只需要输出出度为0的连通分量中的所有点编号即可。
DAG图的出度为0的节点相当于终点
for(int u=1;u<=n;u++)for(int i=head[u];i;i=e[i].next){//对所有边进行判断是不是连接着两个分量int v=e[i].to;if(be[u]!=be[v]){//有重边out[be[u]]++;//缩点}}
int f=1;
for(int i=1;i<=n;i++){if(!out[be[i]]){//输出出度为0的连通分量中的点if(f) f=0;else cout<<" ";//一个数前面有个空格cout<<i; }
}
不同于无向图,有向图的连通分量号我们用一个be数组存起来
然后对所有边进行判断是不是连接着两个分量,然后对新树中的边统计出度,输出出度为0的连通分量中的点
#include <bits/stdc++.h>
using namespace std;
const int maxn=5050;
bool ins[maxn];//标记是否在栈中
int n,m;
int head[maxn],be[maxn],out[maxn];//be是属于哪个连通分量,out是缩点的出度
int low[maxn],dfn[maxn],num,id,cnt;
stack <int> s;
struct node{int to,next;}e[maxn*2];void add(int u,int v){ e[++cnt]=(node){v,head[u]};head[u]=cnt;}void tarjan(int u){dfn[u]=low[u]=++num;//dfn访问序号,low是能走回到的最早的dfnins[u]=1;s.push(u);//第一次访问节点时候入栈for(int i=head[u];i;i=e[i].next){int v=e[i].to;if(!dfn[v]){//没访问过就递归访问tarjan(v);low[u]=min(low[u],low[v]);//获取孩子的最小的low值 }else if(ins[v]){//已经访问过且在栈中获取dfn号low[u]=min(low[u],dfn[v]);}}if(low[u]==dfn[u]){//low[u]==dfn[u]时,则从栈中不断弹出节点,直到x出栈停止。弹出的节点就是同一个连通分量的int v;do{//一定要先执行再判断v=s.top();s.pop();be[v]=id;//把这些弹出的点标记同一个id号(连通分量号)ins[v]=0;}while(v!=u);//直到是自己为止id++;}
}void init(){memset(head,0,sizeof(head));memset(low,0,sizeof(low));memset(ins,0,sizeof(ins));memset(dfn,0,sizeof(dfn));memset(out,0,sizeof(out));memset(be,0,sizeof(be));cnt=num=0;id=1;
}int main(){while((cin>>n)&&n){//点数cin>>m;//边数init();int u,v;while(m--){cin>>u>>v;add(u,v);}for(int i=1;i<=n;i++){if(!dfn[i]) tarjan(i);//有向图}for(int u=1;u<=n;u++)for(int i=head[u];i;i=e[i].next){int v=e[i].to;if(be[u]!=be[v]){//有重边out[be[u]]++;//缩点}}int f=1;for(int i=1;i<=n;i++){if(!out[be[i]]){//输出出度为0的连通分量中的点if(f) f=0;else cout<<" ";//(输出格式罢了,不用在乎这里)cout<<i; }}}
}
POJ1236校园网络
每所学校都有一份发学校名单。计算至少先发给多少个学校才能使软件传到所有学校(任务1),计算至少增加多少扩展才能将软件发给任意学校结果都能传到所有学校(扩展就是将新成员引入一所学校的接收者名单)
5
2 4 3 0
4 5 0
0
0
1 0
思路:
任务1:每一个入度为0的连通分量都必须收到一个软件,计算个数。
任务2:每个连通分量必须既有入度也有出度,即入度为0的连通分量必须扩展一下,出度为0的连通分量必须也扩展一下(入度和出度对接,输出max就行)
DAG图中入度为0的点相当于起点
#include <bits/stdc++.h>//有向图的强连通分量
using namespace std;
const int maxn=5050;
bool ins[maxn];
int n,m,cnt;
int head[maxn],be[maxn],in[maxn],out[maxn];//be是属于哪个连通分量 in,out是每个连通分量的入度和出度
int low[maxn],dfn[maxn],num,id;
stack <int> s;
struct node{int to,next;}e[maxn*2];void add(int u,int v){ e[++cnt]=(node){v,head[u]};head[u]=cnt;}void tarjan(int u){dfn[u]=low[u]=++num;//dfn访问序号,low是能走回到的最早的dfnins[u]=1;s.push(u);//第一次访问节点时候入栈for(int i=head[u];i;i=e[i].next){int v=e[i].to;if(!dfn[v]){//没访问过就递归访问tarjan(v);low[u]=min(low[u],low[v]);//获取孩子的最小的low值 }else if(ins[v]){//已经访问过且在栈中获取dfn号low[u]=min(low[u],dfn[v]);}}if(low[u]==dfn[u]){//low[u]==dfn[u]时,则从栈中不断弹出节点,直到x出栈停止。弹出的节点就是同一个连通分量的int v;id++;do{//一定要先执行再判断v=s.top();s.pop();be[v]=id;//把这些弹出的点标记同一个id号(连通分量号)ins[v]=0;}while(v!=u);//直到是自己为止}
}int main(){cin>>n;int v;//n为学校数量for(int i=1;i<=n;i++){while(cin>>v&&v)add(i,v);//表示接收i的v学校,以0结尾}for(int i=1;i<=n;i++){if(!dfn[i]) tarjan(i);}for(int u=1;u<=n;u++)for(int i=head[u];i;i=e[i].next){int v=e[i].to;if(be[u]!=be[v]){//有重边,可以输出一下in[be[v]]++;out[be[u]]++;//统计入度和出度,来缩点}}if(id==1){//一共只要一个连通分量的话要特判cout<<1<<'\n';cout<<0<<'\n';return 0;}int ans1=0,ans2=0;//for(int i=1;i<=n;i++)cout<<i<<' '<<be[i]<<'\n';for(int i=1;i<=id;i++){// cout<<i<<" in"<<' '<<in[i]<<" , "<<"out"<<' '<<out[i]<<'\n';if(!in[i]) ans1++;if(!out[i]) ans2++;}cout<<ans1<<'\n';cout<<max(ans1,ans2)<<'\n';
}
缩点:
思路:
有向图中的强连通分量中的所有权值一定要全部加上,所以缩点建出新的DAG图,然后转化成了每个点走一次求最大点权值和
设置dp[v]表示到v点的最大权值和。 dp[v]=max(dp[u])即可,也就是要先求dp[u]再求dp[v],topo排序求一边就行了。完了!
if(low[u]==dfn[u]){//low[u]==dfn[u]时,则从栈中不断弹出节点,直到x出栈停止。弹出的节点就是同一个连通分量的int v; do{//一定要先执行再判断v=s.top();s.pop();be[v]=u;//把这些弹出的点标记同一个id号(连通分量号)ins[v]=0;if(u==v)break;//自己不要和自己加p[u]+=p[v];}while(v!=u);//直到是自己为止}
首先是缩点操作,要把该连通分量中点的权值加给连通分量点自己(类似无向图的桥点),
for (int i=1;i<=m;i++)//遍历每个边{int u=be[e[i].from],v=be[e[i].to];//from是起点,to是终点if (u!=v)//不同的分量号点间进行建边,有重边也不影响topo结果{newe[++tt]=(node){v,hh[u],u};hh[u]=tt;in[v]++;//建新边过程,相当于add功能}}
然后是给新DAG图建边,以便后面topo。
完整代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=10000+15;
int n,m,tot,head[maxn],tt,hh[maxn],p[maxn];//p是每个点的权值,head和tot和e是原图的,hh和tt和newe是新图的
int num,low[maxn],dfn[maxn],ins[maxn],be[maxn];//be是每个所属的连通分量号
int in[maxn],dp[maxn];
stack<int>s;
struct node{int to,next,from;}e[maxn*10],newe[maxn*10];void add(int u,int v){e[++tot]=(node){v,head[u],u};head[u]=tot;}void tarjan(int u){dfn[u]=low[u]=++num;//dfn访问序号,low使能回溯到的最早的dfnins[u]=1;s.push(u);//第一次访问节点时候入栈for(int i=head[u];i;i=e[i].next){int v=e[i].to;if(!dfn[v]){//没访问过就递归访问tarjan(v);low[u]=min(low[u],low[v]);//获取孩子的最小的low值 }else if(ins[v]){//已经访问过且在栈中获取dfn号low[u]=min(low[u],dfn[v]);}}if(low[u]==dfn[u]){//low[u]==dfn[u]时,则从栈中不断弹出节点,直到x出栈停止。弹出的节点就是同一个连通分量的int v; do{//一定要先执行再判断v=s.top();s.pop();be[v]=u;//把这些弹出的点标记同一个id号(连通分量号)ins[v]=0;if(u==v)break;//自己不要和自己加p[u]+=p[v];}while(v!=u);//直到是自己为止}
}int topo()
{queue <int> q;int tot=0;for (int i=1;i<=n;i++){if(be[i]==i&&!in[i]){q.push(i);dp[i]=p[i];}}while (!q.empty()){int u=q.front();q.pop();for (int i=hh[u];i;i=newe[i].next){int v=newe[i].to;dp[v]=max(dp[v],dp[u]+p[v]);//要最大的起点嘛in[v]--;if (in[v]==0) q.push(v);}}int ans=0;for (int i=1;i<=n;i++)ans=max(ans,dp[i]);return ans;
}
int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=n;i++)scanf("%d",&p[i]);//权值for (int i=1;i<=m;i++){int u,v;scanf("%d%d",&u,&v);add(u,v);}for (int i=1;i<=n;i++)if (!dfn[i]) tarjan(i);for (int i=1;i<=m;i++){int u=be[e[i].from],v=be[e[i].to];//from是起点,to是终点if (u!=v)//不同的分量号点间进行建边,有重边也不影响topo结果{newe[++tt]=(node){v,hh[u],u};hh[u]=tt;in[v]++;//建新边过程,相当于add功能}}printf("%d",topo());
}
相关文章:
![](https://img-blog.csdnimg.cn/f68d05a84ef541f595c0886ca4d6a348.png)
【算法每日一练]-图论(保姆级教程篇12 tarjan篇)#POJ3352道路建设 #POJ2553图的底部 #POJ1236校园网络 #缩点
目录: 今天知识点 加边使得无向图图变成双连通图 找出度为0的强连通分量 加边使得有向图变成强连通图 将有向图转成DAG图进行dp POJ3352:道路建设 思路: POJ2553:图的底部 思路: POJ1236校园网络 思路&#x…...
![](https://img-blog.csdnimg.cn/img_convert/1285f4ce98c55042db920957a29f973c.webp?x-oss-process=image/format,png)
Python数据科学视频讲解:数据挖掘与建模的注意事项
1.7 数据挖掘与建模的注意事项 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.7节内容。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。内容涵盖数据科学应用的全流程,包括…...
![](https://img-blog.csdnimg.cn/direct/15eba8d6765048368e25d6c1c9daa60c.png)
unity | 动画模块之循环滚动选项框
一、作者的话 评论区有人问,有没有竖排循环轮播选项框,我就写了一个 二、效果动画 如果不是你们想要的,就省的你们继续往下看了 三、制作思路 把移动分成里面的方块,还有背景(父物体),方块自…...
![](https://img-blog.csdnimg.cn/direct/d75677bbdad14e05a030446412cc8996.png)
TinyMPC - CMU (卡耐基梅隆大学)开源的机器人 MPC 控制器
系列文章目录 CasADi - 最优控制开源 Python/MATLAB 库 文章目录 系列文章目录前言一、机器人硬件对比1.1 Teensy 上的微控制器基准测试1.2 机器人硬件1.3 BibTeX 二、求解器三、功能(预期)3.1 高效3.2 鲁棒3.3 可嵌入式3.4 最小依赖性3.5 高效热启动3.…...
![](https://img-blog.csdnimg.cn/direct/39947d06061047cfb6b48e1a98afc61d.png)
C++ 对象的初始化和清理:构造函数和析构函数
目录 构造函数和析构函数 构造函数 析构函数 构造函数的分类及调用 括号法 显示法 隐式转换法 拷贝构造函数的调用时机 使用一个已经创建完毕的对象来初始化一个新对象 值传递的方式给函数参数传值 以值方式返回局部对象 构造函数调用规则 初始化列表 类对象作…...
![](https://www.ngui.cc/images/no-images.jpg)
Tmux中使用Docker报错 - 解决方案
问题 进入Tmux会话后,在其中使用Docker可能会出现如下报错: Got permission denied while trying to connect to the Docker ……解决方案 退出tmux会话: tmux detach在tmux会话外部杀掉tmux进程: pkill -f tmux重新进入tmux:…...
![](https://img-blog.csdnimg.cn/img_convert/5d5bb159cad2711a7abeedda52d30d72.webp?x-oss-process=image/format,png)
如何在WordPress中批量替换图片路径?
很多站长在使用WordPress博客或者搬家时,需要把WordPress文章中的图片路径进行替换来解决图片不显示的问题。总结一下WordPress图片路径批量替换的过程,方便有此类需求的站长们学习。 什么情况下批量替换图片路径 1、更换了网站域名 有许多网站建设初期…...
![](https://img-blog.csdnimg.cn/direct/2706584a820948e59420fa119e1ed4cf.png)
el-pagination 纯前端分页
需求:后端把所有数据都返给前端,前端进行分页渲染。 实现思路:先把数据存储到一个大数组中,然后调用方法进行切割。主要使用数组的slice方法 所有代码: html <template><div style"padding: 20px&qu…...
![](https://img-blog.csdnimg.cn/direct/084de73562a24de6bc237d1cf8e6fe18.png)
基于springboot的校园二手市场
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
![](https://img-blog.csdnimg.cn/3a01dc60e62c415b812015851343f1c0.png#pic_center)
【开源】基于Vue和SpringBoot的在线课程教学系统
项目编号: S 014 ,文末获取源码。 \color{red}{项目编号:S014,文末获取源码。} 项目编号:S014,文末获取源码。 目录 一、摘要1.1 系统介绍1.2 项目录屏 二、研究内容2.1 课程类型管理模块2.2 课程管理模块2…...
![](https://img-blog.csdnimg.cn/direct/7b804c0c619c49e7a93fc1845a0fd6aa.png)
Mysql分布式集群部署---MySQL集群Cluster将数据分成多个片段,每个片段存储在不同的服务器上
1.1 目的 部署MysqlCluster集群环境 1.2 MySQL集群Cluster原理 1 数据分片 MySQL集群Cluster将数据分成多个片段,每个片段存储在不同的服务器上。这样可以将数据负载分散到多个服务器上,提高系统的性能和可扩展性。 2. 数据同步 MySQL集群Cluster使…...
![](https://www.ngui.cc/images/no-images.jpg)
身份认证技术
身份认证是对系统的用户进行有效性、真实性验证。 1.口令认证方式 使用口令认证方式,用户必须具有一个唯一的系统标识,并且保证口令在系统的使用和存储过程中是安全的,同时口令在传输过程中不能被窃取、替换。另外特别要注意的是在…...
![](https://img-blog.csdnimg.cn/direct/2cae65ff2cb84406921c663887c6eed1.png)
Centos7、Mysql8.0 load_file函数返回为空的终极解决方法--暨selinux的深入理解
零、问题背景 最近想换房,为了方便自己对比感兴趣的房子,因此决定将目标房源的基本信息放在表里,特别是要一目了然的看到众多房子的各种图纸和照片,因此决定要在Mysql8.0.34数据库中以二进制形式保存图片(抛开合理性和…...
![](https://www.ngui.cc/images/no-images.jpg)
基于Spring Boot的水产养殖管理系统
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring Boot的水产养殖管理系统,jav…...
![](https://img-blog.csdnimg.cn/direct/8d145442827e4660b25a5b4f74486cf7.png)
LCR 090. 打家劫舍 II(leetcode)动态规划
文章目录 前言一、题目分析二、算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值是什么 三、代码实现总结 前言 在本文章中,我们将要详细介绍一下LeetcodeLCR 090. 打家劫舍 II。采用动态规划解决,这是一道经典的多状态dp问题 一、题目分析…...
![](https://img-blog.csdnimg.cn/direct/ebdc6973839c48519dc704a1adb91ec1.png)
【小沐学Python】Python实现语音识别(Whisper)
文章目录 1、简介1.1 whisper简介1.2 whisper模型 2、安装2.1 whisper2.2 pytorch2.3 ffmpeg 3、测试3.1 命令测试3.2 代码测试:识别声音文件3.3 代码测试:实时录音识别 结语 1、简介 https://github.com/openai/whisper 1.1 whisper简介 Whisper 是…...
![](https://img-blog.csdnimg.cn/img_convert/ebb9bedd54789df6c5c1f7ab8c1b3a56.png)
Nginx负载均衡实战
🎵负载均衡组件 ngx_http_upstream_module https://nginx.org/en/docs/http/ngx_http_upstream_module.html upstream模块允许Nginx定义一组或多组节点服务器组,使用时可以通过多种方式去定义服务器组 样例: upstream backend {server back…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis skiplist源码解析(支持范围查询)
跳表是一个多层的有序链表,在跳表中进行查询操作时,查询代码可以从最高层开始查询。层数越高,结点数越少,同时高层结点的跨度会比较大。因此,在高层查询结点时,查询一个结点可能就已经查到了链表的中间位置…...
![](https://img-blog.csdnimg.cn/direct/1f40d37f91a04349ad577f37650b8e46.png)
MVSNeRF:多视图立体视觉的快速推广辐射场重建(2021年)
MVSNeRF:多视图立体视觉的快速推广辐射场重建(2021年) 摘要1 引言2 相关工作3 MVSNeRF实现方法3.1 构建代价体3.2 辐射场的重建3.3 体渲染和端到端训练 3.4 优化神经编码体 Anpei Chen and Zexiang Xu and Fuqiang Zhao et al. MVSNeRF: Fast…...
![](https://www.ngui.cc/images/no-images.jpg)
华为OD机试真题-CPU算力分配-2023年OD统一考试(C卷)
题目描述: 现有两组服务器A和B,每组有多个算力不同的CPU,其中A[i]是A组第i个CPU的运算能力,B[i]是B组第i个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换,求两组服务器中,用于交换的CPU的算力,…...
![](https://www.ngui.cc/images/no-images.jpg)
校验数据是否重叠(各种操作符>,<,>=,<=,or,and)
最近接到一个需求,其中部分功能涉及到数据的重叠校验,并且录入的数据需要包含各种操作符。如果只通过java代码来查询并进行循环判断的话,判断情况会很复杂,幸好有同事的帮忙提供了一个用sql查询重叠部分的方法,现在分享…...
![](https://www.ngui.cc/images/no-images.jpg)
大一C语言作业 12.8
1.C 对一维数组初始化时,如果全部元素都赋了初值,可以省略数组长度。 这里没有指定数组长度,编译器会根据初始化列表的元素个数来确定数组长度。 2.C 在C语言中,字符数组是不能用赋值运算符直接赋值的。 3.C 在二维数组a中&#x…...
![](https://img-blog.csdnimg.cn/direct/4a3e5d851d5d4598a9978c577a9e8f05.png)
ELasticsearch:什么是语义搜索?
语义搜索定义 语义搜索是一种解释单词和短语含义的搜索引擎技术。 语义搜索的结果将返回与查询含义匹配的内容,而不是与查询中的单词字面匹配的内容。 语义搜索是一组搜索引擎功能,其中包括根据搜索者的意图及其搜索上下文理解单词。 此类搜索旨在通过…...
![](https://img-blog.csdnimg.cn/img_convert/ed3ce44023e56ec70804a596f979629c.jpeg)
ooTD I 女儿是自己的,尽情打扮尽情可爱
分享女宝的时尚穿搭 奶乎乎的黄色也太好看了 超足充绒量+优质面料 柔软蓬松上身体验感超赞 怎么穿都好看系列 轻轻松松打造时尚造型!!...
![](https://www.ngui.cc/images/no-images.jpg)
第62天:django学习(十一)
cookie和session 发展史 一开始,只有一个页面,没有登录功能,大家看到东西都一样。 时代发展,出现了需要登录注册的网站,要有一门技术存储我们的登录信息,于是cookie诞生了。 cookie: - 存储形式:k:v键值对…...
![](https://img-blog.csdnimg.cn/direct/bfe7fff7a5b843acb053c4de11de02cd.png)
Rust测试字符串的移动,Move
代码创建了一个结构体,结构体有test1 字符串,还有指向字符串的指针。一共创建了两个。 然后我们使用swap 函数 交换两个结构体内存的内容。 最后如上图。相同的地址,变成了另外结构体的内容。注意看指针部分,还是指向原来的地址…...
![](https://img-blog.csdnimg.cn/direct/91e86b399eea481e9d9db91dd215bb9a.png)
vue+electron问题汇总
1. Vue_Bug Failed to fetch extension, trying 4 more times 描述:项目启动时报错 解决:注释图片中内容 2. Module not found: Error: Can’t resolve ‘fs’ in 描述:项目启动报错 解决:vue.config.js中添加图中数据 3.导入…...
![](https://img-blog.csdnimg.cn/direct/941c16d664974fa293e77b0d6ac06280.png)
Linux中的网络时间服务器
本章主要介绍网络时间的服务器 使用chrony配置时间服务器配置chrony客户端服务器同步时间 1.1 时间同步的重要性 一些服务对时间要求非常严格,例如如图所示的由三台服务器搭建的ceph集群 这三台服务器的时间必须保持一致,如果不一致,就会显…...
![](https://img-blog.csdnimg.cn/direct/b2528f63a34b4e51b5a788071a073765.png)
fastadmin打印页面
如下图选中订单号进行打印 html中增加代码 <div id"toolbar" class"toolbar"><a href"javascript:;" class"btn btn-primary btn-refresh" title"{:__(Refresh)}" ><i class"fa fa-refresh">&l…...
![](https://img-blog.csdnimg.cn/direct/300e995470ff451f8d6adf6bee972b27.png)
Java 将word转为PDF的三种方式和处理在服务器上下载后乱码的格式
我这边是因为业务需要将之前导出的word文档转换为PDF文件,然后页面预览下载这样的情况。之前导出word文档又不是我做的,所以为了不影响业务,只是将最后在输出流时转换成了PDF,当时本地调用没什么问题,一切正常…...
![](https://www.ngui.cc/images/no-images.jpg)
C\C++ 获取最值
C C 语言的不同类型的最值可以在 limits.h 头文件里找到定义 #include <limits.h>int main() {printf("%d", INT_MAX); // 整数最大值printf("%d", INT_MIN); // 整数最小值 } C C 有模板,可以通过替换下面的 int 和 doubleÿ…...
![](https://img-blog.csdnimg.cn/img_convert/aa38d260bf42cebc54e6a6b0b02b0b6f.png)
机器学习之无监督学习:九大聚类算法
今天,和大家分享一下机器学习之无监督学习中的常见的聚类方法。 今天,和大家分享一下机器学习之无监督学习中的常见的聚类方法。 在无监督学习中,我们的数据并不带有任何标签,因此在无监督学习中要做的就是将这一系列无标签的数…...
![](https://img-blog.csdnimg.cn/direct/4ff8f55a25a14f078984096bde55e696.png)
Linux高级管理-搭建网站服务
在Ihternet 网络环境中,Web 服务无疑是最为流行的应用系统。有了Web站点,企业可以充分 展示自己的产品,宣传企业形象。Web站点还为企业提供了与客户交流、电子商务交易平台等丰富 的网络应用。部署与维护Web 服务是运维工程师必须掌握的一个技…...
![](https://img-blog.csdnimg.cn/direct/6f38d23174434fbaa1ee75afe2786432.png)
Windows 系统,TortoiseSVN 无法修改 Log 信息解决方法
使用SVN提交版本信息时,注释内容写的不全。通过右键TortoiseSVN的Show log看到提交的的注释,右键看到Edit log message的选项,然而提交后却给出错误提示: Repository has not been enabled to accept revision propchanges; ask …...
![](https://img-blog.csdnimg.cn/direct/ee2877b3790949f28e65b5eaaf363dae.png)
编译 Android gradle-4.6-all.zip 报错问题记录
编译 Android gradle-4.6-all.zip 报错问题记录 方法一:替换资源:方法二:修改源方法三:修改版本 编译时候无法下载 gradle-4.6-all Downloading https://services.gradle.org/distributions/gradle-4.6-all.zip 方法一…...
![](https://img-blog.csdnimg.cn/direct/9d0c25c87f40469e8432f346a9d802e2.png)
Linux系统调试课:Valgrind 内存调试
文章目录 一、为什么要学会Valgrind二、什么是内存泄露三、Valgrind的移植四、Valgrind相关参数沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Valgrind 是一个开源的内存调试和性能分析工具,用于帮助开发者找出程序中的内存错误,如内存泄漏、使用未初始化的内存、非…...
![](https://img-blog.csdnimg.cn/8583a413868641df9456c63b79809d51.png)
python主流开发工具排名,python开发工具有哪些
本篇文章给大家谈谈python的开发工具软件有哪些,以及python主流开发工具排名,希望对各位有所帮助,不要忘了收藏本站喔。 python中用到哪些软件 一、Python代码编辑器1、sublime Textsublime Text是一款非常流行的代码编辑器,支持P…...
![](https://img-blog.csdnimg.cn/img_convert/76ce5b215727f2bce827905db5c60ff2.png)
Spring Boot Async:从入门到精通,原理详解与最佳实践
Spring Boot 的异步功能(Async)允许我们将某些任务异步执行,而不会阻塞主线程。这对于处理耗时的操作非常有用,如发送电子邮件、生成报表、调用外部 API 等。通过异步处理,我们可以释放主线程,让它继续处理…...
![](https://www.ngui.cc/images/no-images.jpg)
oracle 19c创建db_link名称带.com域名问题处理
文章目录 一、修改PDB的global_name二、重启数据库实例三、修改domain后重试 一、修改PDB的global_name SYSorcl1>sho pdbsCON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ----------2 PDB$SEED …...
![](https://img-blog.csdnimg.cn/img_convert/f6104a54f4f0375f580cb6f8d9b67138.webp?x-oss-process=image/format,png)
银行卡二要素API的应用案例:从在线购物到金融投资
引言 随着互联网技术的不断发展,人们的金融需求也在不断增加。随之而来的是各种新型金融服务的涌现,让用户的金融体验更加便利快捷。其中,银行卡二要素API的应用,则为用户的金融体验和安全性提供了极大的保障。 银行卡二要素API…...
![](https://img-blog.csdnimg.cn/direct/a1fae57d8f6f4a02976e26e7a9301e28.png)
MySQL 忘记root密码后重置密码操作
在忘记 MySQL 密码的情况下,可以通过 --skip-grant-tables 关闭服务器的认证,然后重置 root 的密码,具体操作步骤如下。 步骤 1):关闭正在运行的 MySQL 服务。打开 cmd 进入 MySQL 的 bin 目录。 步骤 2):输入mysqld -…...
![](https://img-blog.csdnimg.cn/direct/c714fec5392c4abaa6228cfb9d65b7f4.png)
开源电子合同签署平台小程序源码/电子文件签字+在线合同签署系统源码/电子合同小程序源码
源码简介: 开源电子合同签署平台小程序源码,它是电子文件签字在线合同签署系统源码/电子合同小程序源码 目前商业端和开源端一致,免费开源状态! 聚合市场上各类电子合同解决方案商,你无需一个一个的对接电子合同厂商…...
![](https://img-blog.csdnimg.cn/direct/a3339cee96e4479ab655d7f716835a1f.png)
J.408之数据结构
J-408之数据结构_北京信息科技大学第十五届程序设计竞赛(同步赛) (nowcoder.com) 思维好题,直接用两个set存没出现的数字就好了 // Problem: 408之数据结构 // Contest: NowCoder // URL: https://ac.nowcoder.com/acm/contest/68572/J // Me…...
![](https://www.ngui.cc/images/no-images.jpg)
前端食堂技术周刊第 107 期:技术播客节、Deno Cron、FEDAY、XState v5、Electron 2023 生态系统回顾
美味值:🌟🌟🌟🌟🌟 口味:烤椰拿铁 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…...
![](https://img-blog.csdnimg.cn/direct/51bc10cb5a8742a99cf099296eecbfaa.jpeg)
三防平板|手持终端PDA|8寸/10寸工业三防平板电脑主板方案定制
近年来,随着科技的快速发展,三防平板成为了各行各业中不可或缺的工具。三防平板采用IP67级别的防护设计,通过了多项测试标准,如国标和美标,具备防水、防摔、防尘、防撞、防震、防跌落以及防盐雾等多重防护功能。因此&a…...
![](https://img-blog.csdnimg.cn/direct/1148fdd534464e6da1207b977e640456.png)
【C语言】动态内存管理(C语言的难点与精华,数据结构的前置知识,你真的掌握了吗?)
文章目录 引言一、为什么要动态内存分配二、动态内存分配的相关函数2.1 malloc2.2 free2.3 calloc2.4 realloc 三、常见的动态内存的错误3.1 对NULL指针的解引用3.2 对动态内存越界访问3.3 对非动态内存释放3.4 对动态内存部分释放3.5 对动态内存多次释放3.6 未对动态内存释放&…...
![](https://img-blog.csdnimg.cn/direct/95ecaa17f305440382c03870adf81196.png)
最长子序列问题(LCS)--动态规划解法
题目描述: 如果Z既是X的子序列,又是Y的子序列,则称Z为X和Y的公共子序列。 如果给定X、Y,求出Y及其长度。 示例: 输入 ABCPDSFJGODIHJOFDIUSHGD OSDIHGKODGHBLKSJBHKAGHI 输出 SDIHODSHG 9 分析: c…...
![](https://img-blog.csdnimg.cn/direct/1da895d7f10e46f1b6ab36ffbdd75f24.png)
实时流式计算 kafkaStream
文章目录 实时流式计算Kafka StreamKafka Streams 的关键概念KStreamKafka Stream入门案例编写SpringBoot 集成 Kafka Stream 实时流式计算 一般流式计算会与批量计算相比较 流式计算就相当于上图的右侧扶梯,是可以源源不断的产生数据,源源不断的接收数…...
![](https://img-blog.csdnimg.cn/direct/980cfc3efe014cc39df3345fe5306cf5.png)
西南科技大学模拟电子技术实验七(集成运算放大器的非线性应用)预习报告
一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入法完成相关公式内容,不得贴手写图片。(注意:从抽象公式直接得出结果,不得分,页数可根据内容调整) 预习计算内容根据运放的非线…...
![](https://img-blog.csdnimg.cn/direct/fab68272de6442c4ae50a19f072ecfad.png)
Ubuntu与Windows通讯传输文件(FTP服务器版)(没用的方法,无法施行)
本文介绍再Windows主机上建立FTP服务器,并且在Ubuntu虚拟机上面访问Windows上FTP服务器的方法 只要按照上图配置就可以了 第二部:打开IIS管理控制台 右击网站,新建FTP站点。需要注意的一点是在填写IP地址的时候,只需要填写Window…...