2023牛客寒假算法集训营4
目录
- A. [清楚姐姐学信息论](https://ac.nowcoder.com/acm/contest/46812/A)(数学)
- B. [清楚姐姐学构造](https://ac.nowcoder.com/acm/contest/46812/B)(数学 + 构造)
- C. [清楚姐姐学01背包(Easy Version)](https://ac.nowcoder.com/acm/contest/46812/C)(01背包)
- D. [清楚姐姐学01背包(Hard Version)](https://ac.nowcoder.com/acm/contest/46812/D)(01背包)
- E. [清楚姐姐打怪升级](https://ac.nowcoder.com/acm/contest/46812/E)(数学 or 二分)
- F. [清楚姐姐学树状数组](https://ac.nowcoder.com/acm/contest/46812/F)(二叉树 + DFS)
- G. [清楚姐姐逛街(Easy Version)](https://ac.nowcoder.com/acm/contest/46812/G)(BFS)
- L. [清楚姐姐的三角形I](https://ac.nowcoder.com/acm/contest/46812/L)(数学 + 推公式)
- M. [清楚姐姐的三角形II](https://ac.nowcoder.com/acm/contest/46812/M)(构造)
A. 清楚姐姐学信息论(数学)
题意:
给定两个非负整数 xxx , yyy (2≤x,y≤109)(2 \le x, y \le 10^9)(2≤x,y≤109) ,表示 xxx 进制和 yyy 进制,比较哪种进制的信息表示效率更高。
当且仅当,xxx 进制和 yyy 进制分别使用 x⋅yx \cdot yx⋅y 个数时, xxx 进制能够表示的数字数目大于 yyy 进制,则称 xxx 进制的信息表示效率大于 yyy 进制。
思路一:
比较 xyx^yxy 和 yxy^xyx 的大小就行。
但是你这样写会发现,炸了,数据太大了,所以需要优化一下:
改成比较 y⋅logxy·log_xy⋅logx 和 x⋅logyx·log_yx⋅logy 就行了。
特别注意:优化后要用浮点数去比较,存在精度问题,如果用整数比较会有部分测试点过不了。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;int main()
{ll x, y;cin >> x >> y;if (x == y) cout << x << endl;else {double xx = y * log(x);double yy = x * log(y);if (xx > yy) cout << x << endl;else if (xx < yy) cout << y << endl;else cout << min(x, y) << endl;}return 0;
}
思路二:
思路二就比较神奇,用的是数学的方法。
结论:eee 进制是效率最高的进制。
因此越靠近 eee 进制效率越高,e≈2.7e ≈ 2.7e≈2.7 ,所以在比较 (2,3)(2, 3)(2,3) 时,333 进制效率更高,其他情况都是小的进制更优。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;int main()
{ll x, y;cin >> x >> y;if (x == 2 || y == 3) cout << 3 << endl;else cout << min(x, y) << endl;return 0;
}
B. 清楚姐姐学构造(数学 + 构造)
题意:
给定一个长度为 NNN 的数组 ccc 和一个质数 mmm,请你构造另外两个 同余等式 数组 a,ba,ba,b 满足:
{ai≡aN−1−i(modm)bi≡−bN−1−i(modm)ci≡ai+bi(modm)\left\{\begin{matrix} a_{i}\equiv a_{N-1-i}\pmod{m} \\ b_{i}\equiv -b_{N-1-i}\pmod{m} \\ c_{i}\equiv a_{i}+b_{i}\pmod{m} \end{matrix}\right.⎩⎨⎧ai≡aN−1−i(modm)bi≡−bN−1−i(modm)ci≡ai+bi(modm)
数组 a,b,ca,b,ca,b,c 的下标均从 000 开始计算。
如果可以构造出数组 a,ba,ba,b,则首先输出 YesYesYes,然后输出任意一种解,否则只需输出一行一个字符串 NoNoNo 。
≡\equiv≡ 为同余符号,它表示两个整数对 mmm 取余数的结果相同,对于负数取余数,若结果仍为负数,则需要加上 mmm 。
思路:
一个重要结论:任何一个函数都可以表示成奇函数和偶函数的和。
aaa 数组就是两边的数关于中心对称轴相等,而 bbb 数组则是关于中心对称轴相反。
要求 ci=ai+bic_i = a_i + b_ici=ai+bi ,即要求构造一个奇函数和一个偶函数来表示任意一个函数。
出题人题解
任取一个数列 ccc,设 c[i]≡a[i]+b[i]c[i]\equiv a[i]+b[i]c[i]≡a[i]+b[i] ,设 a[i]a[i]a[i] 数列关于 N/2N/2N/2 对称, b[i]b[i]b[i] 数列关于 N/2N/2N/2 对称相反。
则 c[N−i−1]≡a[N−i−1]+b[N−i−1]c[N-i-1]\equiv a[N-i-1]+b[N-i-1]c[N−i−1]≡a[N−i−1]+b[N−i−1] .
两式相加可得 c[i]+c[N−i−1]≡a[i]+b[i]+a[N−i−1]+b[N−i−1]c[i]+c[N-i-1] \equiv a[i]+b[i]+ a[N-i-1]+b[N-i-1]c[i]+c[N−i−1]≡a[i]+b[i]+a[N−i−1]+b[N−i−1] ,根据题意, b[i]b[i]b[i] 数列对称相反消掉, a[i]a[i]a[i] 数列关于 N/2N/2N/2 对称则 a[i]≡a[N−i−1]a[i] \equiv a[N-i-1]a[i]≡a[N−i−1] 。化简得
c[i]+c[N−i−1]≡2⋅a[i]c[i]+c[N-i-1] \equiv 2\cdot a[i]c[i]+c[N−i−1]≡2⋅a[i] 即 a[i]≡(c[i]+c[N−i−1])⋅inv(2)a[i] \equiv (c[i]+c[N-i-1])\cdot inv(2)a[i]≡(c[i]+c[N−i−1])⋅inv(2) 。注意当 m=2m=2m=2 无逆元需要特殊处理。
相似的,两式相减得 b[i]≡(c[i]−c[N−i−1])⋅inv(2)b[i] \equiv (c[i]-c[N-i-1])\cdot inv(2)b[i]≡(c[i]−c[N−i−1])⋅inv(2) 。和之前一样, m=2m=2m=2 时无逆特殊处理即可。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int N = 1e5 + 10;ll n, m;
ll a[N], b[N], c[N];ll qmi(ll a, ll b) //快速幂求逆元
{ll res = 1;a = (a % m + m) % m;while (b){if (b & 1) res = res * a % m;a = a * a % m;b >>= 1;}return res;
}bool check()
{for (int i = 1; i <= n; i++)if (c[i] != c[n - i + 1])return false;return true;
}int main()
{ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);cin >> n >> m;for (int i = 1; i <= n; i++){cin >> c[i];}if (m == 2){if (check()){cout << "Yes" << endl;for (int i = 1; i <= n; i++)cout << c[i] << ' ';cout << endl;for (int i = 1; i <= n; i++)cout << 0 << ' ';cout << endl;}else cout << "No" << endl;}else {ll inv2 = qmi(2, m - 2); //对2特判处理for (int i = 1; i <= n; i++){a[i] = (c[i] + c[n - i + 1]) * inv2 % m;b[i] = (c[i] + m - c[n - i + 1]) * inv2 % m;}cout << "Yes" << endl;for (int i = 1; i <= n; i++)cout << a[i] << ' ';cout << endl;for (int i = 1; i <= n; i++)cout << b[i] << ' ';cout << endl;}return 0;
}
C. 清楚姐姐学01背包(Easy Version)(01背包)
题意:
有 nnn 个物品,每个物品的体积为 www ,价值为 vvv ,背包的容量为 mmm 。
可以从 nnn 个物品中任选若干个放入背包,要保证总体积不能超过背包容量。
现定义背包中所放物品价值总和的最大值为 VVV ,从这 nnn 个物品中去掉某一个物品后,从剩余 n−1n - 1n−1 个物品中任选若干个放入背包,后来所放物品价值总和的最大值为 V′V'V′ 。
若 V′<VV' < VV′<V ,则称这个物品为必选物品。
求出对于每一个物品,它的价值再加上多少,能称为一个必选物品。
思路:
比普通的 01 背包题多了一个条件。
枚举每个物品,除了这个物品外,计算其他物品的01背包,再判断该物品是否必须取,它还需加上的价值就是 V - V'
。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int N = 110;int n, m;
ll w[N], v[N];int main()
{ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);cin >> n >> m;for (int i = 1; i <= n; i++){cin >> w[i] >> v[i];}for (int i = 1; i <= n; i++){vector<ll> dp(m + 1);for (int j = 1; j <= n; j++){if (i != j){for (int k = m; k >= w[j]; k--){dp[k] = max(dp[k], dp[k - w[j]] + v[j]);}}}ll res = dp[m] - (dp[m - w[i]] + v[i]) + 1;if (res < 0) cout << 0 << endl;else cout << res << endl;}return 0;
}
D. 清楚姐姐学01背包(Hard Version)(01背包)
题意:
与 C 题一样,不同的是数据范围变大。 (1≤n,m≤5000)(1 \le n, m \le 5000)(1≤n,m≤5000)
思路:
歪门邪道法:
类似于上题,既然琺暴力,那就分组求背包,以 75 个为一组,分成 75 个背包,第 iii 个背包中不含第 iii 组的物品。
其中对于第 jjj 个物品,找到其所在组数,把这组除了 jjj 以外的物品装入背包,再使用 C 题的方法判断即可。
再放上正经的解法:出题人题解
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int N = 5010;int n, m;
ll w[N], v[N];int main()
{ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);cin >> n >> m;vector dp(76, vector<ll>(m + 1));for (int i = 1; i <= n; i++){cin >> w[i] >> v[i];int t = i / 75;for (int k = 0; k < 75; k++){if (k != t){for (int j = m; j >= w[i]; j--){dp[k][j] = max(dp[k][j], dp[k][j - w[i]] + v[i]);}}}}for (int i = 1; i <= n; i++){int t = i / 75;auto f = dp[t];for (int j = 1; j <= n; j++){if (i != j && t == j / 75){for (int k = m; k >= w[j]; k--){f[k] = max(f[k], f[k - w[j]] + v[j]);}}}ll ans = f[m] - f[m - w[i]] - v[i] + 1;if (ans < 0) cout << 0 << endl;else cout << ans << endl;}return 0;
}
E. 清楚姐姐打怪升级(数学 or 二分)
题意:
打怪游戏,有 nnn 只怪物,每只怪物的生命上限为 hhh ,生命每时刻恢复 vvv 点。
每次攻击的间隔为 ttt ,攻击力为 aaa 。
在每个时刻初,若怪物的生命值不满,则恢复 vvv 点生命值,但是不能超过生命值上限 hhh 。
每次攻击可以选择一只怪物造成 aaa 点伤害,若此时怪物生命值小于等于 000 ,则怪物死亡。
现在问至少在第几个时刻末可以杀死所有怪物,若永远无法杀死所有怪物则输出 −1-1−1 。
思路:
已知 nnn 只怪物的血量,回血速度,自身攻击力和攻击间隔,求打死所有怪物的时间。(注意,攻击是从时刻 111 开始的)
如果不能一刀解决,那么该怪物必定会经过 掉血 + 回血 的循环。
因此先把最后一刀减去,然后计算剩下的血量何时能扣完。
假设砍一刀后血量为 w=a−vw = a - vw=a−v ,如果 w≤0w \le 0w≤0 则无解,否则计算总轮数 s=⌈hw⌉+1s = \lceil \frac{h}{w}\rceil + 1s=⌈wh⌉+1 ,时间为 (s−1)⋅t+1(s - 1)·t + 1(s−1)⋅t+1 。
也可以二分计算:
二分恰好 xxx 次打死怪物,那么 check
时,前面已经攻击了 x−1x - 1x−1 次,加上血量回复,再补上第 xxx 次攻击,若怪物血量 h≤0h \le 0h≤0 ,则 check = true
。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int N = 1e5 + 10;ll n, t, a;
ll h[N], v[N];bool check()
{for (int i = 1; i <= n; i++){if (a <= v[i] && a < h[i])return false;}return true;
}int main()
{cin >> n >> t >> a;for (int i = 1; i <= n; i++){cin >> h[i] >> v[i];v[i] *= t;}if (!check()){cout << -1 << endl;}else{ll res = 0;for (int i = 1; i <= n; i++){if (h[i] <= a) res++;else {ll w = a - v[i];res += (h[i] - a + w - 1) / w + 1; //向上取整}}cout << (res - 1) * t + 1 << endl;}return 0;
}
F. 清楚姐姐学树状数组(二叉树 + DFS)
题意:
有一个尺寸大小为 N=2kN=2^{k}N=2k 的树状数组,按照如下的规则构造出一个"树状数组二叉树"。
-
编号为 iii 的节点的深度为 log2(lowbit(N))−log2(lowbit(i))log2(lowbit(N))-log2(lowbit(i))log2(lowbit(N))−log2(lowbit(i)) 。
-
整棵二叉树的中序遍历节点编号顺序为 1,2,3...N−1,N1,2,3...N-1,N1,2,3...N−1,N 。
问对于树状数组生成的二叉树上编号为 xxx 的节点,分别在前序、中序、后序遍历中是第几个被遍历到的节点?
思路:
给一个树状数组,建成一个二叉树,查询若干个节点的前中后序遍历。
树状数组中的两条重要路径为 x→x+lobit(x)x→x+lobit(x)x→x+lobit(x) 和 x→x−lobit(x)x→x-lobit(x)x→x−lobit(x)
- 当一个节点是左孩子时,其父节点是 x→x+lobit(x)x→x+lobit(x)x→x+lobit(x)
- 当一个节点是右孩子时,其父节点是 x→x−lobit(x)x→x-lobit(x)x→x−lobit(x)
因为长度大小为 2k2^k2k 的树状数组除根节点外都是全满的,大小实际上就是 2m−12^m − 12m−1 可以直接计算,所以 DFS 模拟前序和后序的过程中跳过整颗的子树部分直接计算答案即可。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int N = 2010;ll k, q;
ll n;ll lowbit(ll x)
{return x & -x;
}ll size(ll x)
{return (lowbit(x) << 1) - 1;
}bool is_lchild(ll x)
{return !(x & (lowbit(x) << 1));
}ll fa(ll x)
{if (is_lchild(x))return x + lowbit(x);return x - lowbit(x);
}ll lch(ll x)
{return x ^ lowbit(x) ^ (lowbit(x) >> 1);
}ll rch(ll x)
{return x ^ (lowbit(x) >> 1);
}ll L(ll x)
{ll root = n, ret = 1;while (root != x){ret++;if (x < root){root = lch(root);}else {ret += size(lch(root));root = rch(root);}}return ret;
}ll R(ll x)
{if (x == n) return n;ll root = x, ret = size(root);while (root != n){if (root == rch(fa(root))){ret += size(lch(fa(root)));}root = fa(root);}return ret;
}int main()
{ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);cin >> k >> q;n = 1ll << k;while (q--){ll x;cin >> x;cout << L(x) << ' ' << x << ' ' << R(x) << endl;}return 0;
}
G. 清楚姐姐逛街(Easy Version)(BFS)
题意:
A,B 两人走地图,要求 B 在最短的时间内追上 A 。
地图可以视为是一个 N⋅MN \cdot MN⋅M 的二维平面,左上角为坐标原点 (0,0)(0,0)(0,0) ,向下为 xxx 轴正方向,向右为 yyy 轴正方向,入口位于点 s(xs,ys)s(x_s,y_s)s(xs,ys) 。
地图行走规则如下:
‘L’ – 向左,‘R’ – 向右,‘U’ – 向上,‘D’ – 向下
‘.’ – 表示终止位置,当移动到这里后将永远停在该位置
‘#’ – 表示墙壁,任何人都不能移动到这里
B 追 A,且 B 可以随意移动或停在原地,不必遵守地图的规则。
B 从入口处出发,有 QQQ 次询问,每次输入一个坐标表示 A 从该位置开始移动,问至少要多久才能追上 A ,若无论如何都追不上则输出 -1.
思路:
首先预处理 B 到达每个位置所花费的时间,因为 B 可以随便走,所以先用 BFS 遍历连通块,计算到达每个位置的时间。
然后对于每次询问,A 按照地图规则来走,直到 A到达某个位置的时间 ≥ B到达的时间
,则 B 能追上 A 。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
#define PII pair<int, int>
using namespace std;
const int N = 810;int n, m, sx, sy, Q;
char mp[N][N];
int d[N][N];void bfs()
{queue<PII> q;q.push({sx, sy});d[sx][sy] = 0;while (!q.empty()){int x = q.front().first, y = q.front().second;q.pop();int dx[4] = {1, -1, 0, 0}, dy[4] = {0, 0, 1, -1};for (int i = 0; i < 4; i++){int xx = x + dx[i], yy = y + dy[i];if (xx >= 1 && xx <= n && yy >= 1 && yy <= m && d[x][y] + 1 < d[xx][yy] && mp[xx][yy] != '#'){d[xx][yy] = d[x][y] + 1;q.push({xx, yy});}}}
}int main()
{memset(d, 63, sizeof d);cin >> n >> m >> sx >> sy >> Q;sx++, sy++;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++)cin >> mp[i][j];bfs();while (Q--){int x, y;cin >> x >> y;x++, y++;int f = 1, res = 1;while (1){int lax = x, lay = y;if (mp[x][y] == 'U' && mp[x - 1][y] != '#') x--;else if (mp[x][y] == 'D' && mp[x + 1][y] != '#') x++;else if (mp[x][y] == 'R' && mp[x][y + 1] != '#') y++;else if (mp[x][y] == 'L' && mp[x][y - 1] != '#') y--;if (lax == x && lay == y){if (d[x][y] >= 1e9){f = 0;break;}}if (d[x][y] <= res){res = max(d[x][y], res);break;}res++;}if (!f) cout << -1 << endl;else cout << res << endl;}return 0;
}
L. 清楚姐姐的三角形I(数学 + 推公式)
题意:
假设三角形的三条边的长度分别为 a,b,ca,b,ca,b,c 。
定义三角形的三个顶点分别为 A,B,CA,B,CA,B,C,顶点 AAA 连接 b,cb,cb,c 两边;顶点 BBB 连接 a,ca,ca,c 两边;顶点 CCC 连接 a,ba,ba,b 两边。
定义三角形三个顶点的权值 VA=lb+lc,VB=la+lc,VC=la+lbV_A=l_b+l_c,V_B=l_a+l_c,V_C=l_a+l_bVA=lb+lc,VB=la+lc,VC=la+lb 。
现在给定 VA,VB,VCV_A,V_B,V_CVA,VB,VC 的值,求 a,b,ca,b,ca,b,c 的值。
思路:
我们根据三角形已知条件推出三条边的表达式:
a=(vb+vc−va)/2a = (v_b + v_c - v_a) / 2a=(vb+vc−va)/2
b=(va+vc−vb)/2b= (v_a + v_c - v_b) / 2b=(va+vc−vb)/2
c=(va+vb−vc)/2c = (v_a + v_b - v_c) / 2c=(va+vb−vc)/2
然后根据组成三角形的条件:任意两边之和大于第三边,任意两边之差小于第三边
判断这三条边能否组成三角形即可。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int N = 2e5 + 10;void solve()
{ll va, vb, vc;cin >> va >> vb >> vc;ll s = (va + vb + vc) / 2;if (s < 3){cout << "NO" << endl;}else {ll a = (vb + vc - va) / 2;ll b = (va + vc - vb) / 2;ll c = (va + vb - vc) / 2;if (a + b > c && b + c > a && c + a > b&& abs(a - b) < c && abs(b - c) < a && abs(c - a) < b&& va == b + c && vb == a + c && vc == a + b){cout << "YES" << endl;cout << a << ' ' << b << ' ' << c << endl;}else {cout << "NO" << endl;}}
}int main()
{ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);int t;cin >> t;while (t--){solve();}return 0;
}
M. 清楚姐姐的三角形II(构造)
题意:
要求构造一个大小为 nnn 的数组,满足数组中每相邻的三项均不能组成三角形,输出这个数组。
思路:
你以为是斐波那契???NoNoNo,请下载国家反诈APP.
题目只要求相邻三项无法构成三角形,条件很少,怎么样构造都可以。
我们任意选三个不能组成三角形的数循环就行了,这里用的是 1
1
2
。
代码:
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int N = 1e5 + 10;int a[N];int main()
{int n;cin >> n;for (int i = 1; i <= n; i++){if (i % 3) cout << 1 << ' ';else cout << 2 << ' ';}cout << endl;return 0;
}
相关文章:
2023牛客寒假算法集训营4
目录A. [清楚姐姐学信息论](https://ac.nowcoder.com/acm/contest/46812/A)(数学)B. [清楚姐姐学构造](https://ac.nowcoder.com/acm/contest/46812/B)(数学 构造)C. [清楚姐姐学01背包(Easy Version)](https://ac.nowcoder.com/…...
vue组合式API及生命周期钩子函数
一、组合式API 什么是组合式API? vue3中支持vue2的选项式、支持新的编程模式–函数式编程(没有this指针)做了一个兼容,可以在一个组件中使用函数式编程和OOP编程(选项式) setup()函数 可以使用setup属性…...
Python|每日一练|数组|回溯|二分查找|排序和顺序统计量|.update方法 |单选记录:组合总和|寻找峰值|编程通过键盘输入每一位运动员
1、组合总和(数组、回溯) 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 t…...
minio下载文件速度很慢的原因分析与说明
文章目录1.实战背景2.问题描述3.问题分析4.问题解决1.实战背景 最近在做一个项目,需要用到minio来搭建文件系统,先简单说一下我在项目中设置的上传文件流程: 前端将分块文件逐一传给后端,后端再存储到 linux服务器的minio 当中。…...
基于comsol软件弯曲单模光纤模拟仿真
在本节中,主要基于实验室实际光纤单模圆柱光纤进行模拟,与comsol案例库文件在分析过程和建模有些差异: 模拟主要通过以下三个步骤进行:模型的几何构建、物理场的添加研究、结构处理分析来进行。 下面是第一步骤:几何…...
如何开启多个独立Chrome浏览器
一、简介 作为测试或者开发人员,有些情况下会用到 Chrome 浏览器,但有时是同一个 Chrome 浏览器无法为我们提供隔离开的不同环境。这样 我们就需要清理 cache 、切换账号等,降低了我们的工作效率。今天的主题是如何开启多个独立的 Chrome 浏…...
erp5开源制造业erp主要业务会计分录处理
erp5开源制造业erp主要业务会计分录处理 采购业务的会计分录 收到发票时 借:材料采购 (1201) 应交税费-应交增值税(进项税)(21710101) 贷:应付账款 (2121) 付款时 借:应付账款 (2121) 贷:银行存款 (1002) 入…...
技能树基础——17四平方和(拉格朗日定理,嵌套循环)
题目:四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 0^ 2 0^ 2 1^ 2 2^27 1^ 2 1^ 2 1^ 2 2^2 (^符号表…...
JPA、EJB、事物管理---相关内容整理
目录 ■前言 ■实现原理:容器管理事务 ■代码实现简单描述: 1.JPA ■定义 ■1.1.配置文件 ■1.2.OSS jar ■1.3.一些OPA的类(举例) ■1.4. jpa 框架在实体类(Entity)中添加非数据库字段的属性--…...
C语言学习笔记(一):了解C语言
什么是C语言 C语言是一种高级编程语言,最早由丹尼斯里奇在1972年开发。它是一种通用编程语言,提供了高级编程语言的方便和易用性,同时又有较低级别的编程语言的灵活性和效率。C语言在许多操作系统、编译器和应用程序开发中广泛使用ÿ…...
回头看——《智能家居项目小结》
openAI兴起,于是拿着之前小组合作的项目(承认优化较差),交给AI试着帮忙优化下1.功能函数(TCP_SER_INIT)优化源代码:int TCP_SER_INIT(int *tcpsocket, const char *ip, const char *…...
社交登陆OAuth2.0
QQ、微博、github 等网站的用户量非常大,别的网站为了 简化自我网站的登陆与注册逻辑,引入社交登陆功能; 步骤: 1)、用户点击 QQ 按钮 2)、引导跳转到 QQ 授权页 3)、用户主动点击授权ÿ…...
C++005-C++选择与分支2
文章目录C005-C选择与分支2条件语句C实现else if 语句题目描述 根据成绩输出成绩等级ABCDEif嵌套语句题目描述 输出三个数中的最大值题目描述 模拟游戏登录switch语句三元运算符题目描述 输出三个数中的最大值-基于3元运算符题目描述 根据1-7输出星期1-星期日案例练习题目描述 …...
IPFS 简介及概述
文章目录 IPFS 简介IPFS 包含的协议内容及其理解IPFS 和 BitTorrent 区别IPFS 简介 星际文件系统(InterPlanetary File System). IPFS 是一个分布式的网络文件系统, 点到点超媒体协议. 可以让我们的互联网速度更快, 更加安全, 并且更加开放. IPFS协议的目标是取代传统的互联网…...
初学者必读:讲解 VC 下如何正确的创建、管理及发布项目
Visual C 的项目文件组成,以及如何正确的创建及管理项目。 本内容是初学者必须要掌握的。不能正确的管理项目,就不能进一步写有规模的程序。 一、项目下各种常见文件类型的功能 1. 代码文件 扩展名为 .cpp、.c、.h 等。 通常情况下,项目…...
剑指offer(中等)
目录 二维数组中的查找 重建二叉树 矩阵中的路径 剪绳子 剪绳子② 数值的整数次方 表示数值的字符串 树的子结构 栈的压入、弹出序列 从上到下打印二叉树① 从上到下打印二叉树③ 二叉搜索树的后序遍历序列 二叉树中和为某一值的路径 复杂链表的复制 二叉搜索树与…...
微软发布会精华回顾:“台式电脑”抢了风头
Lightbot北京时间2016年10月26日晚10点,微软在纽约发布了名为 Surface Studio 的一体机、名为 Surface Dial 的配件以及外观未变的顶配版 Surface Book。同时,微软宣布了 Windows 10 下一个重要版本——“Creators Update”的数项新功能,包括…...
CF1561C Deep Down Below 题解
CF1561C Deep Down Below 题解题目链接字面描述Deep Down Below题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路TLE算法具体思想TLE特例AC思想代码实现备注题目 链接 https://www.luogu.com.cn/problem/CF1561C 字面描述 Deep Down Below 题面翻译…...
秒杀项目之服务调用分布式session
目录 nginx动静分离 服务调用 创建配置zmall-cart购物车模块 创建配置zmall-order订单模块 服务调用 spring session实战 什么是Spring Session 为什么要使用Spring Session 错误案例展示 配置spring-session 二级域名问题 用户登录 nginx动静分离 第1步ÿ…...
聊聊什么是架构,你理解对了吗?
什么是架构?软件有架构?建筑也有架构?它们有什么相同点和不同点? 下面咱们就介绍一下,容易混淆的几个概念 一、系统与子系统 系统 泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是 “总体”、“整体”或“联盟” 子系…...
java多线程开发
1.并发和并行 并发:同一时间段内多个任务同时进行。 并行:同一时间点多个任务同时进行。 2.进程线程 进程(Process):进程是程序的一次动态执行过程,它经历了从代码加载、执行、到执行完毕的一个完整过程…...
杂记7--opencv的ar码模块学习
背景:项目需要用到marker知识,所以到官网上临时补一些知识。 概要:主要介绍marker一些接口的含义,纯属个人理解,有误则希望大佬不吝赐教 1、 涉及ar码操作学习,其头文件为: #include <op…...
[项目设计]高并发内存池
目录 1、项目介绍 2、高并发内存池整体框架设计 3、thread cache <1>thread cache 哈希桶对齐规则 <2>Thread Cache类设计 4、Central Cache <1>Central Cache类设计 5、page cache <1>Page Cache类设计 6、性能分析 <1>定长内存池实现…...
28岁才转行软件测试,目前32了,我的一些经历跟感受
我是92年的,算是最早的90后,现在跟你介绍的时候还恬不知耻的说我是90后,哈哈,计算机专业普通本科毕业。在一个二线城市,毕业后因为自身能力问题、认知水平问题,再加上运气不好,换过多份工作&…...
Python导入模块的3种方式
很多初学者经常遇到这样的问题,即自定义 Python 模板后,在其它文件中用 import(或 from...import) 语句引入该文件时,Python 解释器同时如下错误:ModuleNotFoundError: No module named 模块名意思是 Pytho…...
select 与 where、order by、limit 子句执行优先级比较
当 select 和 其他三种语句的一者或者多者同时出现时,他们之间是存在执行先后顺序的。 他们的优先级顺序是:where > select > order by > limit 目录 1、select 与 where 2、select 与 order by 3、order by 与 limit 4、优先级证明 1、s…...
Linux内核并发与竞争-原子操作
一.原子操作的概念首先看一下原子操作,原子操作就是指不能再进一步分割的操作,一般原子操作用于变量或者位操作。假如现在要对无符号整形变量 a 赋值,值为 3,对于 C 语言来讲很简单,直接就是: a3但是 C 语言…...
Java笔记-泛型的使用
参考: Java 泛型,你了解类型擦除吗? 泛型的使用 1、泛型的定义 可以广泛使用的类型,一种较为准确的说法就是为了参数化类型,或者说可以将类型当作参数传递给一个类或者是方法。 2、泛型的使用 2.1泛型类 public c…...
特斯拉无人驾驶解读
来源于Tesla AI Day Tesla无人驾驶算法的核心任务就是如何理解我们所看到的一切呢?也就是说,不使用高端的设备,比如激光雷达,仅仅使用摄像头就能够将任务做得很好。Tesla使用环绕型的8个摄像头获得输入。 第一步是特征提取模块Backbone,无论什么任务都离不开特征…...
生物素-琥珀酰亚胺酯Biotin-NHS;CAS号:35013-72-0;可对溶液中的抗体,蛋白质和任何其他含伯胺的大分子进行简单有效的生物素标记。
结构式: 生物素-琥珀酰亚胺酯Biotin NHS CAS号:35013-72-0 英文名称:Biotin-NHS 中文名称:D-生物素 N-羟基琥珀酰亚胺酯;生物素-琥珀酰亚胺酯 CAS号:35013-72-0 密度:1.50.1 …...
济南高端网站建设/明星百度指数排行
通常我们在操作字典时,如果读取的键未被初始化,则会抛出KeyError的错误,这个是我们都很熟悉的。那么一般的解决方式是使用异常处理或者是调用字典的get方法来避免出现这个异常。可以看到,这两种写法都比较繁琐,第二种方…...
广告网站怎么做的/培训心得体会2000字
http://jingyan.baidu.com/article/ed15cb1b1e483a1be3698112.html http://jingyan.baidu.com/article/3f16e003bc653c2590c1035d.html转载于:https://www.cnblogs.com/zhouxiansheng/p/4357877.html...
自己免费做网站有什么用/站长之家ping
相信很多人像我一样在学习python,pandas过程中对数据的选取和修改有很大的困惑(也许是深受Matlab)的影响。。。到今天终于完全搞清楚了!!!先手工生出一个数据框吧import numpy as npimport pandas as pddf pd.DataFrame(np.arang…...
哪些网站做推广/网站建设网站设计
JS交互与webView的工作原理浅析webView是什么WebView是android中一个非常实用的组件,它和safai、chrome一样都是基于webkit网页渲染引擎,可以通过加载html数据的方式便捷地展现软件的界面。在WebView的设计中,不是什么任务都由WebView类完成的…...
最牛的html5网站建设/电脑系统优化工具
作业代码地址:点我 1.分析数据 训练集 列是时间,一共24列,是每天的24小时 行是检测的特征值,每次会检测18个特征值,故每18行是一天的数据 一个月20天,一年12个月,所以一共18*20*12行的数据 …...
安庆建设机械网站/网络口碑营销名词解释
1.80端口问题 进入控制面板-程序和功能-window功能-关闭iis即可 2.3306端口问题 右键phpstudy,以管理员身份运行。 这样就可以像以前一样省事的用默认的80和mysql默认的3306啦。 虽然直接改端口也能解决,不过每次本地测试起来就太麻烦了。还是默认的好。…...