CCF-CSP认证考试 202212-5 星际网络 52/68分题解

更多 CSP 认证考试题目题解可以前往:CSP-CCF 认证考试真题题解


原题链接: 202212-5 星际网络

时间限制: 5.0s
内存限制: 512.0MB

问题描述

23333 23333 23333 年,在经过长时间的建设后,一个庞大的星际网络终于初具规模。星际网络共接入了 n n n 颗星球,由 m m m 颗中继卫星来实现星球之间的互联互通。所有星球之间的通信都必须经由一颗或多颗中继卫星来实现,星球本身也可以起到中继的作用,如果两颗星球的距离很远,数据可以沿“星球——中继卫星——星球——中继卫星——…——星球”的模式进行传输。

对于每一颗中继卫星而言,可以与多颗距离上较为接近的星球通信,但由于卫星结构的设计原因,通信只能单向进行。具体而言,第 i i i 颗中继卫星可以接收编号在 [ l 1 i , r 1 i ] [l_{1i},r_{1i}] [l1i,r1i] 范围内的星球发送来的数据,并向编号在 [ l 2 i , r 2 i ] [l_{2i},r_{2i}] [l2i,r2i] 范围内的星球发送数据。

数据在星际之间传输的延迟当然是惊人的。为简单起见,我们假设这一延迟只由数据经过的中继卫星决定,即数据从不同的星球发出,经同一个中继卫星,到达不同的星球,所需的延迟时间总是相同的。对于第 i i i 颗中继卫星,数据经由该中继卫星传输所需的延迟时间约为 T i T_i Ti 秒。由于这个数字实在太过巨大,而且对于星际间通信的延迟估计总是充满了各种不准确因素,我们只关心其若干位有效数字,具体而言将给出二元组 ( a i , b i ) (a_i,b_i) (ai,bi) ,表示 T i = a i × 2 b i T_i=a_i\times2^{b_i} Ti=ai×2bi。我们假设数据在其他位置的延迟均可忽略。实际传输中,数据从源星球发出,经由很多颗中继卫星和星球最终到达目的星球,则总延迟为过程中经过的所有中继卫星的延迟之和。

数据从某个星球出发到达另一个星球,其在中继卫星和星球之间所经过的传输路径可能是多种多样的。与普通的计算机网络类似,我们需要设计相应的路由算法来选择合适的传输路径。一种直观的方案是最小延迟原则,即数据总是会选择总延迟时间最小的传输路径。

星际网络建成后,工程师们希望通过类似于计算机网络中ping的方法来测试该网络。从星球A向星球B发起一次ping的经过如下:首先从星球A发送请求数据,数据经星际网络传输至星球B,星球B随即发送回复数据,经星际网络传输至星球A,星球A计算从它发出请求到收到回复的所经时间,称为此次ping的响应时间。如果星际网络结构有缺陷,使得星球A发出的请求无法到达星球B,或星球B发出的回复无法到达星球A,则星球A在等待足够长时间后会得到“请求超时”的结果。

现在需要从 1 1 1 号星球向其他所有星球依次发起一次ping,假设所有数据的传输均遵循最小延迟原则,请你计算出每次ping的响应时间。

输入格式

从标准输入读入数据。

1 1 1 行: 2 2 2 个正整数 n , m n,m n,m

接下来 m m m 行:每行 6 6 6 个非负整数 l 1 i , r 1 i , l 2 i , r 2 i , a i , b i l_{1i},r_{1i},l_{2i},r_{2i},a_i,b_i l1i,r1i,l2i,r2i,ai,bi,描述一颗中继卫星,具体含义如上所述。

输出格式

输出到标准输出中。

输出一行, n − 1 n-1 n1 个整数,第 i i i 个整数表示星球 1 1 1 向星球 i + 1 i+1 i+1 发起ping的响应时间,对 1 0 9 + 7 10^9+7 109+7 取模后输出。

特别地,如果某次ping的结果为请求超时,输出 -1。

样例 1 输入

5 5
1 2 2 3 1 2
2 2 1 1 3 0
2 3 4 5 1 1
3 3 4 4 1 0
4 4 1 2 1 0

样例 1 输出

7 6 6 -1

样例说明

1 1 1 号星球到 2 2 2 号星球的请求数据最小延迟为 4 4 4 2 2 2 号星球的回复数据最小延迟为 3 3 3

1 1 1 号星球到 3 3 3 号星球的请求数据最小延迟为 4 4 4 3 3 3 号星球的回复数据最小延迟为 2 2 2

1 1 1 号星球到 4 4 4 号星球的请求数据最小延迟为 5 5 5 4 4 4 号星球的回复数据最小延迟为 1 1 1

1 1 1 号星球到 5 5 5 号星球的请求数据最小延迟为 6 6 6 5 5 5 号星球的回复数据无法到达 1 1 1 号星球。

样例 2 输入

3 2
1 2 1 2 999999999 34
2 3 2 3 987654321 12

样例 2 输出

122094981 986235983

数据范围

对于所有数据, n ≤ 1 0 5 , m ≤ 1 0 5 , 1 ≤ l 1 i ≤ r 1 i ≤ n , 1 ≤ l 2 i ≤ r 2 i ≤ n , 1 ≤ a i ≤ 1 0 9 , 0 ≤ b i ≤ 1 0 5 n\leq 10^5, m \leq 10^5, 1\leq l_{1i} \leq r_{1i} \leq n, 1\leq l_{2i} \leq r_{2i} \leq n, 1 \leq a_i \leq 10^9, 0 \leq b_i \leq 10^5 n105,m105,1l1ir1in,1l2ir2in,1ai109,0bi105

测试点编号$n \leq $$m \leq $ b i ≤ b_i \leq bi特殊性质
1 1 1 10 10 10 10 10 10 0 0 0
2 ∼ 3 2 \sim 3 23 100 100 100 100 100 100 0 0 0
4 ∼ 5 4 \sim 5 45 1000 1000 1000 1000 1000 1000 0 0 0
6 ∼ 8 6 \sim 8 68 1 0 5 10^5 105 1 0 5 10^5 105 0 0 0 l 1 i = r 1 i , l 2 i = r 2 i l_{1i}=r_{1i}, l_{2i}=r_{2i} l1i=r1i,l2i=r2i
9 ∼ 10 9 \sim 10 910 1 0 5 10^5 105 1 0 5 10^5 105 0 0 0 l 1 i = r 1 i l_{1i}=r_{1i} l1i=r1i
11 ∼ 13 11 \sim 13 1113 1 0 5 10^5 105 1 0 5 10^5 105 0 0 0
14 ∼ 15 14 \sim 15 1415 100 100 100 100 100 100 100 100 100
16 ∼ 17 16 \sim 17 1617 1000 1000 1000 1000 1000 1000 1000 1000 1000
18 ∼ 20 18 \sim 20 1820 1 0 5 10^5 105 1 0 5 10^5 105 1 0 5 10^5 105 l 1 i = r 1 i , l 2 i = r 2 i l_{1i}=r_{1i}, l_{2i}=r_{2i} l1i=r1i,l2i=r2i
21 ∼ 22 21 \sim 22 2122 1 0 5 10^5 105 1 0 5 10^5 105 1 0 5 10^5 105 l 1 i = r 1 i l_{1i}=r_{1i} l1i=r1i
23 ∼ 25 23 \sim 25 2325 1 0 5 10^5 105 1 0 5 10^5 105 1 0 5 10^5 105

52 分题解(测试点 1~13)

前置知识:线段树优化建图 - OI Wiki。

13 13 13 个测试点的 b = 0 b=0 b=0,即边权的范围是 [ 1 , 1 0 9 ] [1,10^9] [1,109],直接用 long long 做就行了。

先建立好出树和入树,对于给定的一条边 l 1 i , r 1 i , l 2 i , r 2 i , a i , b i l_{1i},r_{1i},l_{2i},r_{2i},a_i,b_i l1i,r1i,l2i,r2i,ai,bi,新建一个节点 x x x,建立从出树中在 [ l 1 i , r 1 i ] [l_{1i},r_{1i}] [l1i,r1i] 中且其父节点不在该区间中的节点编号到 x x x 的一条边,和从 x x x 到入树中在 [ l 2 i , r 2 i ] [l_{2i},r_{2i}] [l2i,r2i] 中且其父节点不在该区间中的节点编号的一条边。对建好的图跑以 1 1 1 号点为源点的 Dijkstra 算法即可求出从 1 1 1 号点到其他点的最短距离。

重新建立一张图,所有边的方向调换。即在建立好出入和入树后,对于给定的一条边 l 1 i , r 1 i , l 2 i , r 2 i , a i , b i l_{1i},r_{1i},l_{2i},r_{2i},a_i,b_i l1i,r1i,l2i,r2i,ai,bi,新建一个节点 x x x,建立从出树中在 [ l 2 i , r 2 i ] [l_{2i},r_{2i}] [l2i,r2i] 中且其父节点不在该区间中的节点编号到 x x x 的一条边,和从 x x x 到入树中在 [ l 1 i , r 1 i ] [l_{1i},r_{1i}] [l1i,r1i] 中且其父节点不在该区间中的节点编号的一条边。对建好的图跑以 1 1 1 号点为源点的 Dijkstra 算法即可求出从其他点到 1 1 1 号点的最短距离。

将两个距离相加即为答案,注意取模和不可到达的情况。

时间复杂度: O ( n log ⁡ n + m log ⁡ n log ⁡ ( m log ⁡ n ) ) \mathcal{O}(n\log n+m\log n\log(m\log n)) O(nlogn+mlognlog(mlogn))

52 分参考代码(718ms,87.85MB)

/*Created by Pujx on 2024/3/29.
*/
#pragma GCC optimize(2, 3, "Ofast", "inline")
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define int long long
//#define double long double
using i64 = long long;
using ui64 = unsigned long long;
using i128 = __int128;
#define inf (int)0x3f3f3f3f3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define yn(x) cout << (x ? "yes" : "no") << endl
#define Yn(x) cout << (x ? "Yes" : "No") << endl
#define YN(x) cout << (x ? "YES" : "NO") << endl
#define mem(x, i) memset(x, i, sizeof(x))
#define cinarr(a, n) for (int i = 1; i <= n; i++) cin >> a[i]
#define cinstl(a) for (auto& x : a) cin >> x;
#define coutarr(a, n) for (int i = 1; i <= n; i++) cout << a[i] << " \n"[i == n]
#define coutstl(a) for (const auto& x : a) cout << x << ' '; cout << endl
#define all(x) (x).begin(), (x).end()
#define md(x) (((x) % mod + mod) % mod)
#define ls (s << 1)
#define rs (s << 1 | 1)
#define ft first
#define se second
#define pii pair<int, int>
#ifdef DEBUG#include "debug.h"
#else#define dbg(...) void(0)
#endifconst int N = 2e5 + 5;
//const int M = 1e5 + 5;
//const int mod = 998244353;
const int mod = 1e9 + 7;
template <typename T> T ksm(T a, i64 b) { T ans = 1; for (; b; a = 1ll * a * a, b >>= 1) if (b & 1) ans = 1ll * ans * a; return ans; }
//template <typename T> T ksm(T a, i64 b, T m = mod) { T ans = 1; for (; b; a = 1ll * a * a % m, b >>= 1) if (b & 1) ans = 1ll * ans * a % m; return ans; }int l1[N], r1[N], l2[N], r2[N], a[N], b[N];
int n, m, t, k, q, cnt;
vector<pair<int, i64>> g[N << 2];template <typename T> struct SegmentTree {struct TreeNode { int l, r, lson, rson; } tr[N << 2];void build(int& s, int l, int r, bool io) {s = ++cnt;tr[s].l = l, tr[s].r = r;if (l == r) {if (!io) g[l].emplace_back(cnt, 0);else g[cnt].emplace_back(l, 0);return;}int mid = l + r >> 1;if (l <= mid) build(tr[s].lson, l, mid, io);if (mid < r) build(tr[s].rson, mid + 1, r, io);if (!io) g[tr[s].lson].emplace_back(s, 0), g[tr[s].rson].emplace_back(s, 0);else g[s].emplace_back(tr[s].lson, 0), g[s].emplace_back(tr[s].rson, 0);}vector<int> v[2];void query(int s, int l, int r, bool io) {if (l <= tr[s].l && tr[s].r <= r) return v[io].emplace_back(s), void();int mid = tr[s].l + tr[s].r >> 1;if (l <= mid) query(tr[s].lson, l, r, io);if (mid < r) query(tr[s].rson, l, r, io);}
};
SegmentTree<int> T;i64 dis[N << 2], ans[N];
bool vis[N << 2];
void dijkstra() {mem(dis, 0x3f); mem(vis, 0);dis[1] = 0;priority_queue<pair<i64, int>, vector<pair<i64, int>>, greater<pair<i64, int>>> pq;pq.push({0, 1});while (!pq.empty()) {int u = pq.top().second; pq.pop();if (vis[u]) continue;vis[u] = true;for (auto tem : g[u]) {int v = tem.first; i64 w = tem.second;if (!vis[v] && dis[v] > dis[u] + w) {dis[v] = dis[u] + w;pq.push({dis[v], v});}}}
}void work() {cin >> n >> m;for (int i = 1; i <= m; i++) cin >> l1[i] >> r1[i] >> l2[i] >> r2[i] >> a[i] >> b[i];int rto, rti;auto calc = [&] (int* l1, int* r1, int* l2, int* r2) {for (int i = 1; i <= cnt; i++) g[i].clear();cnt = n;T.build(rto, 1, n, false);T.build(rti, 1, n, true);for (int i = 1; i <= m; i++) {T.v[0].clear(), T.v[1].clear();T.query(rto, l1[i], r1[i], 0);T.query(rti, l2[i], r2[i], 1);++cnt;for (auto v : T.v[0]) g[v].emplace_back(cnt, a[i] * ksm(2ll, b[i]));for (auto v : T.v[1]) g[cnt].emplace_back(v, 0);}dijkstra();for (int i = 1; i <= n; i++) ans[i] += dis[i];};calc(l1, r1, l2, r2); calc(l2, r2, l1, r1);for (int i = 2; i <= n; i++) cout << (ans[i] < INF ? ans[i] % mod : -1) << " \n"[i == n];
}signed main() {
#ifdef LOCALfreopen("C:\\Users\\admin\\CLionProjects\\Practice\\data.in", "r", stdin);freopen("C:\\Users\\admin\\CLionProjects\\Practice\\data.out", "w", stdout);
#endifios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int Case = 1;//cin >> Case;while (Case--) work();return 0;
}
/*_____   _   _       _  __    __|  _  \ | | | |     | | \ \  / /| |_| | | | | |     | |  \ \/ /|  ___/ | | | |  _  | |   }  {| |     | |_| | | |_| |  / /\ \|_|     \_____/ \_____/ /_/  \_\
*/

68 分题解(测试点 1~17)

52 52 52 分题解中,存储距离用的是 long long,但是在 14 ∼ 17 14\sim 17 1417 中边权较大,显然不行。

long long 换成压位高精,每 64 64 64 个二进制位压成一位(这样压位首先可以用 unsigned long long 存储,其次也可以较为方便的处理 × 2 b \times 2^b ×2b 的操作),使用 std::array<unsigned long long, M> 存储,[0] 为最低位,[M - 1] 为最高位。由于最大的距离大约为 1000 × 1 0 9 × 2 1000 ≈ ( 2 64 ) 16.248 1000\times 10^9\times 2^{1000}\approx(2^{64})^{16.248} 1000×109×21000(264)16.248,高精的位数选取 M = 17 M=17 M=17 位。

重载一下用到的运算符 +<>

最后输出答案 x x x 前,只要计算得出 ∑ i = 0 M − 1 x i × ( 2 64 ) i m o d 1 0 9 + 7 \sum\limits_{i=0}^{M-1}x_i\times(2^{64})^i\mod 10^9+7 i=0M1xi×(264)imod109+7 即可。

时间复杂度: O ( 17 ( n log ⁡ n + m log ⁡ n log ⁡ ( m log ⁡ n ) ) ) \mathcal{O}(17(n\log n+m\log n\log(m\log n))) O(17(nlogn+mlognlog(mlogn)))

68 分参考代码(1.937s,455.2MB)

/*Created by Pujx on 2024/3/29.
*/
#pragma GCC optimize(2, 3, "Ofast", "inline")
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define int long long
//#define double long double
using i64 = long long;
using ui64 = unsigned long long;
using i128 = __int128;
#define inf (int)0x3f3f3f3f3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define yn(x) cout << (x ? "yes" : "no") << endl
#define Yn(x) cout << (x ? "Yes" : "No") << endl
#define YN(x) cout << (x ? "YES" : "NO") << endl
#define mem(x, i) memset(x, i, sizeof(x))
#define cinarr(a, n) for (int i = 1; i <= n; i++) cin >> a[i]
#define cinstl(a) for (auto& x : a) cin >> x;
#define coutarr(a, n) for (int i = 1; i <= n; i++) cout << a[i] << " \n"[i == n]
#define coutstl(a) for (const auto& x : a) cout << x << ' '; cout << endl
#define all(x) (x).begin(), (x).end()
#define md(x) (((x) % mod + mod) % mod)
#define ls (s << 1)
#define rs (s << 1 | 1)
#define ft first
#define se second
#define pii pair<int, int>
#ifdef DEBUG#include "debug.h"
#else#define dbg(...) void(0)
#endifconst int N = 2e5 + 5;
const int M = 17;
//const int mod = 998244353;
const int mod = 1e9 + 7;
template <typename T> T ksm(T a, i64 b) { T ans = 1; for (; b; a = 1ll * a * a, b >>= 1) if (b & 1) ans = 1ll * ans * a; return ans; }
//template <typename T> T ksm(T a, i64 b, T m = mod) { T ans = 1; for (; b; a = 1ll * a * a % m, b >>= 1) if (b & 1) ans = 1ll * ans * a % m; return ans; }using BigInt = array<ui64, M>;
const i128 MOD = (i128)1 << 64;
int pw[M];
BigInt operator + (const BigInt& a, const BigInt& b) {BigInt ans;i128 g = 0;for (int i = 0; i < M; i++) {g = g + a[i] + b[i];ans[i] = g >= MOD ? g - MOD : g;g = g >= MOD;}return ans;
}
BigInt init(const i64& a, const int& b) {int j = b % 64, i = b / 64;i128 val = (i128)a << j;BigInt ans = BigInt();while (val) {ans[i++] = val % MOD;val >>= 64;}return ans;
}
int chg(const BigInt& a) {if (a[M - 1] == INF) return -1;i64 ans = 0;for (int i = 0; i < M; i++)ans = (ans + a[i] % mod * pw[i]) % mod;return ans;
}
bool operator < (const BigInt& a, const BigInt& b) {for (int i = M - 1; ~i; i--) {if (a[i] < b[i]) return true;else if (a[i] > b[i]) return false;}return false;
}
bool operator > (const BigInt& a, const BigInt& b) {return b < a;
}int l1[N], r1[N], l2[N], r2[N], a[N], b[N];
int n, m, t, k, q, cnt;
vector<pair<int, BigInt>> g[N << 2];template <typename T> struct SegmentTree {struct TreeNode { int l, r, lson, rson; } tr[N << 2];void build(int& s, int l, int r, bool io) {s = ++cnt;tr[s].l = l, tr[s].r = r;if (l == r) {if (!io) g[l].emplace_back(cnt, BigInt());else g[cnt].emplace_back(l, BigInt());return;}int mid = l + r >> 1;if (l <= mid) build(tr[s].lson, l, mid, io);if (mid < r) build(tr[s].rson, mid + 1, r, io);if (!io) g[tr[s].lson].emplace_back(s, BigInt()), g[tr[s].rson].emplace_back(s, BigInt());else g[s].emplace_back(tr[s].lson, BigInt()), g[s].emplace_back(tr[s].rson, BigInt());}vector<int> v[2];void query(int s, int l, int r, bool io) {if (l <= tr[s].l && tr[s].r <= r) return v[io].emplace_back(s), void();int mid = tr[s].l + tr[s].r >> 1;if (l <= mid) query(tr[s].lson, l, r, io);if (mid < r) query(tr[s].rson, l, r, io);}
};
SegmentTree<int> T;struct node {BigInt dis; int u;bool operator < (const node& t) const {return dis > t.dis;}
};BigInt dis[N << 2];
int ans[N];
bool vis[N << 2];
void dijkstra() {for (int i = 1; i <= cnt; i++) dis[i] = BigInt(), dis[i][M - 1] = INF, vis[i] = false;dis[1][M - 1] = 0;priority_queue<node> pq;pq.push({dis[1], 1});while (!pq.empty()) {int u = pq.top().u; pq.pop();if (vis[u]) continue;vis[u] = true;for (auto tem : g[u]) {int v = tem.first; BigInt& w = tem.second;if (!vis[v] && dis[v] > dis[u] + w) {dis[v] = dis[u] + w;pq.push({dis[v], v});}}}
}void work() {pw[0] = 1, pw[1] = MOD % mod;for (int i = 2; i < M; i++) pw[i] = 1ll * pw[i - 1] * pw[1] % mod;cin >> n >> m;for (int i = 1; i <= m; i++) cin >> l1[i] >> r1[i] >> l2[i] >> r2[i] >> a[i] >> b[i];int rto, rti;auto calc = [&] (int* l1, int* r1, int* l2, int* r2) {for (int i = 1; i <= cnt; i++) g[i].clear();cnt = n;T.build(rto, 1, n, false);T.build(rti, 1, n, true);for (int i = 1; i <= m; i++) {T.v[0].clear(), T.v[1].clear();T.query(rto, l1[i], r1[i], 0);T.query(rti, l2[i], r2[i], 1);++cnt;for (auto v : T.v[0]) g[v].emplace_back(cnt, init(a[i], b[i]));for (auto v : T.v[1]) g[cnt].emplace_back(v, BigInt());}dijkstra();for (int i = 1; i <= n; i++) {if (ans[i] != -1) {int val = chg(dis[i]);if (val == -1) ans[i] = -1;else ans[i] = (ans[i] + val) % mod;}}};calc(l1, r1, l2, r2); calc(l2, r2, l1, r1);for (int i = 2; i <= n; i++) cout << ans[i] << " \n"[i == n];
}signed main() {
#ifdef LOCALfreopen("C:\\Users\\admin\\CLionProjects\\Practice\\data.in", "r", stdin);freopen("C:\\Users\\admin\\CLionProjects\\Practice\\data.out", "w", stdout);
#endifios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int Case = 1;//cin >> Case;while (Case--) work();return 0;
}
/*_____   _   _       _  __    __|  _  \ | | | |     | | \ \  / /| |_| | | | | |     | |  \ \/ /|  ___/ | | | |  _  | |   }  {| |     | |_| | | |_| |  / /\ \|_|     \_____/ \_____/ /_/  \_\
*/

100 分题解(无)

想不出来,也没找到官方题解,太菜了。

关于代码的亿点点说明:

  1. 代码的主体部分位于 void work() 函数中,另外会有部分变量申明、结构体定义、函数定义在上方。
  2. #pragma ... 是用来开启 O2、O3 等优化加快代码速度。
  3. 中间一大堆 #define ... 是我习惯上的一些宏定义,用来加快代码编写的速度。
  4. "debug.h" 头文件是我用于调试输出的代码,没有这个头文件也可以正常运行(前提是没定义 DEBUG 宏),在程序中如果看到 dbg(...) 是我中途调试的输出的语句,可能没删干净,但是没有提交上去没有任何影响。
  5. ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); 这三句话是用于解除流同步,加快输入 cin 输出 cout 速度(这个输入输出流的速度很慢)。在小数据量无所谓,但是在比较大的读入时建议加这句话,避免读入输出超时。如果记不下来可以换用 scanfprintf,但使用了这句话后,cinscanfcoutprintf 不能混用。
  6. main 函数和 work 函数分开写纯属个人习惯,主要是为了多组数据。

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

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

相关文章

深入解析:如何使用Xcode上传苹果IPA安装包至App Store?

目录 引言 摘要 第二步&#xff1a;打开appuploader工具 第二步&#xff1a;打开appuploader工具&#xff0c;第二步&#xff1a;打开appuploader工具 第五步&#xff1a;交付应用程序&#xff0c;在iTunes Connect中查看应用程序 总结 引言 在将应用程序上架到苹果应用商…

蓝桥杯-网络安全比赛(4)基础学习-JavaScript同步与异步、宏任务(MacroTask)与微任务、事件循环机制(MicroTask)

理解JavaScript的异步编程模型对于编写高效、健壮的Web应用程序至关重要。 在Web开发中&#xff0c;经常需要处理异步操作&#xff0c;如网络请求、定时器、文件读写等。 掌握同步和异步的概念&#xff0c;以及宏任务和微任务的处理顺序&#xff0c;可以帮助开发者更好地管理代…

洛谷B3735题解

题目描述 圣诞树共有 n 层&#xff0c;从上向下数第 1 层有 1 个星星、第 2 层有 2 个星星、以此类推&#xff0c;排列成下图所示的形状。 星星和星星之间用绳子连接。第 1,2,⋯,n−1 层的每个星星都向下一层最近的两个星星连一段绳子&#xff0c;最后一层的相邻星星之间连一段…

【linux】join命令

join命令用于将两个文件中&#xff0c;指定栏位内容相同的行连接起来。 找出两个文件中&#xff0c;指定栏位内容相同的行&#xff0c;并加以合并&#xff0c;再输出到标准输出设备。 命令的参数如下&#xff1a; -a1或者-a2表示先输出合并后相同部分内容&#xff0c;然后再输…

No supported authentication methods available (server sent: publickey)

先说折腾方式&#xff1a;以下修改ssh配置以后旧的ssh连接不要断开&#xff0c;重启ssh服务以后都用新连接去测试&#xff0c;万一有问题的话旧的ssh连接不会断开还可以继续修改配置文件&#xff0c;要不都断了就惨了。 ubuntu server 22&#xff0c;使用秘钥方式可以正常登录…

发明专利申请条件

1、新颖性&#xff1a;是指在申请日以前没有同样的发明或者实用新型在国内外出版物上公开发表过&#xff0c;没有在国内公开使用过或者以其他方式为公众所知&#xff0c;也没有同样的发明或者实用新型由他人向国家专利行政部门提出过申请并且记载在申请日以后公布的专利申请文件…

什么是json?json可以存放哪几种数据类型

JSON指的是JavaScript对象表示法(avaScript Object Notation)&#xff0c;是轻量级的文本数据交换格式&#xff0c;独立于语言: JSON使用JavaScript语法来描述数据对象&#xff0c;但是JSON仍然独立于语言和平台&#xff0c;JSON解析器和JSON库支持许多不同的编程语言&#xff…

Python学习从0到1 day20 第二阶段 面向对象 ③ 继承

循此苦旅&#xff0c;以达天际 —— 24.4.3 一、继承的基础语法 学习目标&#xff1a; ① 理解继承的概念 ② 掌握继承的使用方式 ③ 掌握pass关键字的作用 单继承 语法&#xff1a; class 类名(父类名): 类内容体 继承分为&#xff1a;单继承和多继承 继承表示&#xff1a;将从…

WE博客代码系统

WE博客代码系统 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net mvc架构和sql server数据库&#xff0c;并采用EF实体模型开发。 三层架构并采用EF实体模型开发 功能模块&#xff1a; WE博客代码系统 WE博客代码系…

Vue指令之v-model

调了半天没反应&#xff0c;结果是没引用Vue&#xff0c;我是伞兵。 v-model的作用是将视图与数据双向绑定。一般情况下&#xff0c;Vue是数据驱动的&#xff0c;即数据发生改变后网页就会刷新一次&#xff0c;更改对应的网页内容&#xff0c;即数据单向绑定了网页内容。而使用…

每日一题————P5725 【深基4.习8】求三角形

题目&#xff1a; 题目乍一看非常的简单&#xff0c;属于初学者都会的问题——————————但是实际上呢&#xff0c;有一些小小的坑在里面。 就是三角形的打印。 平常我们在写代码的时候&#xff0c;遇到打印三角形的题&#xff0c;一般简简单单两个for循环搞定 #inclu…

【C++第三阶段】模板类模板通用数组实现案例

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 模板怎么使用模板函数模板注意事项普通函数与函数模板的区别普通函数与函数模板调用规则函数模板限制 类模板类模板语法类模板与函数模板区别类模板中成员函数创建时机类模板对象做函…

MySQL日志探索——redo log和bin log的刷盘时机详解

我们先简单了解一下大致的刷盘时机&#xff0c;然后配合两阶段提交和组提交来看 redo log的刷盘时机 MySQL 正常关闭时&#xff1b;当 redo log buffer 中记录的写入量大于 redo log buffer内存空间的一半时&#xff0c;会触发落盘&#xff1b; PS&#xff1a;为什么这里要到…

Google Chrome 常用设置

Google Chrome 常用设置 References 转至网页顶部 快捷键&#xff1a;Home 转至内容设置 chrome://settings/content 清除浏览数据 历史记录 -> 清除浏览数据 关于 Chrome 设置 -> 关于 Chrome chrome://settings/help References [1] Yongqiang Cheng, https:/…

关于ansible的模块 ③

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 接《关于Ansible的模块①》和《关于Ansible的模块②》&#xff0c;继续学习ansible的user模块。 user模块可以增、删、改linux远…

回溯算法|491.递增子序列

力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex) {if (path.size() > 1) {result.push_back(path);// 注意这里不要加return&#xff0c;要取树上…

MySQL 索引优化(二)

书接上文&#xff0c;继续使用上次创建的 student 表&#xff0c;表里已经被我们装填了大量数据&#xff0c;接下来做分页查询的索引优化。 分页查询优化 普通的分页查询语句&#xff1a; SELECT * FROM student LIMIT 10000,10;这条语句是从 student 表中取出 10001 行开始…

面向对象进阶5:类和泛型

内部类 在一个类的内部定义的类,内部类可以访问外部类的成员变量和成员方法,包括私有成员,内部类可以分为成员内部类,局部内部类,静态内部类和匿名内部类 public class InnerClass {class InnerC{} }1,成员内部类 定义在类中方法外的类,可以访问外部类的所有成员变量和方法,…

人脸识别seetaface6 windows + cmake + vs编译,踩坑指南

遇到问题冷静分析&#xff0c;没有解决不了的问题&#xff0c;只是需要时间。与君共勉 环境准备 要在windows 上编译c 源码&#xff0c;需要准备如下软件。省去了详细的安装过程。 visual studio 2022 (社区免费版链接)mingw64 下载路径 (安装后&#xff0c;记得添加系统路径…

elementui 实现一个固定位置的Pagination(分页)组件

系列文章目录 一、elementui 导航菜单栏和Breadcrumb 面包屑关联 二、elementui 左侧导航菜单栏与main区域联动 三、elementui 中设置图片的高度并支持PC和手机自适应 四、 elementui 实现一个固定位置的Pagination&#xff08;分页&#xff09;组件 文章目录 系列文章目录…