当前位置: 首页 > ai >正文

最短路与拓扑(1)

1、找最长良序字符串

#include<bits/stdc++.h>
using namespace std;
const int N=105;
int dis[N];
int vis[N];
int edge[N][N];
int n,m;
int vnum;void dij(int u, int v) {// 初始化距离数组和访问标记for(int i=0; i<vnum; i++) {vis[i] = 0;dis[i] = edge[u][i];}// Dijkstra主循环for(int i=0; i<vnum-1; i++) {int minn = 1e9;int pp;// 找到未访问节点中距离最小的for(int j=0; j<vnum; j++) {if(vis[j]==0 && dis[j] < minn) {minn = dis[j];pp = j;}}vis[pp] = 1;// 更新所有邻居的距离for(int j=0; j<vnum; j++) {if(vis[j]==0 && dis[pp] + edge[pp][j] < dis[j]) {dis[j] = dis[pp] + edge[pp][j];}}}cout << dis[v];
}int main() {cin >> n >> m;vnum = n;// 初始化邻接矩阵for(int i=0; i<n; i++) {for(int j=0; j<n; j++) {if(i == j) edge[i][j] = 0;else edge[i][j] = 1e9;}}// 读取边信息for(int i=1; i<=m; i++) {int u, v, w;cin >> u >> v >> w;edge[u][v] = w;}int p;cin >> p;dij(0, p);return 0;
}

2、德克萨斯长角牛

#include<bits/stdc++.h>
using namespace std;
const int N=2510;
struct node{int v;int w;
};
int dis[N];//Rs-->Re的最短距离
int vis[N];//标记已经在这个队列中的点
vector<node>a[N];
queue<int>q;void display(int Rs,int Re){memset(dis,127,sizeof(dis));q.push(Rs);vis[Rs]=1;dis[Rs]=0;while(!q.empty()){int u=q.front();q.pop();vis[u]=0;for(int i=0;i<a[u].size();i++){int v=a[u][i].v;int w=a[u][i].w;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;if(vis[v]==0){vis[v]=1;q.push(v);}}}}cout<<dis[Re];
}
int main(){int T,C,Rs,Re;cin>>T>>C>>Rs>>Re;for(int i=1;i<=C;i++){int u,v,w;cin>>u>>v>>w;a[u].push_back({v,w});a[v].push_back({u,w});}display(Rs,Re);return 0;
}

3、找最长良序字符串

#include<bits/stdc++.h>
using namespace std;
int main(){string str;cin>>str;int cnt=1;int maxc=0;for(int i=0;i<str.size()-1;i++){while(str[i]<str[i+1]){cnt++;i++;}maxc=max(cnt,maxc);cnt=1;}cout<<maxc<<endl;return 0;
}

4、换位置游戏

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int n;
int a[N],b[N];
int gys(int a,int b){if(a%b==0)return b;else return gys(b,a%b);
}
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];b[i]=1;}for(int i=1;i<=n;i++){int t=a[i];while(t!=i){t=a[t];b[i]++;}}long long sum=b[1];for(int i=2;i<=n;i++){sum=b[i]*sum/gys(b[i],sum);//gyc(b[i],sum)也可以写成__gcd}cout<<sum<<endl;return 0;
}

最小公约数公式lcm(m, n) = m * n / gcd(m, n)

5、学生分组

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n;
int a[N];
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+1+n);int sum=0;for(int i=2;i<=n;i=i+2){sum+=a[i]-a[i-1];}cout<<sum<<endl;return 0;
}

http://www.xdnf.cn/news/5938.html

相关文章:

  • openjdk底层汇编指令调用(三)——编码
  • Ensemble Alignment Subspace Adaptation Method for Cross-Scene Classification
  • HDFS的客户端操作(1)
  • USB3.0拓展坞制作学习
  • Linux系统编程---Signal信号集
  • Profibus DP主站转Modbus RTU/TCP如何把E+H流量计接入到modbus
  • 基于单片机的视力保护仪设计与实现
  • 硬密封保温 V 型球阀:恒温工况下复杂介质控制的性价比之选-耀圣
  • RabbitMQ 核心概念与消息模型深度解析(一)
  • Linux 系统如何挂载U盘
  • 火语言RPA--EcshopV4发布商品
  • 【datawhale组队学习】coze-ai-assistant TASK01
  • 【ROS2实战】在中国地区 Ubuntu 22.04 上安装 ROS 2 Humble 教程
  • 黑白浮生项目测试报告
  • k8s初始化时候,报错无法通过 CRI(容器运行时接口)与 containerd 通信
  • 5.13 note
  • Java反射详细介绍
  • AI 检测原创论文:技术迷思与教育本质的悖论思考
  • 组策略+注册表解决 系统还原 被禁问题
  • 推荐系统-基于特征掩码的自适应特征建模: AdaF^2M^2(DASFAA‘2025)
  • 【GNSS硬件接收机】【非公开文章】GNSS硬件接收机设计目录
  • JavaScript 模块封装函数
  • 函数加密(Functional Encryption)简介
  • 信奥赛-刷题笔记-队列篇-T2-P1540机器翻译和P2952Cow Line S
  • 抗菌肽Tet-213,1260528-09-3
  • Java并发编程-线程池(二)
  • 今日行情明日机会——20250513
  • 期货反向跟单软件—持仓上限控制功能
  • gcc和g++
  • 闭包原理与常见陷阱