uva 10330(最大流)

题意:一张网络中有若干个源点及汇点。点上又最大能承载的流量超过了则会自动丢弃,让你求最大流。

思路:稍微转化一下套一下模版就ok了。ps:刚刚入门网络流0.0只会模版。

这里就讲一下图的转化吧。首先由于在每一点上都有限制所以我们必须把一个点拆成两个点,在两个点当中加一条边,来实现对于点上流量的控制。另外由于是有多个源点+多个汇点。所以我们要认为的加上一个源点使得此点到所有源点都有一条流量为无穷大的边,再人为加一个汇点,使得所有汇点到这一点都有一条流量为无穷大的边。这样一来图就建好了,剩下来的就是套模版了。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <algorithm>
 6 #include <utility>
 7 #include <vector>
 8 #include <queue>
 9 #include <stack>
10 #define INF 500001
11 #define LEN 510
12 
13 using namespace std;
14 
15 int cap[LEN][LEN], n;
16 
17 void debug()
18 {
19     for(int i=0; i<n; i++){
20         for(int j=0; j<n; j++){
21             cout << cap[i][j] << ' ';
22         }cout << endl;
23     }cout << endl;
24 }
25 
26 int EK(int s, int t)
27 {
28     int f, flow[LEN][LEN], a[LEN], p[LEN];
29     queue<int> q;
30     memset(flow, 0, sizeof flow);
31     f = 0;
32     while(1){
33         memset(a, 0, sizeof a);
34         a[s] = INF;
35         q.push(s);
36         while(!q.empty()){
37             int u = q.front(); q.pop();
38             for(int v=0; v<n; v++){
39                 if(!a[v] && cap[u][v]>flow[u][v]){
40                     p[v] = u;
41                     q.push(v);
42                     a[v] = min(a[u], cap[u][v]-flow[u][v]);
43                 }
44             }
45         }
46         if(a[t] == 0)break;
47         for(int u=t; u!=s; u = p[u]){
48             flow[p[u]][u]+=a[t];
49             flow[u][p[u]]-=a[t];
50         }
51         f+=a[t];
52     }
53     return f;
54 }
55 
56 int main()
57 {
58 //    freopen("in.txt", "r", stdin);
59 
60     int vn, vl, m;
61     while(scanf("%d", &vn)!=EOF){
62         memset(cap, 0, sizeof cap);
63         n = 2*vn+2;
64         for(int i=1; i<=vn; i++){
65             scanf("%d", &vl);
66             cap[i<<1][(i<<1)|1] = vl;
67             cap[(i<<1)|1][i<<1] = vl;
68         }
69         scanf("%d", &m);
70         for(int i=0; i<m; i++){
71             int a, b, val;
72             scanf("%d%d%d", &a, &b, &val);
73             cap[(a<<1)|1][b<<1] = val;
74         }
75 //        debug();
76         int ns, ne;
77         scanf("%d%d", &ns, &ne);
78         for(int i=0; i<ns; i++){
79             int v;
80             scanf("%d", &v);
81             cap[0][v<<1] = cap[v<<1][(v<<1)|1];
82         }
83         for(int i=0; i<ne; i++){
84             int v;
85             scanf("%d", &v);
86             cap[(v<<1)|1][1] = cap[v<<1][(v<<1)|1];
87         }
88         int ans;
89         ans = EK(0,1);
90         printf("%d\n", ans);
91     }
92     return 0;
93 }
View Code

 

转载于:https://www.cnblogs.com/shu-xiaohao/p/3470380.html

在车辆工程中,悬架系统的性能评估和优化一直是研究的热点。悬架不仅关乎车辆的乘坐舒适性,还直接影响到车辆的操控性和稳定性。为了深入理解悬架的动态行为,研究人员经常使用“二自由度悬架模型”来简化分析,并运用“传递函数”这一数学工具来描述悬架系统的动态特性。 二自由度悬架模型将复杂的车辆系统简化为两个独立的部分:车轮和车身。这种简化模型能够较准确地模拟出车辆在垂直方向上的运动行为,同时忽略了侧向和纵向的动态影响,这使得工程师能够更加专注于分析与优化与垂直动态相关的性能指标。 传递函数作为控制系统理论中的一种工具,能够描述系统输入和输出之间的关系。在悬架系统中,传递函数特别重要,因为它能够反映出路面不平度如何被悬架系统转化为车内乘员感受到的振动。通过传递函数,我们可以得到一个频率域上的表达式,从中分析出悬架系统的关键动态特性,如系统的振幅衰减特性和共振频率等。 在实际应用中,工程师通过使用MATLAB这类数学软件,建立双质量悬架的数学模型。模型中的参数包括车轮质量、车身质量、弹簧刚度以及阻尼系数等。通过编程求解,工程师可以得到悬架系统的传递函数,并据此绘制出传递函数曲线。这为评估悬架性能提供了一个直观的工具,使工程师能够了解悬架在不同频率激励下的响应情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值