2025 XYD Summer Camp 7.21 智靈班分班考 · Day1

智靈班分班考 · Day1

時間線

  • 8:00 在濱蘭實驗的遠古機房中的一個鍵盤手感爆炸的電腦上開考。
  • 開 T1,推了推發現可以 segment tree 優化 dp,由于按空格需要很大的力氣導致馬蜂被迫改變。后來忍不住了頂著疼痛按空格。
  • 8:30 過了樣例,但是沒有大樣例,先這樣吧。
  • 開 T2,發現每顆子樹可以對應到序列上的一段區間,感覺可以區間 dp,但是怎么知道左右兒子的點的左右手寫上什么呢?
  • 苦思冥想到 9:45,思考無果打算打一個暴搜,暴搜過程中發現狀態數可以直接從 O(n4)O(n^4)O(n4) 降到 O(n3)O(n^3)O(n3),但是我忘了轉移還要 O(n)O(n)O(n) 導致我以為我莫名其妙獲得正解,于是把暴搜加了個 O(n3)O(n^3)O(n3) 空間復雜度的記憶化數組(n≤500n\le 500n500)。
  • 10:20 開 T3,一眼盯真,維護每個區間的支配點對,這只有 O(nlog?V)O(n\log V)O(nlogV) 個,然后轉二維數點;二維數點過程中推出了形如給定 [l,r][l,r][l,r],數 l≤u≤v≤rl\le u\le v\le rluvr 的數量,腦子爆炸以為要數 (l,l)(l,l)(l,l)(r,r)(r,r)(r,r) 的矩形,發明了一會兒二維 st 未果,最后注意到只要數 l≤u≤nl\le u\le nlun1≤v≤r1\le v\le r1vr 就可以了。糖丸力
  • 寫完調完 T3 是 11:10,趕緊開 T4,一眼盯真,對 dfn 序維護線段樹,線段樹每個節點維護一個 01 Trie,單點修改就修改一整條鏈,查詢正常查詢,時空復雜度 O(nlog?nlog?V)O(n\log n\log V)O(nlognlogV),趕緊沖!欸之前是不是過來說了啥 T4 某個樣例要改一改?算了不管了。
  • 寫寫寫,11:45 分寫完,測樣例發現錯了(其實是因為樣例是錯的),以為自己讀錯題了,爆裂鼓手,遺憾離場。

期望得分 100+60+100+70,實際得分 30+0+100+0。掛了 200 分,天下無敵!

總榜排名第 50,下一場需要翻 20+ 名。

題解 & 錯因

T1

給定一個長度為 nnn 的數列 aaa,你需要選出若干個不相交也不相鄰的區間(即任意兩個區間中間至少隔一個元素),一個區間 [l,r][l,r][l,r] 能被選當且僅當 l=rl=rl=r 或者 ?i∈[l+1,r]\forall i\in[l+1,r]?i[l+1,r],滿足 ai≥∑j=li?1aja_i\ge\sum_{j=l}^{i-1}a_jai?j=li?1?aj?;求所有方案中區間中元素的最大和。

2≤n≤2×1052\le n\le 2\times 10^52n2×1051≤ai≤1091\le a_i\le 10^91ai?109

f(i)f(i)f(i) 表示考慮完 [1,i][1,i][1,i] 的答案。注意到以 aia_iai? 為選中區間右端點時,最長可選區間的左端點隨著 iii 增大單調不降,于是可以雙指針維護這個左端點。從 jjj 轉移的式子是 f(i)←max?k<j?1f(k)+∑k=jiakf(i)\gets \max_{k<j-1}f(k)+\sum_{k=j}^ia_kf(i)maxk<j?1?f(k)+k=ji?ak?,令 si=∑j=1iais_i=\sum_{j=1}^ia_isi?=j=1i?ai? 那么就是 f(i)←max?k<j?1f(k)+si?sj?1f(i)\gets \max_{k<j-1}f(k)+s_i-s_{j-1}f(i)maxk<j?1?f(k)+si??sj?1?,令 g(j)=max?k<jf(k)?sjg(j)=\max_{k<j}f(k)-s_{j}g(j)=maxk<j?f(k)?sj?,線段樹維護這個東西的區間最大值即可。時間復雜度 O(nlog?n)O(n\log n)O(nlogn)

為啥我掛成 30pts 了呢?賽時 g(j)g(j)g(j) 的表達式錯誤的認為是 f(j?1)?sjf(j-1)-s_{j}f(j?1)?sj?,也就是堅定的認為只要隔一個元素。痛失 70pts。

#include <bits/stdc++.h>
bool MemoryST; using namespace std;
#define ll long long
#define mk make_pair
#define open(x) freopen(#x".in", "r", stdin), freopen(#x".out", "w", stdout)
#define lowbit(x) ((x) & (-(x)))
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
#define BCNT __builtin_popcount
#define cost_time (1e3 * clock() / CLOCKS_PER_SEC) << "ms"
#define cost_space (abs(&MemoryST - &MemoryED) / 1024.0 / 1024.0) << "MB"
const int inf = 0x3f3f3f3f; 
const ll linf = 1e18; 
mt19937 rnd(random_device{}());
template<typename T> void chkmax(T& x, T y) { x = max(x, y); }
template<typename T> void chkmin(T& x, T y) { x = min(x, y); }
template<typename T> T abs(T x) { return (x < 0) ? -x : x; }const int maxn = 2e5 + 5;
int n, a[maxn]; ll sum[maxn];
ll f[maxn];
ll mx[maxn<<2];
// 一開始空格按的難受死了沒打空格
void update(int rt){mx[rt]=max(mx[rt<<1],mx[rt<<1|1]);
}void build(int l,int r,int rt){if(l==r){mx[rt]=-1e18;return;}int mid=(l+r)>>1;build(lson),build(rson),update(rt);
}ll query(int l,int r,int rt,int nowl, int nowr){if (nowl > nowr) return 0;if(nowl<= l && r <= nowr) return mx[rt];int mid = (l + r) >> 1; ll res = -1e18;if (nowl <= mid) res = max(res, query(lson, nowl, nowr));if (mid < nowr) res = max(res, query(rson, nowl, nowr));return res;
}
// 忍不住開始打空格
void modify(int l, int r, int rt, int now, ll k) {if (l == r) return mx[rt] = max(mx[rt], k), void(0);int mid = (l + r) >> 1;if (now <= mid) modify(lson, now, k);else modify(rson, now, k);update(rt);
}
bool MemoryED; int main() {scanf("%d",&n),build(0,n,1);for(int i=1;i<=n;i++)scanf("%d",&a[i]),sum[i]=sum[i-1]+a[i];modify(0, n, 1, 0, -sum[1]);modify(0, n, 1, 1, (f[1] = a[1]) - sum[2]);ll ans = a[1];for(int i=2,j=1;i<=n;i++){for(j<i;sum[i-1]-sum[j-1]>a[i];j++);f[i] = f[i - 1];if (j == 1) {chkmax(f[i], sum[i]);modify(0, n, 1, i, sum[i] - sum[i + 1]);} else {chkmax(f[i], query(0, n, 1, j - 2, i - 2) + sum[i]);modify(0, n, 1, i, f[i] - sum[i + 1]);} ans = max(ans, f[i]);}printf("%lld\n", ans);return 0;
}

T2

給定一個長度為 nnn 的序列 aaa,對于所有中序遍歷為 1,2,??,n1,2,\cdots,n1,2,?,n 且是以點的編號為鍵值的二叉搜索樹,定義一個點 uuu 的權值是:從 uuu 到根節點的路徑中,深度最深的是父節點左兒子的父節點權值(若沒有則是 111)乘上深度最深的是父節點右兒子的父節點權值(若沒有則是 111),整棵樹的權值是所有點的權值的和。求所有樹的權值的最大值。

1≤n≤5001\le n\le 5001n5001≤ai≤1071\le a_i\le 10^71ai?107

注意到任意一個區間 [l,r][l,r][l,r] 都可以對應一個子樹。不妨我們指定 [l,r][l,r][l,r] 這顆子樹的根節點是 xxxl≤x≤rl\le x\le rlxr),我們考察 xxx 是哪兩個父節點的權值乘積。

由圖可知:xxx 的權值就是 al?1×ar+1a_{l-1}\times a_{r+1}al?1?×ar+1?,不妨認為 a0=an+1=1a_0=a_{n+1}=1a0?=an+1?=1。那就可以進行區間 dp 了,設 f(l,r)f(l,r)f(l,r) 表示子樹 [l,r][l,r][l,r] 的最大權值,轉移就是
f(l,r)=al?1×ar+1+max?l≤x≤rf(l,x?1)+f(x+1,r) f(l,r)=a_{l-1}\times a_{r+1}+\max_{l\le x\le r}f(l,x-1)+f(x+1,r) f(l,r)=al?1?×ar+1?+lxrmax?f(l,x?1)+f(x+1,r)
時間復雜度 O(n3)O(n^3)O(n3),空間復雜度 O(n2)O(n^2)O(n2)

為啥賽時沒推出來呢?我一直在想能不能把點從根轉化為從根到點,這樣子權值就變成最后一個滿足條件的點而非第一個,然后 balabala 就墜機了。開了一個 500×500×500×2500\times 500\times 500\times 2500×500×500×2 的數組導致 MLE 0pts。

#include <bits/stdc++.h>
bool MemoryST; using namespace std;
#define ll long long
#define mk make_pair
#define open(x) freopen(#x".in", "r", stdin), freopen(#x".out", "w", stdout)
#define lowbit(x) ((x) & (-(x)))
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
#define BCNT __builtin_popcount
#define cost_time (1e3 * clock() / CLOCKS_PER_SEC) << "ms"
#define cost_space (abs(&MemoryST - &MemoryED) / 1024.0 / 1024.0) << "MB"
const int inf = 0x3f3f3f3f; 
const ll linf = 1e18; 
mt19937 rnd(random_device{}());
template<typename T> void chkmax(T& x, T y) { x = max(x, y); }
template<typename T> void chkmin(T& x, T y) { x = min(x, y); }
template<typename T> T abs(T x) { return (x < 0) ? -x : x; }
const int maxn = 505;
int n, a[maxn]; ll f[maxn][maxn];
bool MemoryED; int main() {scanf("%d", &n), a[0] = a[n + 1] = 1;for (int i = 1; i <= n; i ++) scanf("%d", &a[i]);for (int i = 1; i <= n; i ++) f[i][i] = 1ll * a[i - 1] * a[i + 1];for (int len = 2; len <= n; len ++)for (int l = 1, r = l + len - 1; r <= n; l ++, r ++) {for (int x = l; x <= r; x ++)chkmax(f[l][r], (x == l ? 0 : f[l][x - 1]) + (x == r ? 0 : f[x + 1][r]));f[l][r] += 1ll * a[l - 1] * a[r + 1];}printf("%lld", f[1][n]);return 0;
}

T3

給定一個長度為 nnn 的序列 aaaQQQ 次詢問,每次給定 [l,r][l,r][l,r](保證 l<rl<rl<r),求
max?i,j∈[l,r],i≠jgcd?(ai,aj) \max_{i,j\in[l,r],i\ne j}\gcd(a_i,a_j) i,j[l,r],i=jmax?gcd(ai?,aj?)
n,Q≤2×105n,Q\le 2\times 10^5n,Q2×105

luqyou 在前兩天的膜你賽中出了近乎一樣的題,且昨天晚上寢室的雜題選講環節中有人提到了支配點對這個東西。考慮一對 (i1,j1)(i_1,j_1)(i1?,j1?),如果有一對 (i2,j2)(i_2,j_2)(i2?,j2?) 滿足 i1≤i2<j2≤j1i_1\le i_2<j_2\le j_1i1?i2?<j2?j1?gcd?(ai1,aj1)≤gcd?(ai2,aj2)\gcd(a_{i_1},a_{j_1})\le \gcd(a_{i_2},a_{j_2})gcd(ai1??,aj1??)gcd(ai2??,aj2??),那 (i1,j1)(i_1,j_1)(i1?,j1?) 的貢獻就不需要考慮了。也就是說,我們可以找出若干對真正對每個詢問有貢獻的點對,稱為支配點對。哪些點對是支配點對呢?考慮對于每個 ddd,我們找出所有是 ddd 的倍數的 aia_iai? 的下標序列 i1,i2??,iki_1,i_2\cdots,i_ki1?,i2??,ik?,從小到大排序后顯然只有 (i1,i2),(i2,i3),?(i_1,i_2),(i_2,i_3),\cdots(i1?,i2?),(i2?,i3?),? 這樣的點對可能是支配點對。進一步分析,對于一個 iii,假設在上一步中選出了若干個可能為支配點對的點對 (i,j1),(i,j2),??,(i,jk)(i,j_1),(i,j_2),\cdots,(i,j_k)(i,j1?),(i,j2?),?,(i,jk?) 并且 j1<j2<?<jkj_1<j_2<\cdots<j_kj1?<j2?<?<jk?;那么對于一個 ju<jvj_u<j_vju?<jv?,如果 gcd?(i,ju)≥gcd?(i,jv)\gcd(i,j_u)\ge \gcd(i,j_v)gcd(i,ju?)gcd(i,jv?) 那么 (i,jv)(i,j_v)(i,jv?) 這對點對也沒有用了。這樣最終的點對數量大概是所有 aia_iai? 的因子個數和,但顯然遠遠不到,大概可以估成 O(nlog?n)O(n\log n)O(nlogn)。最后做一個二維數點即可。

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5, V = 2e5;
int n, Q, a[maxn]; vector<int> tab[maxn];
vector<int> f[maxn]; vector<pair<int, int> > imp[maxn];
#define lowbit(x) ((x) & (-(x)))
struct Point {int x, y, val, qid;
}; vector<Point> p;
int b[maxn], ans[maxn];
void add(int x, int v) { x = n - x + 1;for (; x <= n; x += lowbit(x))b[x] = max(b[x], v);
} int ask(int x) { x = n - x + 1;int res = 0;for (; x; x -= lowbit(x))res = max(res, b[x]);return res;
} 
#define open(x) freopen(#x".in", "r", stdin), freopen(#x".out", "w", stdout)
int read() {char c = getchar();for (; c < '0' || c > '9'; c = getchar());int s = 0;for (; c >= '0' && c <= '9'; c = getchar())s = (s << 1) + (s << 3) + (c ^ 48);return s;
}
int main() { // open(data);n = read();for (int i = 1; i <= n; i ++)a[i] = read(), tab[a[i]].push_back(i);for (int i = 2; i <= V; i ++)for (int j = i; j <= V; j += i)if (!tab[j].empty())for (int k : tab[j]) f[i].push_back(k);for (int i = 2; i <= V; i ++) if ((int)f[i].size() > 1) {int len = (int)f[i].size(); sort(f[i].begin(), f[i].end());for (int j = 0; j < len - 1; j ++) {int now = f[i][j], nxt = f[i][j + 1];while (!imp[now].empty() && imp[now].back().second >= nxt) imp[now].pop_back();imp[now].emplace_back(i, nxt);}} for (int i = 1; i <= n; i ++)for (auto j : imp[i]) p.push_back(Point { j.second, i, j.first, 0 });Q = read();for (int i = 1, L, R; i <= Q; i ++) L = read(), R = read(), p.push_back(Point { R, L, 0, i });sort(p.begin(), p.end(), [&](const Point &x, const Point &y) {return x.x == y.x ? y.qid > 0 : x.x < y.x;}); for (Point cur : p) {int x = cur.x, y = cur.y, val = cur.val, qid = cur.qid;if (qid != 0) ans[qid] = max(1, ask(y));else add(y, val);} for (int i = 1; i <= Q; i ++)printf("%d\n", ans[i]);return 0;
} 

唯一一道做對的題

T4

給定一個樹,初始只有一個根節點 111QQQ 次操作,要么給定一個點 xxx 和一個 www,在 xxx 節點的孩子中增加一個點,邊權為 www;要么給定 u,vu,vu,v,求對于所有 vvv 子樹中的點 iiiuuuiii 的路徑的邊權異或和的最大值。

1≤Q≤2×1051\le Q\le 2\times 10^51Q2×1050≤w≤2300\le w\le 2^{30}0w230

把操作離線下來得到一棵 nnn 個點的樹。考慮 u,vu,vu,v 兩點間路徑異或和就等于 uuu 到根的路徑異或和異或上 vvv 到根的路徑異或和,那操作就變成:

  • 給一個點一個點權;
  • 給定一個 www 和點 uuu,求 uuu 的子樹中所有點權異或上 www 的最大值。

不妨在這棵樹上 dfs,每個點維護一個子樹中所有點權的 01Trie,每次像線段樹合并那樣合并孩子的 01Trie;01 Trie 上對每條邊維護一個最早建立時間即可。時間復雜度 O(nlog?n)O(n\log n)O(nlogn)

賽時做法因為空間爆了只能拿 70pts,好像也能進行類似的離線使空間復雜度下降。

#include <bits/stdc++.h>
bool MemoryST; using namespace std;
#define ll long long
#define mk make_pair
#define open(x) freopen(#x".in", "r", stdin), freopen(#x".out", "w", stdout)
#define lowbit(x) ((x) & (-(x)))
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
#define BCNT __builtin_popcount
#define cost_time (1e3 * clock() / CLOCKS_PER_SEC) << "ms"
#define cost_space (abs(&MemoryST - &MemoryED) / 1024.0 / 1024.0) << "MB"
const int inf = 0x3f3f3f3f; 
const ll linf = 1e18; 
mt19937 rnd(random_device{}());
template<typename T> void chkmax(T& x, T y) { x = max(x, y); }
template<typename T> void chkmin(T& x, T y) { x = min(x, y); }
template<typename T> T abs(T x) { return (x < 0) ? -x : x; }
const int maxn = 2e5 + 5;
int Q, tim[maxn], f[maxn], n; vector<pair<int, int> > que[maxn];
namespace Graph {struct Edge { int to, nxt; } e[maxn << 1];int head[maxn], ecnt;void addEdge(int u, int v) { e[++ ecnt] = Edge { v, head[u] }, head[u] = ecnt; }
} using namespace Graph; char tmp[10];
struct Trie {Trie *son[2]; int create_time;Trie(int t0 = inf) { son[0] = son[1] = nullptr, create_time = t0; }
} *root[maxn];
void insert(Trie *rt, int x, int tim) {Trie *cur = rt;for (int i = 29; ~i; i --)if (x & (1 << i)) {if (cur -> son[1] == nullptr)cur -> son[1] = new Trie();chkmin(cur -> son[1] -> create_time, tim), cur = cur -> son[1];} else {if (cur -> son[0] == nullptr)cur -> son[0] = new Trie();chkmin(cur -> son[0] -> create_time, tim), cur = cur -> son[0];}
} int query(Trie *rt, int x, int tim) {Trie *cur = rt; int ans = 0;for (int i = 29; ~i; i --) if (x & (1 << i)) {if (cur -> son[0] != nullptr && cur -> son[0] -> create_time < tim)ans += (1 << i), cur = cur -> son[0];else cur = cur -> son[1];} else {if (cur -> son[1] != nullptr && cur -> son[1] -> create_time < tim)ans += (1 << i), cur = cur -> son[1];else cur = cur -> son[0];}return ans;
} Trie *merge(Trie *rt, Trie *oth) {if (rt == nullptr) return oth;if (oth == nullptr) return rt;chkmin(rt -> create_time, oth -> create_time);rt -> son[0] = merge(rt -> son[0], oth -> son[0]), rt -> son[1] = merge(rt -> son[1], oth -> son[1]);delete oth; oth = nullptr; return rt;
} int ans[maxn]; void dfs(int u, int fa) {root[u] = new Trie(0); insert(root[u], f[u], tim[u]);for (int i = head[u], v; i; i = e[i].nxt) {if ((v = e[i].to) == fa) continue;dfs(v, u), root[u] = merge(root[u], root[v]);} for (auto [tim, val] : que[u])ans[tim] = query(root[u], val, tim);
} vector<int> qid;
bool MemoryED; int main() {scanf("%d", &Q); int n = 1; tim[1] = f[1] = 0;for (int i = 1, u, v, w; i <= Q; i ++) {scanf("%s", tmp);if (tmp[0] == 'A') {scanf("%d %d", &u, &w), tim[++ n] = i;f[n] = f[u] ^ w, addEdge(n, u), addEdge(u, n);} else scanf("%d %d", &u, &v), que[v].emplace_back(i, f[u]), qid.push_back(i);} dfs(1, 0); for (int i : qid) printf("%d\n", ans[i]);return 0;
}

還是非常好寫的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92949.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92949.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92949.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于多種主題分析、關鍵詞提取算法的設計與實現【TF-IDF算法、LDA、NMF分解、BERT主題模型】

文章目錄有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主一、項目背景二、研究目標與意義三、數據獲取與處理四、文本分析與主題建模方法1. 傳統方法探索2. 主題模型比較與優化3. 深度語義建模與聚類五、研究成果與應用價值六、總結與展望總結每文一…

MDC(Mapped Diagnostic Context) 的核心介紹與使用教程

關于日志框架中 MDC&#xff08;Mapped Diagnostic Context&#xff09; 的核心介紹與使用教程&#xff0c;結合其在分布式系統中的實際應用場景&#xff0c;分模塊說明&#xff1a; 一、MDC 簡介 MDC&#xff08;映射診斷上下文&#xff09; 是 SLF4J/Logback 提供的一種線程…

Linux隨記(二十一)

一、highgo切換leader&#xff0c;follow - 隨記 【待寫】二、highgo的etcd未授權訪問 - 隨記 【待寫】三、highgo的etcd未授權訪問 - 隨記 【待寫】3.2、etcd的metric未授權訪問 - 隨記 【待寫】四、安裝Elasticsearch 7.17.29 和 Elasticsearch 未授權訪問【原理掃描】…

Java環境配置之各類組件下載安裝教程整理(jdk、idea、git、maven、mysql、redis)

Java環境配置之各類組件下載安裝教程整理&#xff08;jdk、idea、git、maven、mysql、redis&#xff09;1.[安裝配置jdk8]2.[安裝配置idea]3.[安裝配置git]4.[安裝配置maven]5.[安裝配置postman]6.[安裝配置redis和可視化工具]7.[安裝配置mysql和可視化工具]8.[安裝配置docker]…

配置https ssl證書生成

1.可用openssl生成私鑰和自簽名證書 安裝opensslsudo yum install openssl -y 2.生成ssl證書 365天期限sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /etc/ssl/private/nginx-selfsigned.key \-out /etc/ssl/certs/nginx-selfsigned.crt3、按照提示編…

編程語言Java——核心技術篇(四)集合類詳解

言不信者行不果&#xff0c;行不敏者言多滯. 目錄 4. 集合類 4.1 集合類概述 4.1.1 集合框架遵循原則 4.1.2 集合框架體系 4.2 核心接口和實現類解析 4.2.1 Collection 接口體系 4.2.1.1 Collection 接口核心定義 4.2.1.2 List接口詳解 4.2.1.3 Set 接口詳解 4.2.1.4…

GaussDB 數據庫架構師(八) 等待事件(1)-概述

1、等待事件概述 等待事件&#xff1a;指當數據庫會話(session)因資源競爭或依賴無法繼續執行時&#xff0c;進入"等待"狀態&#xff0c;此時產生的性能事件即等待事件。 2、等待事件本質 性能瓶頸的信號燈&#xff0c;反映CPU,I/O、鎖、網絡等關鍵資源的阻塞情況。…

五分鐘系列-文本搜索工具grep

目錄 1??核心功能?? ??2??基本語法?? 3????常用選項 & 功能詳解?? ??4??經典應用場景 & 示例?? 5????重要的提示 & 技巧?? ??6??總結?? grep 是 Linux/Unix 系統中功能強大的??文本搜索工具??&#xff0c;其名稱源自 …

Java面試題及詳細答案120道之(041-060)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

【嘗試】本地部署openai-whisper,通過 http請求識別

安裝whisper的教程&#xff0c;已在 https://blog.csdn.net/qq_23938507/article/details/149394418 和 https://blog.csdn.net/qq_23938507/article/details/149326290 中說明。 1、創建whisperDemo1.py from fastapi import FastAPI, UploadFile, File import whisper i…

Visual Studio 的常用快捷鍵

Visual Studio 作為主流的開發工具&#xff0c;提供了大量快捷鍵提升編碼效率。以下按功能分類整理常用快捷鍵&#xff0c;涵蓋基礎操作、代碼編輯、調試等場景&#xff08;以 Visual Studio 2022 為例&#xff0c;部分快捷鍵可在「工具 > 選項 > 環境 > 鍵盤」中自定…

Triton Server部署Embedding模型

在32核CPU、無GPU的服務器上&#xff0c;使用Python后端和ONNX后端部署嵌入模型&#xff0c;并實現并行調用和性能優化策略。方案一&#xff1a;使用Python后端部署Embedding模型 Python后端提供了極大的靈活性&#xff0c;可以直接在Triton中運行您熟悉的sentence-transformer…

Java動態調試技術原理

本文轉載自 美團技術團隊胡健的Java 動態調試技術原理及實踐, 通過學習java agent方式進行動態調試了解目前很多大廠開源的一些基于此的調試工具。 簡介 斷點調試是我們最常使用的調試手段&#xff0c;它可以獲取到方法執行過程中的變量信息&#xff0c;并可以觀察到方法的執…

人工智能-python-OpenCV 圖像基礎認知與運用

文章目錄OpenCV 圖像基礎認知與運用1. OpenCV 簡介與安裝OpenCV 的優勢安裝 OpenCV2. 圖像的基本概念2.1. 圖像的存儲格式2.2. 圖像的表示3. 圖像的基本操作3.1. 創建圖像窗口3.2. 讀取與顯示圖像3.3. 保存圖像3.4. 圖像切片與區域提取3.5. 圖像大小調整4. 圖像繪制與注釋4.1. …

Windows電腦添加、修改打印機的IP地址端口的方法

本文介紹在Windows電腦中&#xff0c;為打印機添加、修改IP地址&#xff0c;從而解決電腦能找到打印機、但是無法打印問題的方法。最近&#xff0c;辦公室的打印機出現問題——雖然在電腦的打印機列表能找到這個打印機&#xff0c;但是選擇打印時&#xff0c;就會顯示文檔被掛起…

告別復雜配置!Spring Boot優雅集成百度OCR的終極方案

1. 準備工作 1.1 注冊百度AI開放平臺 訪問百度AI開放平臺 注冊賬號并登錄 進入控制臺 → 文字識別 → 創建應用 記錄下API Key和Secret Key 2. 項目配置 2.1 添加依賴 (pom.xml) <dependencies><!-- Spring Boot Web --><dependency><groupId>o…

「iOS」——內存五大分區

UI學習iOS-底層原理 24&#xff1a;內存五大區總覽一、棧區&#xff08;Stack&#xff09;1.1 核心特性1.2 優缺點1.3函數棧與棧幀1.3 堆棧溢出風險二、堆區&#xff08;Heap&#xff09;;2.1 核心特性2.2 與棧區對比三、全局 / 靜態區&#xff08;Global/Static&#xff09;3.…

每日一題【刪除有序數組中的重復項 II】

刪除有序數組中的重復項 II思路class Solution { public:int removeDuplicates(vector<int>& nums) {if(nums.size()<2){return nums.size();}int index 2;for (int i 2; i < nums.size();i ) {if(nums[i] ! nums[index-2]) {nums[index]nums[i];}}return ind…

兼容性問題記錄

1、dialog設置高度MATCH_PARENT全屏后&#xff0c;三星機型和好像是一加&#xff0c;會帶出頂部狀態欄&#xff0c;設置隱藏狀態欄屬性無效。解決方法&#xff1a;高度不設置為MATCH_PARENT&#xff0c;通過windowmanager.getdefaultdisplay來獲取并設置高度&#xff0c;再設置…

6.數組和字符串

在C語言中&#xff0c;數組和字符串是基礎且重要的概念。它們用于存儲和操作一系列相同類型的元素或字符序列。數組1. 數組定義與初始化數組是一系列相同類型的數據項的集合&#xff0c;這些數據項可以通過一個共同的名字來引用。數組中的每個元素都有一個索引&#xff08;也稱…