当前位置: 首页 > news >正文

做题记录 2

F. Shift and Revers

题意

给定 \(a_i\) ,操作有让 \(a_n\) 移到第一位和翻转整个序列,问最小操作数使得 \(a_i\) 从小到大排序。

做法

(不)容易发现可以正反都做一次取 min。

P6617 查找 Search

一道有点折磨的分讨题 理不清思路容易WA

给定 \(n\) 个垃圾桶,你需要维护一个数据结构,支持以下操作:

  • 1 pos val 表示将 第 \(pos\) 个垃圾桶里的垃圾的编号换成 \(val\)
  • 2 l r 询问在 \([l\oplus cnt, r\oplus cnt]\) 内是否存在垃圾编号和为 \(w\)两个 垃圾桶。

没有修改显然可以设 \(nxt_i\) 表示 \(i\) 后最近的 \(w-a_i\) 位置,区间求 \(nxt_i\) 的最大值判断是否 \(\le r\)

有修改的话会寄,因为每次修改是 O(N) 的。

不过 我们可以考虑发现只用极小的有用点对 \((i,nxt_i)\) ,其中不能包含其他点对,这样每个点只对应 \(O(1)\) 个点,可以进行修改。

修改需要分类一下,找到所有有影响的点。

最后代码比较优美:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
#define re register
#define PII pair<int,int>
#define rep(k,a,b) for (int k = a;k <= b;k++)
#define adde(a,b) v[a].push_back(b)
#define addev(a,b,c) v[a].push_back({b,c});
#define rd read
#define all(a) a.begin(),a.end()
#define mem(a,b) memset(a,b,sizeof a);
#define pb push_back
#define vct vector
#define rev(T) reverse(T.begin(),T.end())int read()
{int f=1,k=0;char c = getchar();while(c <'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')k=(k<<1)+(k<<3)+(c^48),c=getchar();return k*f;
}const int N = 5e5+5;int n,m,w,a[N];int ne[N];int mn[N<<2];
void pup(int k)
{mn[k] = min(mn[k<<1],mn[k<<1|1]);
}
void mdf(int k,int l,int r,int x,int v)
{if (x > r || x < l) return;if (l == r){mn[k] = v;return;}int mid = l + r >> 1;mdf(k<<1,l,mid,x,v);mdf(k<<1|1,mid+1,r,x,v);pup(k);
}int query(int k,int l,int r,int x,int y)
{if (x > r || y < l) return INF;if (x <= l && r <= y) return mn[k];int mid = l + r >> 1;return min(query(k<<1,l,mid,x,y),query(k<<1|1,mid+1,r,x,y));
}
set<int> s[N];
int findpre(int x)
{if (x == 0) return 0;int v = w-a[x];if ((int)s[v].size() == 0) return 0;auto it = s[v].lower_bound(x);if (it == s[v].begin()) return 0;it--;if ((*it)<x)return (*it);return 0;
}
int findnxt(int x)
{if (x== 0) return 0;int v = w-a[x];auto it = s[v].upper_bound(x);if (it != s[v].end() && (*it)>x) return (*it);return 0;
}bool pd(int a,int b)
{if (!a || !b) return 0;if (findnxt(a) == b && findpre(b) == a) return 1;return 0;
}void change(int x)
{int nt = findnxt(x);if (pd(x,nt))mdf(1,1,n,x,nt);else mdf(1,1,n,x,INF);
}void solvemain()
{cin >> n >> m >> w ;rep(i,1,n) a[i] =rd(),s[a[i]].insert(i);mem(ne,INF);for (int i= 1;i <= n;i++ ){ne[i] = findnxt(i);if (findpre(ne[i]) == i);else ne[i] = INF;mdf(1,1,n,i,ne[i]);}int cnt = 0;rep(i,1,m){int op =rd(),x =rd(),y =rd();if (op == 1){if (a[x] == y) continue;int prewx = findpre(x);int prex = 0;if (s[a[x]].lower_bound(x) != s[a[x]].begin())prex = *(prev(s[a[x]].lower_bound(x)));s[a[x]].erase(x);a[x] = y;s[a[x]].insert(x);int nowprex = 0,nowprewx = findpre(x);if (s[a[x]].lower_bound(x) != s[a[x]].begin())nowprex = *(prev(s[a[x]].lower_bound(x)));change(x),change(prex);change(nowprex);change(nowprewx);change(prewx);}	else{x^=cnt;y^=cnt;if (query(1,1,n,x,y) <= y) puts("Yes"),cnt++;else puts("No");}}}signed main()
{int t;t = 1;while(t--){solvemain();}return 0;
}

https://www.luogu.com.cn/problem/CF1237F

CF1237F Balanced Domino Placements

题目描述

给定一个 \(h\)\(w\) 列的方格棋盘,上面已经放置了一些多米诺骨牌。每个多米诺骨牌恰好覆盖棋盘上相邻的两个格子,每个格子最多只能被一个多米诺骨牌覆盖。

我们称一个多米诺骨牌的放置方式为“完全平衡”,如果没有任何一行或一列中存在被两个不同多米诺骨牌覆盖的两个格子。换句话说,每一行和每一列要么没有被覆盖的格子,要么只有一个被覆盖的格子,要么有两个被覆盖的格子且这两个格子属于同一个多米诺骨牌。

现在给定一个已经完全平衡的多米诺骨牌放置方式,问有多少种方法可以在此基础上再放置零个或多个多米诺骨牌,且仍然保持完全平衡。请输出方案数对 \(998\,244\,353\) 取模的结果。

当前的网格中有部分行部分列被叉掉,问还能放骨牌的方案数。

直接思考,先放竖着的再放横着的,发现竖着的骨牌会叉掉两行一列

对于横着的产生影响,互不独立,不方便计算。

简化问题,考虑只有竖着的。

变成了有若干固定行不可选,一次得选两行的方案数,dp。\(f_{i,j}\) 表示前 \(i\) 行选 \(j\) 次的方案数。

当然此时这些选出来的骨牌的列是错开的而且不固定。

算方案数我们只需要在剩下没有被叉的列中选出 \(j\) 列即可

因此最终为 \(f_{n,j} \times A_{cnth}^{j}\)

同理我们也可以计算出 \(g_{m,i}\) 表示只考虑横着的。

此时似乎横竖会互相影响,我们这样想:

不具体考虑每一个骨牌的具体位置,而是考虑使他们错开,互不影响。

比如说假设有 \(i\) 个竖着的,\(j\) 个横着的。\(cnt_x \ cnt_y\) 分别是没有被叉的行和列的数量

\(f_{n,i}\) 算出了 \(n\) 行选出 \(i\) 张骨牌的方案数,

考虑这 \(i\) 张骨牌能放在哪 \(i\) 列里?

可以在 \(cnt_x - 2\times j\) 个列中选择,因为一张横着的会叉掉两列。

乘法原理乘上 \(A_{cntx-2\times j}^{i}\)

此时还有一点问题。

横着的同时会叉掉一行,因此横着的也只能在 \(cnt_y - 2\times i\) 行中选择

再乘上 \(g_{m,j} \times A_{cnt_y-2\times i}^{j}\)

得到最终答案。

Game on Tree

链接

给定一棵以1为根的树,一开始全为白点

每次随机一个白点 将其与其子树染黑

问操作次数期望

做法

根据期望线性性,可以考虑每个点的贡献

则转化为 \(\sum_{x}p_x\)

\(p_x\)\(x\) 点被选进操作序列的概率

x点能否选入关键在于其到根的路径是否比 x 更早选入 由于选入概率相等

所以 \(p_x = 1/dep_x\)

期望线性性的另一题

扑克牌 52 张,问抽10张牌 A 的期望个数。(A有4张)

ans:\(\frac{10}{13}\)

OOOOOOOOOO

假设这是十张牌 目前花色未知

对于每一张牌考虑 他是A的概率就为\(\frac{1}{13}\)

根据期望线性性可得答案

G - sqrt(n²+n+X)

https://atcoder.jp/contests/abc420/tasks/abc420_g

唐题

题意

找出所有使 \(\displaystyle \sqrt{n^2+n+X}\) 为整数的整数 \(n\)

做法

主要想法有去拆某个东西的因子做到根号或者是枚举某个东西去求 \(n\)

\[\sqrt{n^2 + n + X} = A \]

\[n ^ 2 + n + X = A ^ 2 \]

\[n ^ 2 + n + \frac{1}{4} +X - \frac{1}{4} = A ^ 2 \]

\[X - \frac{1}{4} = A^2 - (n-\frac{1}{2})^2 \]

就变成平方差然后找因子就做完了。

或者:

\[n^2 + n + X = A ^2 \\ n +X = (A-n)(A + n) \\ n + X = B(B + 2n) \\ n + X = B^2 + 2nB \\ n = \frac{X-B^2}{2B-1} \]

容易发现 \(B\) 的范围并不大,大约是 \(O(\sqrt n)\),暴力求解。

F - kirinuki

https://atcoder.jp/contests/abc420/tasks/abc420_f

问题陈述

给一个 01矩阵,问有多少相连子矩阵面积 \(\le k\) 且均为 \(0\)

做法

这种子矩形问题考虑扫描线。

用一条竖线从左到右扫,显然需要维护能向左边延伸的距离。

即为 \(a_i\)

问题转化为

\[\sum_{i=1}^{n} \sum_{j=1}^{n} min(\left \lfloor \frac{k}{r-l+1} \right \rfloor ,min(a[l,l+1,\cdots,r])) \\ \]

容易想到单调栈建出笛卡尔树。

设最小值为 \(x\),区间为 \([l,r]\)

场上想到这一步就不会了。

实际上我们可以继续推式子。

发现式子只跟区间长度相关,于是

\[\sum_{len} min(\left \lfloor \frac{k}{len} \right \rfloor ,x) \times c_{len} \]

\(c_{len}\) 表示长为 \(len\) 的区间个数

考虑 \(c_{len}\) 的形态。

笛卡尔树经典结论

经典结论是它应该为 \(1,2,3,4,\cdots,x,x,\cdots,x,x-1,x-2,\cdots,3,2,1\)

image-20250826091138509

分讨一下。

  1. \(\left \lfloor \frac{k}{len} \right \rfloor \le x\)

    \[\sum_{len \ge b} \left \lfloor \frac{k}{len} \right \rfloor \times c_{len} \]

    发现式子很整除分块,不过很爆,因为是 \(O(\sqrt k)\) 的。

    但是因为 \(k\) 是固定的于是我们可以通过一些预处理做到 O(1)。

  2. 反之,即为 \(c_{len} \times x\) ,也可以做到 \(O(1)\)

具体来说,设 \(\large f_i = f_{i-1} +\lfloor \frac{k}{i} \rfloor *i,g_i = g_{i-1} +\lfloor \frac{k}{i} \rfloor\)

上述式子都能通过 \(f,g\) 加减得到。

总结:多列式子推式子简化或转化问题。

day4 C 互不相同

给定 \(a_i\),定义一次操作为选择一段子区间加上任意整数 \(x\),问至少几次操作使得全局互不相同。

假设做了 k 次区间加法 产生 \(2k\) 个端点

可以发现端点之间每个区间内部都是互不相同的。

那么原题可以等价为我们选择一个左端点每次贪心的选直到有相同的就新开一个区间。

此时需要操作的次数 = (区间数+1)/2

因为一次操作会产生两个端点。

此时还有一个问题是左右两端的贡献计算,一种方法是枚举左端点找出对应右端点,

另一种方法是强行将原序列拼成一个环,即将原数组复制一遍,往后倍增跳满足 r-l+1<=n

便能自然地算出左右端贡献了。

CSP-S 模拟赛 Day 1 B. 随机左移

你有一个长度为 n 的排列 p1,…,pn,一开始 pi=i。

你想做如下操作 m 次:

  • 选择一个数字 x(1≤x≤n),然后把 p1,p2,…,px 循环左移,也就是变成 p2,p3,…,px,p1。

你想知道这个做法是不是足够随机,所以给你一个排列 q1,q2,…,qn,问在 nm 种不同的操作方法中,有多少种操作的方法使得 p 恰好变成 q。输出答案对 1000000007 (1e9+7) 取模的结果。

做法

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
#define int ll
#define PII pair<int,int>
#define rep(k,a,b) for (int k = a;k <= b;k++)
#define adde(a,b) v[a].push_back(b)
#define addev(a,b,c) v[a].push_back({b,c});
#define rd read
#define all(a) a.begin(),a.end()
#define mem(a,b) memset(a,b,sizeof a);
#define pb push_back
#define vct vector
#define rev(T) reverse(T.begin(),T.end())
#define endl "\n"const int N = 5e6+5,mod = 1e9 + 7;int n,m,a[N];int ksm(int a,int b)
{int res = 1;while (b){if (b & 1) res = 1ll * res * a % mod;b >>= 1;a = 1ll * a * a % mod;}return res;
}
void solvemain()
{cin >> n >> m;rep(i,1,n) cin >> a[i];int maxn = max(n,m);vct<int> jc(maxn + 2),ijc(maxn + 2);for (int i = 0;i <= maxn;i++)jc[i] = i?jc[i-1]*i%mod:1;ijc[maxn] = ksm(jc[maxn],mod-2);for (int i = maxn-1;i >= 0;i--)ijc[i] = ijc[i + 1] * (i + 1) % mod;auto C = [&](int a,int b){if (a < b) return 0ll;return jc[a] * ijc[b] % mod * ijc[a-b] % mod;};int j = n;int b = n;for (int i = n;i >= 1;i--){while (j >= 1 && a[j] != i) j--;if (a[j] == i) b = i-1;}// cout << b << endl;auto pw = [&](int x){if (x & 1) return -1;return 1;};ll ans = 0;vector<int> f(n + 2);f[0] = 0;for (int i = 1;i <= n;i++) f[i] = ksm(i,m)*ijc[i]%mod;rep(i,1,n) (f[i] += f[i-1]) %= mod;for (int i = 0;i <= n;i++){int l = max(i,b) - i;int r = n - i;// cout << l << ' '<< r << endl;if (l > r) continue;if (r < 0) continue;int res;if (l == 0) res = f[r];else res = (f[r] - f[l-1] + mod) % mod;// cout << res << endl;(ans += pw(i) * ijc[i] % mod * res % mod) %=mod;ans = (ans % mod + mod) % mod;// cout << ans << endl;// cout << ans << endl;}cout << ans << endl;
}signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int t;t = 1;while(t--){solvemain();}return 0;
}

CSP-S 模拟赛 A. 序列

给点序列 \(a_1,a_2,\cdots ,a_n\),问有多少非负整数序列 \(x_1,x_2,\cdots,x_n\) 满足:

  • \(\forall i,0 \le x_i \le a_i\)
  • 满足 \(x_1 | x_2 | \cdots | x_n = x_1 + x_2 + \cdots + x_n\)

\(n \le 16,a_i < 2^{60}\)

状压+数位 DP 好题。

条件二可以转化为 \(x\) 两两并为 \(0\)。按位考虑,即每一位至多一个 \(1\)

考虑从高位开始给每一位填数,那么需要判断是否超过 \(a_i\) ,可以想到用数位 \(DP\)

对于每一个数字记录当前是否达到最大限制,即数位 DP 中的 \(limit\)

用一个 \(16\) 位二进制记录即可。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
#define re register
#define int ll
#define PII pair<int,int>
#define rep(k,a,b) for (int k = a;k <= b;k++)
#define adde(a,b) v[a].push_back(b)
#define addev(a,b,c) v[a].push_back({b,c});
#define rd read
int read()
{int f=1,k=0;char c = getchar();while(c <'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')k=(k<<1)+(k<<3)+(c^48),c=getchar();return k*f;
}const int N = 25,M = 66,mod = 998244353;int n,a[N];int num[N][M];int f[M][(1<<16)+10];void solve()
{cin >> n;rep(i,1,n) a[i] = rd();for (int i = 1;i <= n;i++){for (int j = 1;j <= 60;j++){num[i][j] = (a[i]>>(j-1))&1;}}for (int j = 0;j < (1<<n);j++) f[0][j] = 1;for (int i = 1;i <= 60;i++){for (int j = 0;j < (1<<n);j++){int cur = 0;for (int k = 1;k <= n;k++){if ((j>>(k-1)&1) && num[k][i]==0) cur += (1<<(k-1));}(f[i][j] += f[i-1][cur])%=mod;for (int k = 1;k <= n;k++) {int sj = (j>>(k-1))&1;int limit = 1;if (sj == 1) limit = num[k][i];if (limit == 0) continue;int ncur = cur;if (sj) ncur += (1<<k-1);(f[i][j] += f[i-1][ncur])%=mod;}		}}cout << f[60][(1<<n)-1] << endl;
}signed main()
{int t;t = 1;while(t--){solve();}return 0;
}

CF2133E I Yearned For The Mines

https://www.luogu.com.cn/problem/CF2133E

有趣的题。

题意

一棵树,每次可以删除一个点及相邻的边,或者check一个点有没有人,然后人会移动。

构造出一组操作序列使得人一定会被抓到。长度不超过 \(\frac{5}{4}n\)

做法

发现一条链都可以从头扫过去。

发现 \(\frac{5}{4}\) 这个数字,考虑用 \(\frac{1}{4}\) 次操作把原树变成可以 n 次查询出来的形状。

大概是若干条链。

也就是说我们要一次操作至少使得四个点进入所在联通块是一条链。

做法即为从底往上做,若有 \(siz_x \ge 4\) 就删除 \(x\)

列举发现一定可行。

做完了。

值得注意的是从底往上做不要用什么按 dep 排序之类的汤比做法,而是 dfs递归往下做。

CF2133D Chicken Jockey

https://www.luogu.com.cn/problem/CF2133D

神秘贪心,dp。

给定 \(a_i\),杀死一个小怪 \(i\),其后面一个受到 i 的摔伤,杀一次减 \(1\),问最少杀几次。

做法

一个小怪只会受到一次伤害且只可能是 \(i-1\)\(1\)

因为不可能出现在新的堆叠中再去受到更大的摔伤,这样是不优的。

线性dp即可。

f[1] = 0;
for (int i = 2;i <= n;i++)
{f[i] = (f[i-2] + min(a[i],i-1));f[i] = max(f[i],f[i-1] + 1);
}
cout << s-f[n] <<  endl;

CF1545B

https://codeforces.com/problemset/problem/1545/B

有趣的排列组合题。

CF1545B AquaMoon and Chess

题目描述

你有一个长为 \(n\) 的棋盘,这个棋盘上有一些棋子,你可以进行如下操作:

如果第 \(i + 2\) 个位置是空的,且第 \(i + 1\) 个位置非空,则可以将第 \(i\) 个位置的棋子挪到第 \(i + 2\) 个位置 (\(i + 2 \leq n\)).

如果第 \(i - 2\) 个位置是空的,且第 \(i - 1\) 个位置非空,则可以将第 \(i\) 个位置的棋子挪到第 \(i - 2\) 个位置 (\(i - 2 \geq 1\)).

给出一个棋盘,求可达状态数。

做法

trick 是不要去管每个东西具体在什么位置,而是相对的关系。

可以发现 \(11\) 可以随意行动,我们可以看成把 \(11\) 捆绑起来,一起移动。

当只有 \(11\) 时,设数量为 \(a\)\(0\) 的数量为\(c\),根据排列组合的捆绑法易得答案为 \(C_{a+c,a}\)

当有单个 \(1\) 时,我们可以看成经过 \(1\) 就交换位置

\(111\) 的情况会被算重,可以钦定 \(11\) 一定在前面,则若确定了一种放置 \(11\) 的方法,\(1\) 的位置也相继确定。

则答案即为 \(C_{a+c,a}\)

CF1415D XOR-gun

https://www.luogu.com.cn/problem/CF1415D

有意思的题目。

题目描述

Arkady 拥有一个非递减数组 \(a_1, a_2, \ldots, a_n\)

每一步,你可以选择数组中两个相邻的元素,记为 \(x\)\(y\),将它们从数组中移除,并在它们的位置插入整数 \(x \oplus y\)

你希望数组不再是非递减的。请问最少需要多少步?如果无论如何操作数组都始终保持非递减,请输出 \(-1\)

做法

先考虑一些特殊情况,如果每个数二进制数位长度不同,那么为 \(-1\)。因为无论如何操作都是非递减的。

而当出现连续 \(3\) 个数的数位长度都相同时,我们可以操作后两个数来达成目的,此时答案为 \(1\)

考虑鸽巢原理,最多只有 \(30\) 个数位,当 \(n > 60\) 时,必有连续三个数数位长度相同,答案为 \(1\)

\(n \le 60\) 时,发现每次异或的数都是一段区间,\(O(n^3)\) 暴力枚举即可。

2103 F. Maximize Nor

https://codeforces.com/contest/2103/problem/F

有趣的题目。

对于每一个 \(i\) 求包含 \(i\) 的区间的最大权值,权值为区间 \(nor\)。(or 取反)。

按位考虑。

发现遇到一个 \(1\) 就变成 \(0\)

于是对于一个区间我们只需要关注最后一个 \(1\),在根据左端点位置和前面 \(0\) 的奇偶性来判断 0/1。

于是区间权值可以 \(O(log V)\)

又因为只需要关注最后一个 \(1\),所以假设固定了 \(r\),左端点每移动两位,权值就会重复,而在第一个 \(1\) 的位置会发生一些变化。

于是有:对于固定的 \(r\),不同权值只有 \(O(k)\) 种。

于是我们暴力找出这些区间,做一个区间 chkmx,最后每一个 \(i\) 查一下即可。

值得注意的是并不需要线段树,只需要 扫描线维护 multiset即可。

相关文章:

做题记录 2

F. Shift and Revers 题意 给定 \(a_i\) ,操作有让 \(a_n\) 移到第一位和翻转整个序列,问最小操作数使得 \(a_i\) 从小到大排序。 做法 (不)容易发现可以正反都做一次取 min。 P6617 查找 Search 一道有点折磨的分讨题 理不清思路容易WA 给定 \(n\) 个垃圾桶,你需要维护一个…...

计数原理与排列组合

加法原理:做一件事情,有 \(n\) 类办法,第 \(1\) 类办法有 \(m_1\) 种方法,第 \(2\) 类办法有 \(m_2\) 种方法,第 \(n\) 类办法有 \(m_n\) 种方法,则完成这件事情的办法有 \(m_1+m_2+\cdots+m_n\) 种。 加法原理属于分类计数原理,分类需要包含所有情况,类与类之间不会产…...

9.16动态用例设计方法 笔记

...

深入解析:ESP32三种主流的开发环境

深入解析:ESP32三种主流的开发环境pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; …...

js

js...

9.16电商状态迁移图

...

c# ConcurrentDictionary

using System.Collections.Concurrent;internal class Program {static void Main(string[] args){ConcurrentDictionary<string, RedisConnection> redisConnectionDic = new ConcurrentDictionary<string, RedisConnection>();int redisConn =10;//会多次创建//P…...

核桃OJ【S组 第二轮】信息学竞赛10w选手模拟考

赤石,爽!核桃OJ【S组 第二轮】信息学竞赛10w选手模拟考 什么糖丸的名字 还是pvz专场。 植物部队哈基米 哦哦哦,感觉就不难,无非是一个连续段成环和特殊植物两种,复杂度能过。哈哈哈,预处理跑2s,太帅了吧!卡常!最后跑1.5s,过了。可是你大样例只有一个不满的,这是什么…...

第一次个人编程作业

第一次个人编程作业 作业GitHub链接https://github.com/useful-Tree/3123004757/tree/main 一、PSP表格(预估与实际耗时)PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)Planning 计划 15 20 Estimate估计任务所需时间 15 20Development 开发 …...

【初赛】软件系统 - Slayer

软件系统 (主要是之前做到了几次 全错 来记一下 系统软件 操作系统、Windows、dos、unix、各种计算机语言处理程序、机器语言、汇编语言、高级语言、数据库管理系统、支持软件 应用软件 程序库、软件包、套装软件、用户程序 常见:字处理软件、电子制表软件、计算机辅助设计软…...

漏洞详解--XXE 从入门到精通!

一、漏洞原理 1.1 核心 XXE(XML External Entity injection),名为XML外部实体注入。其核心在于XML解析器默认允许外部实体/DTD,攻击者通过构造特殊的XML使其包含恶意外部实体。外部实体可以为服务器敏感文件,也可以为网络请求等,之后利用方式类似于文件包含和SSRF,有时甚…...

数学分析习题课 note

ohno,这很难第一讲:实数系 我们可以定义有序域 \(F\) 。一些有序域 \((F,+,\cdot,\le )\) 满足以下所谓连续公理: 连续公理 阿基米德公理:\(\forall x,y\in F,x>0,\exists n\in N^{+}\) 使得 \(nx>y\) 完备公理:若存在代数结构 \((F,+,\cdot,\le )\) 满足 \(F\subse…...

总结-CDQ 分治

关于 CDQ 分治 CDQ 分治是一种思想而不是具体的算法,并且必须离线处理,用于维护具有偏序限制的问题。 偏序可以理解为大小关系。 经典三维偏序 CDQ 分治的经典应用。 给定每个元素,每个元素都有三个属性 \((x,y,z)\),要求统计所有满足三个偏序条件时的价值。 标准方法:sor…...

【初赛】计算机语言 - Slayer

计算机语言 编译性语言 c c++ pascal 解释性预言 py java JavaScript ruby PHP...

深入浅出RocketMQ客户端编程

深入理解RocketMQ:从架构到实战的全方位指南 在当今分布式系统日益普及的时代,消息队列已成为支撑高并发、高可靠业务的核心组件。RocketMQ作为阿里巴巴开源的高性能消息中间件,凭借其卓越的性能和稳定性,在电商、金融等高要求场景中得到了广泛应用。今天,让我们一起深入探…...

Win10玩LOL弹窗

将红框内关闭关闭后,可以按win+g快捷键,如果不弹出那个窗口,在LOL里面应该也不会弹出...

溢出存储变量

这个 negative(i) 表示的就是 (-i) 这个数(其中 i>=0),在二进制下的编码。 这个编码满足 \(i+negative(i)=2^k\),可是由于我们二进制下只有 \(k\) 位,最高位是 \(2^{k-1}\),所以那个 \(1\) 会被丢掉,所以加起来结果为 \(0\)。 那如何确定一个数被存储为多少,因为前面…...

retrieving repo key for OS unencrypted from

在服务器上安装mkfontscale工具时,下载成功但是再安装过程中一直提示: retrieving repo key for OS unencrypted from http://repo.openeuler.org/openEuler-22.03-LTS-SP3/OS/x86_64/RPM-GPG-KEY-openEuler。 手动下载RPM-GPG-KEY-openEuler文件,将其上传到服务器/etc/yum.…...

3. Explain详解与索引最佳实践

3.1 Explain使用与详解id select_type table partitions type possible_keys key key_len ref rows filtered Extra1 SIMPLE user NULL ref idx_name_age_dpt idx_name_age_dpt 1023 const 1 100.0 NULL中 重要 中 低 重要 重要 重要 重要一般 一般 一般通过EXPLAIN或DESC命令获…...

软工个人项目作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477这个作业的目标 制作论文查重工具论文查重工具项目文档 项目概述 本项目是一…...

异地办公文件同步,多台设备如何无缝同步最新教程

如何实现异地电脑文件同步?本文对比了坚果云与Syncthing等复杂技术方案。讲解如何使用坚果云,无需繁琐配置,即可在Windows/Mac等多设备间实现文件自动、实时同步。是解决远程办公和多设备管理难题的简单、高效选择。异地电脑文件同步?告别复杂技术,一招搞定! 身处不同城市…...

CSP-S模拟22

前言: 哈哈哈,又是一场爆零的模拟赛~~ \(T1:\) 木棍 思路: 机房出现了两种思路: 第一种:我们不难发现,一共就只有五种情况\({334}{2233}{2224}{244}{22222}\)...

详细介绍:【系统分析师】2025年上半年真题:论文及解题思路

详细介绍:【系统分析师】2025年上半年真题:论文及解题思路pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New",…...

实战有效的Web时序攻击技术剖析

本文深入探讨了Web时序攻击的实际应用,包括参数发现、服务器端注入和反向代理配置错误检测,通过真实案例展示了高精度时序分析技术在安全测试中的突破性进展。倾听低语:实际有效的Web时序攻击 | PortSwigger研究 James Kettle 研究总监 @albinowax 发布时间:2024年8月7日 1…...

22222222 - idle

//为什么要攀登?因为山就在那里。 #include<bits/stdc++.h> #define mrx 0x7f7f7f7f7f7f7f7f //#define int long long using namespace std; inline int read(){int num=0,flag=1;char ch=getchar();while(ch<0||ch>9){if(ch==-) flag=-1;ch=getchar();}while(ch…...

表格如何设置多人在线编辑?坚果云实时编辑,告别版本冲突!

还在为Excel表格多人协作的版本混乱、数据冲突而烦恼吗?本文深入对比坚果云、在线Office等三大解决方案,并提供坚果云实战教程。教你如何利用其强大的实时同步、版本管理和权限控制功能,彻底告别协作难题,实现高效、安全的团队文件管理。告别表格协作难题:三大高效解决方案…...

白嫖党狂喜!爆肝一下午搞定 URL 转 HTML 幻灯片神器,ISlide 9900 资源点从此是路人

原文:白嫖党狂喜!爆肝一下午搞定 URL 转 HTML 幻灯片神器,ISlide 9900 资源点从此是路人家人们谁懂啊!之前分享的 ISlide 插件做 PPT 一次要耗 9900 个资源点【从 url 到 PPT 一键生成:Coze 工作流,颠覆你的内容创作方式!】,作为资深白嫖党看着资源点的大量消耗实在心疼…...

继承

1.概述 子类和父类的区分需要根据实际情况,不能随便使用 2.子类只能继承一个父类,(单继承),但是可以多级继承 所有类都简介或直接继承Object类(java虚拟机自动生成) 3继承的内容 成员变量 继承的private内容可以被继承但是不能直接使用,需要用get()方法 继承中成员变量的访问特…...

我们究竟在用钱交换什么?

钱,藏着哪些我们没说透的用途?"穷人用健康换钱,富人用钱买健康",而最残忍的是,后者永远买不完 这个世界上,钱不是万能的,但有钱的确能解决99%的问题,包括给我们带来自尊和底气!中国有句老话:和气生财,我认为,和气不一定生财,但有钱确实能为家庭带来一…...

jupyterLab如何使用

好的,JupyterLab 是一个非常强大的交互式开发环境(IDE)。下面我将从安装、启动、核心功能到高级技巧,为你提供一个完整的入门指南。一、安装 JupyterLab 首先,你需要安装 JupyterLab。强烈建议在虚拟环境中安装,以避免包冲突。 1. 使用 pip 安装(最常用) # 1. 创建并激…...

HyperWorks许可监控

在当今竞争激烈的工程设计和仿真领域,资源的高效利用至关重要。HyperWorks作为一款业界领先的工程仿真软件,其许可监控功能为用户提供了强大的资源管理和优化工具。本文将向您介绍HyperWorks许可监控的重要性以及如何利用它确保您的资源得到充分利用。 什么是HyperWorks许可监…...

C++拷贝构造函数详解:从浅拷贝到深拷贝

什么是拷贝构造函数? 拷贝构造函数是C++中的一种特殊构造函数,用于创建一个新对象作为现有对象的副本。当我们使用一个对象来初始化同类型的另一个对象时,拷贝构造函数就会被调用。 基本语法 class MyClass { public:// 拷贝构造函数MyClass(const MyClass& other) {// …...

K8S探针

https://blog.csdn.net/weixin_28820113/article/details/148380309 HTTP探测实战(最常用) 向容器发送 HTTP 请求,若返回状态码为 200-399,则表示检查成功[root@master ~/probe]# cat readiness.yaml kind: Pod apiVersion: v1 metadata:name: nginxlabels:app: nginx spec…...

模拟赛

波波牛的惩罚 我们先处理出每个数可能影响的数,可以用链式前向星或 vector 我们维护一个队列,在最开始的时候放入最小值。 每次取出一个数,然后遍历所有可以影响的数,并把影响成功的数放进队列。 在最后判一下是否相同即可。 复杂度 \(O(n)\)。点击展开代码 #include<bi…...

bug1

9.16 修复报错字体大小bug 补充日志 TeXmacs/progs/debug/debug-widgets.scm 修改build-message 为以下 (define (build-message m)(let* ((k (tm->stree (tm-ref m 0)))(s (utf8->cork (tm->stree (tm-ref m 1))))(t (tm->stree (tm-ref m 2))))(cond ((string-e…...

C#第十二天 025

父类如果只有有参构造器,子类会默认去调用父类的无参构造器,如果子类要有无参构造器需要这样 子类构造器():base(参数)你的理解​​完全正确​​!当父类​​只有有参构造器​​时,子类必须​​显式调用父类的有参构造器​​,否则会编译错误。 类成员的访问级别不能超…...

选择语句的机器级表示

无条件转移指令--jmp 格式: jmp <地址> #pc无条件跳转到<地址> <地址>可以由常数直接给出:jmp 5 <地址>可以来自于寄存器:jmp eax <地址>可以来自于主存 :jmp [999] <地址>可以用“标号”锚定:jmp NEXT 100 mov eax,7 104 mov ebx,6 …...

pip常用命令

好的,这是 Python 包管理工具 pip 的常用命令大全,涵盖了从安装、升级、查询到问题排查的所有核心操作。一、核心命令:安装与卸载命令 描述 示例pip install <package_name> 安装最新版本的包 pip install requestspip install <package_name>==<version>…...

Nginx auth_request 模块使用

Nginx auth_request 模块使用笔记 📌 模块概述 nginx-auth-request-module(官方名:http_auth_request_module)用于在请求处理前向外部服务进行认证验证。 🔧 安装与启用 # 编译时添加模块 ./configure --add-module=/path/to/nginx-auth-request-module# 检查是否已安装…...

用nssm将minio和srs注册成服务

首先,要注意一个关键问题,不要在nssm中直接调用batNSSM 与 Bat 文件的问题:当NSSM启动一个批处理文件(.bat)时,它实际启动的是cmd.exe进程,而批处理中的命令(如minio.exe)则是其子进程。NSSM会监视cmd.exe的状态。一旦批处理中的命令执行完毕,cmd.exe进程就会退出,N…...

Mac上的Markdown学习

Markdown学习 标题 一个#+空格表示一级标题 两个#+空格表示二级标题 ……同理,几个#+空格表示几级标题 字体 粗体 Hello World 前后两个*表示粗体 斜体 Hello World 前后一个*表示斜体 斜体加粗 Hello World 前后三个*表示斜体加粗 删除线 Hello world 前后两个英文字符~表示删…...

ubuntu 18.04安装mysql8.4.5

环境Os:ubuntu 18.04 desktop桌面版mysql:8.4.5 glibc2.17 查看操作系统信息root@db:/# ldd --version ldd (Ubuntu GLIBC 2.27-3ubuntu1) 2.27 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is…...

Radxa E20C 安装 OpenWrt

背景 今天浏览 Radxa E20C 官方文档中无意中发现设备可以安装 OpenWrt,如下图:Radxa E20C 官方文档安装 OpenWrt参考链接: E20C->上手指南->安装系统->安装系统到EMMC->Windows主机创建目录 01-DriverAssistant v5.0, 下载 DriverAssistant v5.0 ,并解压和安装…...

第三篇:配置浏览器

111111车到山前必有路,学到苦海甘甜来。只有知识和阅历对的起自己的年龄,美好的生活才不会欺骗自己!...

第二篇:playwright初步解析

以下是一个完整的测试用例,模拟用户登录功能: 脚本示例:from playwright.sync_api import sync_playwrightdef test_login(): with sync_playwright() as p: # 启动浏览器 browser = p.chromium.launch(headless=True) page = browser.new_page()# 打开…...

高性能计算-TensorCore-hgemm

1. TensorCore 简介:硬件层面支持半精度浮点矩阵乘法,与昇腾NPU的 cube 核类似,最小只能计算规定尺寸的矩阵乘法。 wmma API 封装在 nvcuda 命名空间2. naive :一个block 1 个warp,wmmaTile 16*16点击查看代码 //naive 一个block 一个warp,一个线程处理一个数据 template …...

《ESP32-S3使用指南—IDF版 V1.6》第三十八章 SPIFFS实验

第三十八章 SPIFFS实验 1)实验平台:正点原子DNESP32S3开发板 2)章节摘自【正点原子】ESP32-S3使用指南—IDF版 V1.6 3)购买链接:https://detail.tmall.com/item.htm?&id=768499342659 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/esp32/…...

技术交流社区基础防诈指南

技术交流社区基础防诈指南技术交流社区基础防诈指南 若已确认被骗或发现违法内容,请立即通过以下渠道举报:公安部网络违法犯罪举报网站:12321.cn (网络不良信息) 国家反诈中心:拨打 110 或通过官方APP举报 (注意:报警时务必索要《受案回执》) 中央网信办违法和不良信息举报…...

神秘题

Trick排列置换题,考虑转化乘环上移动问题。题目 精灵之环 假设知道排列 \(p\)。 那么把这个排列 \(p\) 的环连出来,环上点的编号是排列的下标,点的值是编号对应的值。 就比如排列 4 1 2 3 的环为: val: 4 1 2 3 4 id : 1->2->3->4->1...可以发现把这些环上…...

技术群高级防骗指南

技术群高级防骗指南技术群高级防骗指南 怎么骗的 怎么防 被骗会怎么样 怎么骗的 1.资源储备与身份伪装: 1.盗盗取大量高等级账号并使用,给人友好可信的虚假印象2.养 ​ 骗子可能会花时间养这些盗来的号, 参与正常讨论,发一些专业的言论, 或者爆出自己是某某名牌大学来的 / 某…...