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

最短路与拓扑(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.dtcms.com/a/189376.html

相关文章:

  • 【算法笔记】ACM数论基础模板
  • 反射(Reflection)详解
  • 快速上手Linux nfs网络文件系统
  • 网站遭受扫描攻击,大量爬虫应对策略
  • C语言while循环的用法(非常详细,附带实例)
  • 绘制时间对应的数据曲线
  • C/C++ 程序执行的主要过程
  • [万字]qqbot开发记录,部署真寻bot+自编插件
  • JavaScript进阶(九)
  • mysql8常用sql语句
  • VLLM推理大模型显存不够后,导致程序引擎崩溃的调优方案尝试
  • Mac M系列 安装 jadx-gui
  • java架构设计
  • git cherry-pick和git stash命令详解
  • 反转链表II
  • leetcode0295. 数据流的中位数-hard
  • 关于 javax.validation.constraints的详细说明
  • HuggingFace的SafeSensor格式模型能转成Ollama格式的吗?
  • 26、测试咒语:魔法校验—— Jest+Testing Lib
  • SimpleAdmin云服务器发布
  • 浅聊一下数据库的索引优化
  • 19.Excel数据透视表:第2部分数据透视计算
  • 生产级编排AI工作流套件:Flyte全面使用指南 — Core concepts
  • 需求管理缺乏持续改进机制,如何建立
  • 计算机视觉----时域频域在图像中的意义、傅里叶变换在图像中的应用、卷积核的频域解释
  • 黑白浮生项目测试报告
  • 【入门】纸盒的最大体积是多少?
  • docker部署WeDataSphere开源大数据平台
  • redis数据结构-10(ZREM、ZSCORE、ZINCRBY)
  • 以价值为导向的精准数据治理实践,赋能业务决策