第 3 场 小白入门赛(1~6) + 第 3 场 强者挑战赛 (1 ~ 5)

第 3 场 小白入门赛

1、厉不厉害你坤哥(暴力)

2、思维

3、暴力,前缀和,贪心

4、二分

5、DP

6、容斥,双指针

第 3 场 强者挑战赛

2、BFS

5、树上倍增求第k祖先

1. 召唤神坤

        题意:

可以发现,如果我们钦定练习生j,那么舞力值的(max(W_{1} , W_{2}...W_{j - 1}) +max(W_{j + 1} , W_{j + 2} ... W_{n})) / W_{j}

因此对于j而言,需要知道前j - 1的最大值跟后j +1的最大值。可以通过数组来存前缀最大跟后缀最大。然后遍历每个j即可。

        

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
void solve() 
{cin >> n;int l[n + 5] ,r[n + 5];memset(l , 0 , sizeof l);memset(r , 0 , sizeof r);for(int i = 1 ; i <= n ; i ++){cin >> a[i];}for(int i = 1 ; i <= n ; i++){l[i] = max(l[i - 1] , a[i]);}for(int i = n ; i >= 1 ; i --){r[i] = max(r[i + 1] , a[i]);}int ans = 0;for(int i = 2 ; i < n ; i ++){ans = max(ans , (l[i - 1] + r[i + 1]) / a[i]);}cout << ans;
}            
int main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;
//    cin>>t;while(t--){solve();}return 0;
}

2. 聪明的交换策略 

        题意:

思路: 观察题意可以得出,最终的序列为连续的0 + 连续的1或者连续的1 + 连续的0。分别计算出两种情况所需要的交换数即可。

        

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
void solve() 
{cin >> n;string s;cin >> s;for(int i = 0 ; i < n ; i ++){a[i] = s[i] - '0';}int id = 0;int ans = 0;for(int i = 0 ; i < n ; i ++){if(a[i] == 1){ans += i - id;id++;}}id = n - 1;int ans1 = 0;for(int i = n - 1 ; i >= 0 ; i--){if(a[i] == 1){ans1 += id - i;id--;}}cout << min(ans , ans1);
}            
int main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;
//	cin>>t;while(t--){solve();}return 0;
}

3. 怪兽突击 

        题意:

        思路:好像跟cf上有道题差不多思路,假设当前将前i个怪兽全部击败一次,那么最终消耗的体力应当再加上min(a_{1} + b_{1} , a_{2} + b_{2} ..., a_{i} + b_{i}) * (k - i)。从前往后遍历所有的 i,然后取最小值即可。min(a_{1} + b_{1} , a_{2} + b_{2} ..., a_{i} + b_{i})可以在遍历的时候顺便更新了。

        

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
#define int long long
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
void solve() 
{cin >> n >> m;vector<int>b(N , 0);vector<int>sum(N, 0);for(int i = 1 ; i <= n ; i ++)	{cin >> a[i];sum[i] = sum[i - 1] + a[i];}for(int i = 1 ; i <= n ; i ++){cin >> b[i];}int mi = 1e9;int ans = 1e18;for(int i = 1 ; i <= n ; i ++){mi = min(mi , a[i] + b[i]);int tmp = sum[i] + max(m - i , 0 * 1LL) * mi;ans = min(tmp , ans);}cout << ans;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;
//	cin>>t;while(t--){solve();}return 0;
}

4. 蓝桥快打 

        题意:

        思路:首先求出小蓝能够进攻多少次,然后再二分攻击力看能否击败小桥。

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
#define int long long
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
void solve() 
{int a , b , c;cin >> a >> b >> c;int t = (a - 1) / c + 1;auto check = [&](int x){if(x * t >= b){return true;}else{return false;}};int l = 1 , r = 1e9;while(l < r){int mid = (l + r) / 2;if(check(mid)){r = mid;}else{l = mid + 1;}}cout << l <<endl;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;cin>>t;while(t--){solve();}return 0;
}

5. 奇怪的段 

        题意:

        思路:观察到数据较小,可以考虑DP解决问题。 定义dp[i][j]表示前i个数,分成j段的最大权值和,于是发现第i个数必然放在第j段中。于是有状态转移方程:dp[i][j] = max(dp[i - 1][j] , dp[i - 1][j - 1]) + a[i] * p[j]。最后输出dp[n][k]即可,这道题就愉快的出来了。

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
#define int long long
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
void solve() 
{cin >> n >> m;int dp[n + 5][m + 5];int p[m + 5];memset(dp , -0x3f , sizeof dp);dp[0][0] = 0;for(int i = 1 ; i <= n ; i ++){cin >> a[i];}	for(int i = 1 ;i <= m ; i ++){cin >> p[i];}for(int i = 1 ; i <= n ; i ++){for(int j = 1 ; j <= m ; j ++){dp[i][j] = max(dp[i - 1][j] , dp[i - 1][j - 1]) + a[i] * p[j];}}cout << dp[n][m];
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;while(t--){solve();}return 0;
}

6. 小蓝的反击 

        题意:

        思路:首先只考虑A的倍数的情况,可以发现:若区间[i , j]范围内的乘积是A的倍数,那么[i , j + 1]也必然是A的倍数,以此类推....也就是说,若钦定区间左端点 i ,可以找到最小的j,使得\prod _{x = i}^{j} a_{x}是A的倍数,那么左端点是i,满足题意的区间共有n - j + 1个。很容易想到:j随着i的增大也必然是越来越大的,因此用双指针来代表每个区间左端点 i 以及所对应的最小的j。将所有i都遍历完就是最终的满足A的倍数的区间总数。

       假设P(A)代表了A的倍数的区间总数。根据容斥原理,P(A \cap !B) = P(A) - P(A\cap B),也就是P(A \cap !B) = P(A) - P(lcm(A , B)) , 因此分别把两个P求出来相减即可。

        

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
#define int long long
const LL maxn = 4e05+7;
const LL N = 1e06+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>num(N , 0);
vector<LL>prime;//存储素数
bool vis[N+5];
void su() 
{for(int i=2;i<=N;i++){if(!vis[i])prime.pb(i);for(int j=0;j < (int)prime.size() && prime[j] * i <= N;j ++){vis[prime[j]*i]=1;if(i % prime[j]==0)break;}}
} set<int>st;
vector<int>st_num;
int len;
int ans(int x){int maxx[len];int cnt[len];memset(cnt , 0 , sizeof cnt);memset(maxx , 0 , sizeof maxx);for(int i = 0 ; i < len ; i++){while(x % st_num[i] == 0){maxx[i]++;x /= st_num[i];}}int out = 0;int f = 1;for(int i = 0 , j = 0 ; i < n ; i ++){if(j <= i){memset(cnt , 0 , sizeof cnt);j = i;int tmp = num[j];for(int t = 0 ; t < len ; t ++){while(tmp % st_num[t] == 0){cnt[t]++;tmp /= st_num[t];}}			j++;f = 1;}for(int t = 0 ; t < len ; t ++){if(cnt[t] < maxx[t]){f = 0;}}while(j < n && !f){int tmp = num[j];for(int t = 0 ; t < len ; t ++){while(tmp % st_num[t] == 0){cnt[t]++;tmp /= st_num[t];}}f = 1;		for(int t = 0 ; t < len ; t ++){if(cnt[t] < maxx[t]){f = 0;break;}}j++;	}if(f){out += (n - j + 1);}int tmp = num[i];for(int t = 0 ; t < len ; t ++){while(tmp % st_num[t] == 0){cnt[t]--;tmp /= st_num[t];}}		}return out;
}
void solve() 
{int  a , b;cin >> n >> a >> b;int A = a , B = b;for(int i = 0 ; i < n ; i ++){cin >> num[i];}int t = prime.size();for(int i = 0 ; i < t ; i ++){while(a % prime[i] == 0){st.insert(prime[i]);a /= prime[i];}}	if(a > 1){st.insert(a);}for(int i = 0 ; i < t ; i ++){while(b % prime[i] == 0){st.insert(prime[i]);b /= prime[i];}}	if(b > 1){st.insert(b);}for(auto it : st){st_num.pb(it);}len = st_num.size();cout << ans(A) - ans(A * B / gcd(A , B))<< endl;}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);su();int t=1;//cin>>t;while(t--){solve();}return 0;
}

 2. 暖气冰场

        题意:

        思路:最短路/BFS,把所有格子第一次被暖气覆盖的时间求出来,然后求出所有时间的最大值即可。

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
const LL maxn = 4e05+7;
const LL N = 5e05+10;
const LL mod = 1e09+7;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
#define int long long
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
int vis[1010][1010];
int tx[8] = {-1 , 1 , -1 , 1 , 1 , -1 , 0 , 0};
int ty[8] = {-1 , 1 , 1 , -1 , 0 , 0 , 1 , -1};
void solve() 
{cin >> n >> m;int t;cin >> t;int mp[n + 5][m + 5];memset(mp , 0x3f , sizeof mp);queue<pair<int,int>>q;for(int i = 0 ; i < t ; i ++){int x , y;cin >> x >> y;mp[x][y] = 0;vis[x][y] = 1;q.push({x , y});}auto check = [&](int x , int y){return x >=1 && x <= n && y >= 1 && y <= m && vis[x][y] == 0;};int ans = 0;while(!q.empty()){auto it = q.front();q.pop();int x = it.first;int y = it.second;for(int i = 0 ; i < 8 ; i ++){int nx = x + tx[i];int ny = y + ty[i];if(check(nx , ny)){mp[nx][ny] = mp[x][y] + 1;vis[nx][ny] = 1; q.push({nx , ny});}}}for(int i = 1 ; i <= n ; i ++){for(int j = 1 ;j <= m ; j++){ans = max(ans , mp[i][j]);}}cout << ans;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;while(t--){solve();}return 0;
}

 5. 逃跑

        题意:

        思路:首先考虑小蓝位于节点x之上,且他只会往深度更深的地方走,那么最终小蓝能够坚持的时间为节点x所构成的子树的最大深度。假设这个最大深度为max\_dep[x],他是可以通过一遍DFS求出来的。然后发现有max\_dep[x] \leq max\_dep[parent[x]]。因此对于一个起点x而言,小蓝需要先尽可能的往上走,因为越往上,其节点的max\_dep就越大。所以只需要考虑往上最多能走到哪个祖先y即可。然后得到max\_dep[y]即是起点x所能坚持的最长时间。

        参考倍增法求LCA的过程,求出每个节点的祖先情况即可。

        

#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second 
#define endl '\n'
#define int long long
const LL maxn = 4e05+7;
const LL N = 1e06+10;
const LL mod = 998244353;
const int inf = 0x3f3f3f3f;
const LL llinf = 5e18;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >mi;//小根堆
priority_queue<LL> ma;//大根堆
LL gcd(LL a, LL b){return b > 0 ? gcd(b , a % b) : a;
}LL lcm(LL a , LL b){return a / gcd(a , b) * b;
}
int n , m;
vector<int>a(N , 0);
void init(int n){for(int i = 0 ; i <= n ; i ++){a[i] = 0;}
}
int dp[N][30];
struct HLD {//轻重链剖分int n;std::vector<int> siz, top, dep, parent, in, out, seq , max_dep;//子树大小 所在重链的顶部节点 深度 父亲 子树DFS序的起点 子树DFS序的终点std::vector<std::vector<int>> adj;int cur = 1;HLD() {}HLD(int n) {init(n);}void init(int n) {this->n = n;siz.resize(n);top.resize(n);dep.resize(n);parent.resize(n);in.resize(n);out.resize(n);seq.resize(n);max_dep.resize(n);cur = 0;adj.assign(n, {});}void addEdge(int u, int v) {adj[u].push_back(v);adj[v].push_back(u);}void work(int root = 1) {top[root] = root;dep[root] = 0;parent[root] = -1;dfs1(root);dfs2(root);}void dfs1(int u) {if (parent[u] != -1) {adj[u].erase(std::find(adj[u].begin(), adj[u].end(), parent[u]));}siz[u] = 1;for (auto &v : adj[u]) {parent[v] = u;dep[v] = dep[u] + 1;dfs1(v);siz[u] += siz[v];if (siz[v] > siz[adj[u][0]]) {std::swap(v, adj[u][0]);}}}void dfs2(int u) {in[u] = ++cur;max_dep[u] = dep[u];seq[in[u]] = u;for (auto v : adj[u]) {top[v] = v == adj[u][0] ? top[u] : v;dfs2(v);max_dep[u] = max(max_dep[u] , max_dep[v]);}out[u] = cur;}int lca(int u, int v) {while (top[u] != top[v]) {if (dep[top[u]] > dep[top[v]]) {u = parent[top[u]];} else {v = parent[top[v]];}}return dep[u] < dep[v] ? u : v;}void dfs3(){for(int i = 1 ; i <= n - 5 ; i ++){dp[i][0] = parent[i];}for(int i = 1 ; i <= n - 5; i ++){for(int j = 1 ; j < 30 ; j ++){if(dp[i][j - 1] < 1){continue;}dp[i][j] = dp[dp[i][j - 1]][j - 1];}}}int find_an(int x , int y){for(int i = 20 ; i >= 0 ; i--){int t = 1 << i;if(y >= t){x = dp[x][i];y -= t;}}return x;}int dist(int u, int v) {return dep[u] + dep[v] - 2 * dep[lca(u, v)];}int jump(int u, int k) {if (dep[u] < k) {return -1;}int d = dep[u] - k;while (dep[top[u]] > d) {u = parent[top[u]];}return seq[in[u] - dep[u] + d];}bool isAncester(int u, int v) {//是否为祖先return in[u] <= in[v] && in[v] < out[u];}int rootedParent(int u, int v) {std::swap(u , v);if (u == v) {return u;}if (!isAncester(u, v)) {return parent[u];}auto it = std::upper_bound(adj[u].begin(), adj[u].end(), v, [&](int x, int y) {return in[x] < in[y];}) - 1;return *it;}int rootedSize(int u, int v) {if (u == v) {return n;}if (!isAncester(v, u)) {return siz[v];}return n - siz[rootedParent(u, v)];}int rootedLca(int a, int b, int c) {return lca(a, b) ^ lca(b, c) ^ lca(c, a);}
}hld;
LL qpow(LL a , LL b)//快速幂
{LL sum=1;while(b){if(b&1){sum=sum*a%mod;}a=a*a%mod;b>>=1;}return sum;
}
void solve() 
{cin >> n;hld.init(n + 5);memset(dp , 0 ,sizeof dp);for(int i = 1 ; i < n ; i ++){int u , v;cin >> u >> v;hld.addEdge(u , v);}hld.work();hld.dfs3();int ans = 0;for(int i = 2 ; i <= n ; i ++){int t = hld.dep[i];if(t <= 2){ans += hld.max_dep[i];}else{int to = (t - 1) / 2;int an = hld.find_an(i , to);ans += hld.max_dep[an];}}ans %= mod;cout << (ans * qpow(n , mod - 2)) % mod<< endl;
}            
signed main() 
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cout.precision(10);int t=1;//cin>>t;while(t--){solve();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/620426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【非监督学习 02】高斯混合模型

高斯混合模型&#xff08;Guassian Mixed Model, GMM&#xff09;也是一种常见的聚类算法&#xff0c;与K均值算法类似&#xff0c;同样使用了EM算法进行迭代计算。高斯混合模型假设每个簇的数据都是符合高斯分布的&#xff0c;当前数据呈现的分布就是各个簇的高斯分布叠加在一…

仿真验证方法(2)——静态验证

一、静态验证 1.1 概述 在之前的文章中&#xff0c;我们介绍了动态仿真&#xff0c;但是动态仿真用于百万门以上电路时所需时间极长&#xff0c;而且其功能覆盖率取决于所设计的输入激励向量&#xff0c;很难达到100%&#xff0c;因此静态时序分析和等效性检查这样的静态验证是…

强化学习应用(七):基于Q-learning算法的无人车配送路径规划(通过Python代码)

一、Q-learning算法介绍 Q-learning是一种强化学习算法&#xff0c;用于解决基于环境的决策问题。它通过学习一个Q-table来指导智能体在不同状态下采取最优动作。下面是Q-learning算法的基本步骤&#xff1a; 1. 定义环境&#xff1a;确定问题的状态和动作空间&#xff0c;并…

python图像处理总结

等我有时间了&#xff0c;好好总结一下这几个图像处理包&#xff0c;为后面的研究做个铺垫 skimage包 可以用系统自带的图片&#xff0c;不用自己找图片 from skimage.io import imread, imshow from skimage import data image data.astronaut() imshow(image)后面可以拿这…

【MySQL】创建和管理表

文章目录 前置 标识符命名规则一、MySQL数据类型二、创建和管理数据库2.1 创建数据库2.2 使用数据库2.3 修改数据库2.4 删除数据库 三、创建表3.1 创建方式一3.2 创建方式二3.3 查看数据表结构 四、修改表4.1 增加一个列4.2 修改一个列4.3 重命名一个列4.4 删除一个列 五、重命…

简单明了,汽车级LM317系列LM317D2TR4G线性电压稳压器电源设计-参数应用方案分享

低压差线性稳压器&#xff08;LDO&#xff09;&#xff0c;是指一种具有恒定电流输出电压的装置&#xff0c;主要由输入变压器、整流器、输出变压器三部分构成&#xff0c;工业原理为将输入的交流电压经过整流、滤波后得到直流输出电压&#xff0c;再经过控制元件和开关器件将稳…

132基于matlab的采集信号模极大值以及李氏指数计算

基于matlab的采集信号模极大值以及李氏指数计算&#xff0c; 1)计算信号的小波变换。 2)求出模极大曲线。 3)计算其中两个奇异点的Lipschitz指数&#xff0c;程序已调通&#xff0c;可直接运行。 132matlab模极大曲线Lipschitz (xiaohongshu.com)

MATLAB - 机器人关节空间运动模型

系列文章目录 前言 关节空间运动模型描述了在闭环关节空间位置控制下机械手的运动&#xff0c;在关节空间运动模型&#xff08;jointSpaceMotionModel&#xff09;对象和关节空间运动模型块中使用。 机器人机械手是典型的位置控制设备。要进行关节空间控制&#xff0c;需要指…

Flask 小程序菜品搜索

mina/pages/food/index.wxml <!--index.wxml--> <!--1px 750/320 2.34rpx;--> <view class"container"><!--轮播图--><view class"swiper-container"><swiper class"swiper_box" autoplay"{{autoplay}…

直播预告丨看零售场,如何玩转 MaaS

今年&#xff0c;有一个被频繁提及的词是MaaS 这类工具正在帮助千行百业实现大模型落地产业 在零售场&#xff0c;特别是像京东这样拥有超高并发、超复杂协同的电商场内 也沉淀出了一套通用的AI基础设施——九数算法中台 从提升客户服务体验、平台效率出发&#xff0c;训练各…

【Python】数据可视化--基于TMDB_5000_Movie数据集

一、数据准备 tmdb_5000_movie数据集下载 二、数据预处理 观察数据集合情况 import pandas as pd import ast import warnings warnings.filterwarnings(ignore) # 加载数据集 df pd.read_csv(tmdb_5000_movies.csv) # 查看数据集信息 print(df.info()) 由于原数据集包含的…

Jenkins集成Sonar Qube

下载插件 重启Jenkins 容器 sonarqube 使用令牌 Jenkins 配置 重新构建

小程序基础学习(多插槽)

先创建插槽 定义多插槽的每一个插槽的属性 在js文件中启用多插槽 在页面使用多插槽 组件代码 <!--components/my-slots/my-slots.wxml--><view class"container"><view class"left"> <slot name"left" ></slot>&…

YOLOv8改进 | 注意力篇 | 实现级联群体注意力机制CGAttention (全网首发)

一、本文介绍 本文给大家带来的改进机制是实现级联群体注意力机制CascadedGroupAttention,其主要思想为增强输入到注意力头的特征的多样性。与以前的自注意力不同,它为每个头提供不同的输入分割,并跨头级联输出特征。这种方法不仅减少了多头注意力中的计算冗余,而且通过增…

八爪鱼拉拉手

欢迎来到程序小院 八爪鱼拉拉手 玩法&#xff1a;点击鼠标左键拖动移动八爪鱼&#xff0c;当他的手很忙的时候他会很高兴&#xff0c; 不同关卡不同的八爪鱼的位置摆放&#xff0c;快去闯关吧^^。开始游戏https://www.ormcc.com/play/gameStart/248 html <div id"gam…

GCC工具源码编译

文章目录 背景一、下载源码二、编译前依赖准备2.1 相关工具依赖2.2 相关lib&#xff08;gmp/ mpfr /mpc&#xff09;依赖2.2.1 lib源码下载2.2.2 lib源码编译 三、编译GCC3.1 编译3.2 链接 四、报错处理 背景 日常可能涉及到系统里自带GCC版本与被编译源码存在不兼容&#xff…

大模型背景下计算机视觉年终思考小结(一)

1. 引言 在过去的十年里&#xff0c;出现了许多涉及计算机视觉的项目&#xff0c;举例如下&#xff1a; 使用射线图像和其他医学图像领域的医学诊断应用使用卫星图像分析建筑物和土地利用率相关应用各种环境下的目标检测和跟踪&#xff0c;如交通流统计、自然环境垃圾检测估计…

【SSM框架】初识Spring

初识Spring Spring家族 Spring发展到今天已经形成了一种开发的生态圈&#xff0c;Spring提供了若千个项目&#xff0c;每个项目用于完成特定的功能 ✅Spring Framework&#xff08;底层框架&#xff09;Spring Boot&#xff08;提高开发速度&#xff09;Spring Cloud&#xf…

第1课 ROS 系统介绍

1.ROS操作系统介绍 在学习ROS 系统前&#xff0c;我们需要先了解操作系统的定义。操作系统&#xff0c;顾名思义&#xff0c;即提供部分软件和硬件的接口&#xff0c;以供用户直接使用。因此&#xff0c;针对不同的平台、不同的功能&#xff0c;需要采用不同的操作系统来完成底…

智能导诊-医院信息化建设标准

智能导诊系统主要依赖于自然语言处理和机器学习等技术。患者可以通过语音、文字等方式描述病情&#xff0c;系统通过自然语言处理技术对病情进行语义分析和理解。随后&#xff0c;机器学习算法对患者的症状和病情进行推理&#xff0c;结合已有的疾病知识库&#xff0c;为患者提…