Educational Codeforces Round 159 (Rated for Div. 2)(A~F)(LCA + 线性基)

news2024/11/18 9:48:35

        A - Binary Imbalance 

        题意:给定一个01串,你能够在相邻相同字符中插入‘1’,在相邻不同字符中插入‘0’,求最终能否使得0的数量严格大于1的数量。

        思路:可以发现,当出现了‘01’或者‘10’子序列时,能够无限在中间插入‘0’,所以只要出现了0,最终一定能满足题意。

// Problem: F. Trees and XOR Queries Again
// Contest: Codeforces - Educational Codeforces Round 159 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1902/problem/F
// Memory Limit: 512 MB
// Time Limit: 6500 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#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 < s.size() ; i ++){
		if(s[i] == '0'){
			cout <<"YES\n";
			return;
		}
	}	
	cout <<"NO\n";
}            
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;
}

 B - Getting Points 

        题意:给定数字n,p,l,t。表示了总共有n天,其中每一天能够休息或者去狠狠得分,每次能够得l的分数。同时会在第1天、第8天、第15天....第(7x+1)天得到一个任务,任务能够在之后的任意一天完成,且每个任务的分值为t。同时每天能够在得分的过程中完成最多两项任务。求达到目标分数p及以上的得分方案中,休息天数最大的天数。

        思路:由于任务是累计的,因此在越后面的天数选择得分就越优。因此有如下最优方案:从最后一天往前开始得分,直到满足分数p为止。注意任务总数有上限即可。

        

// Problem: B. Getting Points
// Contest: Codeforces - Educational Codeforces Round 159 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1902/problem/B
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#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;
}
LL n , p , l , t;
vector<int>a(N , 0);
void init(int n){
	for(int i = 0 ; i <= n ; i ++){
		a[i] = 0;
	}
}
void solve() 
{
	cin >> n >> p >> l >> t;
	LL maxt = (n - 1) / 7 + 1;
	LL day = 0;
	if(maxt * t + l * ((maxt + 1) / 2) >= p){//最后(maxt +1)/2天上课做任务
		day += (p - 1) / (l + 2 * t) + 1;
		cout << n - day<< endl;
	}
	else{
		p -= maxt * t + l * ((maxt + 1) / 2);
		day += (maxt + 1) / 2;
		day += (p - 1) / l + 1;
		cout << n - day<< endl; 
	}
}            
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;
}

C - Insert and Equalize 

        题意:给定一个完全不同的数组a,要求添加不同于a数组中任意一个数的自然数到数组a当中,且选择一个正整数x,要求数组中每个数加上若干次x后全部都相等。求加x操作的最小操作数。

        思路:可以发现x应该是越大越好。注意到如下事实:若两个数最终加上若干次x相等,那么必然能够满足其中一个数加上若干次x后等于另一个数。也就是说两个数相减是x的倍数。因此x应当为所有数差值的gcd。

        求出x以后,考虑添加的数为多少,我们可以令最终所有的数都成为整个数组当中最大的数,那么添加的数就应该尽可能的靠近最大的数。这样才能够使得操作数最小。

        所有都求完时候求出需要增加的总数/x即可。

// Problem: C. Insert and Equalize
// Contest: Codeforces - Educational Codeforces Round 159 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1902/problem/C
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#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<LL>a(N , 0);
void init(int n){
	for(int i = 0 ; i <= n ; i ++){
		a[i] = 0;
	}
}
void solve() 
{
	a[0] = -llinf;
	cin >> n;
	LL sum = 0;
	for(int i = 1 ; i <= n ; i ++)
		cin >> a[i] , sum += a[i];
	sort(a.begin() + 1 , a.begin() + n + 1);	
	if(n == 1){
		cout << 1 << endl;
		return;
	}
	int x = a[2] - a[1];
	for(int i = 3 ; i <= n ; i ++){
		int nx = gcd(x , a[i] - a[i - 1]);
		x = nx;
	}
	for(int i = n ; i >= 1; i --){
		if(a[i] - a[i - 1] != x){
			sum += a[i] - x;
			break;
		}
	}
	cout << (a[n] * (n + 1) - sum) / x << 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;
}

D - Robot Queries 

        题意:有一个无限的 2 维网格。一开始,机器人站在 (0,0)点。机器人可以执行四条指令:

  • U - 从点 (x,y)移动到 (x,y+1);
  • D - 从点 (x,y)移动到 (x,y−1);
  • L--从点 (x,y)移动到 (x−1,y);
  • R--从点 (x,y)移动到 (x+1,y)。

        给你一串长度为 n的命令 s 。您的任务是回答 q 独立查询:给定四个整数 x 、 y 、 l 和 r ;判断机器人在执行命令序列 s 时是否访问了点 (x,y) ,但 l 到 r 的子串是相反的(即机器人执行命令的顺序是 s1s2s3…sl−1srsr−1sr−2…slsr+1sr+2…sn )。

        思路:(一定要想清楚题目在干什么...比赛时想假了)可以发现:对于反转[L,R]的操作而言,机器人从[0,L - 1]上的位置时不会改变的,从[R,n]的位置也是不会改变的,因此考虑记录机器人所有时刻能够到达的点的情况,同时记录一下机器人到达某个点的时间情况。查询的时候只需要判断(x,y)所对应的时间情况是否存在与上述两个区间当中。

        在处理一个查询时,我们不可能去从[L,R]逐个修改位置,因此考虑的是(x , y)这个点在[L,R]范围内反转的等价情况(x',y')。例如pos(r - 1) = {0 , 1} , pos(r) = {1 , 1} , pos(l - 1) = {x , y} 。 那么在翻转之后,pos(l - 1 + 1) = {x + (pos(r - 1).x - pos(r).x , y + (pos(r - 1).y - pos(r).y)}  ,将r - 1 中的 1改成任意数也是一样的情况。也就是说[L,R]中翻转后的点p相当于为{pos(l - 1).x + pos(r).x - pos(p).x , pos(l-1).y +pos(r).y - pos(p).y}。我们对范围内每个点进行操作显然是不成立的,因此可以对(x , y)进行操作。然后判断(x' ,y')是否出现在[L,R]内。

        

// Problem: D. Robot Queries
// Contest: Codeforces - Educational Codeforces Round 159 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1902/problem/D
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#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 >> m;
	int nx = 0 , ny = 0;
	string s;
	cin >> s;
	s = " " + s;
	pair<int,int>pos[n + 5];
	pos[0] = {nx , ny};
	for(int i = 1 ; i <= n ; i ++){
		if(s[i] == 'R'){
			nx++;
		}
		else if(s[i] == 'D'){
			ny--;
		}
		else if(s[i] == 'L'){
			nx--;
		}
		else{
			ny++;
		}
		pos[i] = {nx , ny};
	}
	map< pair<int,int> , set<int> >vis;
	for(int i = 0 ; i <= n ; i ++){
		vis[pos[i]].insert(i);
	}
	auto check = [&] (pair<int,int> p, int l ,int r){
		if(!vis.count(p)){
			return false;
		}
		else{
			auto it = vis[p].lower_bound(l);
			return it != vis[p].end() && *it <= r;
		}
	};
	//X' = POS[L - 1].X + (POS[R].X - X) 
	for(int i = 0 ; i < m ; i ++){
		int x , y , l , r;
		cin >> x >> y >> l >> r;
		if(check({x , y} , 0 , l - 1) || check({x , y} , r , n) || check({pos[l - 1].x + pos[r].x - x ,pos[l - 1].y + pos[r].y -  y} , l , r)){
			cout << "YES\n";
		}
		else{
			cout << "NO\n" ;
		}
	}
}            
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;
}

E - Collapsing Strings 

        题意:给你 n 个由小写拉丁字母组成的字符串 s1,s2,…,sn 。假设 |x| 是字符串 x

的长度。

假设两个字符串 a 和 b 的合并 C(a,b)

运算如下:

  • 如果 a为空,则 C(a,b)=b;
  • 如果 b为空,则 C(a,b)=a;
  • 如果 a的最后一个字母等于 b 的第一个字母,则 C(a,b)=C(a_{1 , |a|-1},b_{2 , |b|}) ,其中s_{l , r} 是 s 从 l字母到 r字母的子串;
  • 否则为 C(a,b)=a+b,即两个字符串的连接。

计算 \sum_{i = 1}^{n} \sum _{j = 1}^{n}|C(s_{i} , s_{j})|.

        思路:所有区间求和考虑定1求1,即枚举每个s_{j},考虑整体维护s_{i}的情况,整个过程中,我们需要记录的是满足s_{i}的后缀等于s_{j}的每个前缀子串的数量。最傻瓜的方法就是直接用字符串哈希(很容易被卡)来维护每个后缀的数量以及这些后缀所对应的字符串的总长度。然后再枚举每个s_{j}的前缀去逐一相加。

// Problem: E. Collapsing Strings
// Contest: Codeforces - Educational Codeforces Round 159 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1902/problem/E
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#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;
const int M1 = 1e9 + 7;
const int B1 = 29;
const int M2 = 1e15 + 7;
const int B2 = 31;
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;
	}
}
LL get_hash1(LL pre , char c) {
  return (pre * B1 + (LL)(c - 'a' + 1)) % M1;
}
LL get_hash2(LL pre , char c){
  return (pre * B2 + (LL)(c - 'a' + 1)) % M2;	
}
map<pair<int,int>,int>cnt_r , r;
void solve() 
{
	cin >> n;
	string s[n + 5];
	int tot = 0;
	for(int i = 1 ; i <= n ; i ++)
		cin >> s[i];
	for(int i = 1 ; i <= n ; i ++){
		int len = s[i].size();
		tot += len;
		LL hash1 = 0;
		LL hash2 = 0;
		for(int j = len - 1 ; j >= 0 ; j --){
			hash1 = get_hash1(hash1 , s[i][j]);
			hash2 = get_hash2(hash2 , s[i][j]);
			cnt_r[{hash1 , hash2}]++;
			r[{hash1 , hash2}] += len;
		}
	}
	LL ans = 0;
	for(int i = 1 ; i <= n ; i ++){
		int len = s[i].size();
		int res = n;
		LL num = tot;//所有字符串中未被计算过的字符串总长度
		LL hash1 = 0;
		LL hash2 = 0;
		hash1 = get_hash1(hash1 , s[i][0]);
		hash2 = get_hash2(hash2 , s[i][0]);
		int pre = cnt_r[{hash1 , hash2}];
		int prer = r[{hash1 , hash2}];
		int t = res - pre;//字符串结尾与当前字符串开头不一样的个数
		LL ss = num - (prer);
		num -= ss;
		res -= t;
		ans += len * t + ss;
		int f = 1;
		for(int j = 0 ; j < len - 1; j ++){
			LL H1 = get_hash1(hash1 , s[i][j + 1]);
			LL H2 = get_hash2(hash2 , s[i][j + 1]);
			int npre;
			int nprer;
			if(!cnt_r.count({H1 , H2})){
				f = 0;
				npre = 0;
				nprer = 0;
			}
			else{
				npre = cnt_r[{H1 , H2}];
				nprer = r[{H1 , H2}];				
			}
			int t = pre - npre;
			LL ss = num - (nprer);
			ans += (len - j - 1) * t + ss - t * (j + 1);
			num -= ss;
			res -= t;
			if(!f)
			break;
			hash1 = H1;
			hash2 = H2;
			pre = npre;
			prer = nprer;
		}
		if(f)
		ans += r[{hash1 , hash2}] - cnt_r[{hash1,hash2}] * len;
	}
	cout << ans << 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;
}

    傻瓜版本十分复杂,过程中我们会发现:要求不同字符串的总和非常困难,但是相反,对于相同字符串的统计非常简单,直接用map即可。因此考虑正难则反,先假设不考虑删字母的情况,然后去逐一删去相同字符。

// Problem: E. Collapsing Strings
// Contest: Codeforces - Educational Codeforces Round 159 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1902/problem/E
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#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;
const int M1 = 1e9 + 7;
const int B1 = 29;
const int M2 = 1e15 + 7;
const int B2 = 31;
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;
	}
}
LL get_hash1(LL pre , char c) {
  return (pre * B1 + (LL)(c - 'a' + 1)) % M1;
}
LL get_hash2(LL pre , char c){
  return (pre * B2 + (LL)(c - 'a' + 1)) % M2;	
}
map<pair<int,int>,int>cnt_r , r;
void solve() 
{
	cin >> n;
	string s[n + 5];
	int tot = 0;
	for(int i = 1 ; i <= n ; i ++)
		cin >> s[i];
	for(int i = 1 ; i <= n ; i ++){
		int len = s[i].size();
		tot += len;
		LL hash1 = 0;
		LL hash2 = 0;
		for(int j = len - 1 ; j >= 0 ; j --){
			hash1 = get_hash1(hash1 , s[i][j]);
			hash2 = get_hash2(hash2 , s[i][j]);
			cnt_r[{hash1 , hash2}]++;
		}
	}
	LL ans = n * 2 *  tot;
	for(int i = 1 ; i <= n ; i ++){
		int len = s[i].size();
		LL hash1 = 0;
		LL hash2 = 0;
		for(int j = 0 ; j < len; j ++){
			hash1 = get_hash1(hash1 , s[i][j]);
			hash2 = get_hash2(hash2 , s[i][j]);
			if(cnt_r.count({hash1 , hash2})){
		//		cout << cnt_r[{hash1 , hash2}] << endl;
				ans -= 2 * cnt_r[{hash1 , hash2}];
			}
			else{
				break;
			}
		}
	}
	cout << ans << 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;
}

发现只需要统计后缀的数量即可,再进一步可以用字典树来维护数量。

F - Trees and XOR Queries Again 

       题意:给你一棵由 n 个顶点组成的树。每个顶点上都写有一个整数;第 i 个顶点上写有整数 ai。您必须处理 q个查询。第 i 个查询由三个整数 xi 、 yi 和 ki 组成。对于这个查询,您必须回答是否有可能选择一个顶点集合 v1,v2,…,vm(可能是空),使得:

  • 每个顶点 vj都在 xi 和 yi之间的简单路径上(也可以使用端点);
  • a_{v1}\oplus a_{v2} \oplus a_{v3} .... \oplus a_{vm} = k_{i},其中 ⊕ 表示位向 XOR 运算符。

 思路:对于一段序列中任选若干数的异或和是否为某个数,可以用线性基来求解。因此考虑对树上每个点创建一个线性基。一个节点的线性基由其到根节点路径上所有点构成。这个操作可以由一遍DFS然后向下传递线性基完成。接下来考虑如何去解决问题:对于一个询问x , y 而言,两者简单路径上的线性基由 lca(x , y) - > x 的线性基与lca(x,y)->y 的线性基相合并组成。现在已知根到该点的线性基,考虑如何去知晓某个祖先到该点的线性基。这里用了加入时间戳(深度戳)的思想,记录线性基上面每一位的最深深度,然后如果深度更深的点也能够组成该位,那么就替换掉。这样就能够确定线性基上的每一位是由哪个深度的节点组成的。即能够判断线性基上的某一位是否在lca(x,y)->x的路径上。

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

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

相关文章

shopee主营店铺链接怎么填,shopee店铺url在哪里找——站斧浏览器

要设置Shopee主营店铺链接&#xff0c;在设置页面中填写自己想要推广的其他店铺的链接地址&#xff0c;并进行测试和提交审核。通过设置主营店铺链接&#xff0c;卖家可以增加销售量和曝光率。 shopee主营店铺链接怎么填&#xff1f; Shopee主营店铺链接是指卖家在Shopee平台…

[ISCTF 2023]——Web、Misc较全详细Writeup、Re、Crypto部分Writeup

前言 由于懒我直接把上交的wp稍加修改拉上来了&#xff0c;凑活看 文章目录 前言Pwntest_ncnc_shell ReverseCreakmeEasyRebabyReeasy_z3mix_reeasy_flower_tea Webwhere_is_the_flag圣杯战争!!!绕进你的心里easy_websitewafrez_ini1z_Ssqldouble_picklewebincludefuzz!恐怖G…

拼多多股价为什么可以创下两年新高并一举超越阿里巴巴?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 拼多多再次证明了它是全球电商领域中不可忽视的力量 过去两年&#xff0c;由于某些众所周知的原因&#xff0c;很多中概股的股价都很疲软&#xff0c;甚至半死不活的&#xff0c;很多投资中概股的朋友也一直承受着很大的…

交通强国添力量 无人机巡航为何备受期待?

在高速建设交通强国的过程中&#xff0c;交通运输部海事局计划完善“陆海空天”一体化水上交通运输安全保障体系。无人机巡航系统将在提升海事船舶监管和水上搜救能力方面发挥关键作用&#xff0c;以构建更为全面的监管体系。尽管已初步建立了海事监管体系&#xff0c;但仍存在…

APP逆向工具环境安装

环境安装及配置&#xff1a; 1.JDK安装及配置链接&#xff1a;https://pan.baidu.com/s/146I4vDJdz8YeR0OEqLS8xw 提取码&#xff1a;7h00 2.SDK环境配置链接&#xff1a;https://pan.baidu.com/s/1A8rwqyw8Nn7p93Axqpll3A 提取码&#xff1a;cwv43.NDK环境配置链接&#xff1…

深度学习在工业自动化领域的简析

原创 | 文 BFT机器人 在机器视觉和工业自动化领域&#xff0c;很少有比“深度学习”更引人注目的词汇。大约七年前左右&#xff0c;这个词随着一波庞大的营销炒作而出现&#xff0c;附带着“革命性”和“颠覆性”等形容词。几年后&#xff0c;尘埃落定&#xff0c;深度学习在自…

销售人员一定要知道的6种获取电话号码的方法

对于销售来说&#xff0c;电话销售是必须要知道的销售方法&#xff0c;也是销售生涯中的必经之路。最开始我们并不清楚这么电话是从哪里来的&#xff0c;也不清楚是通过哪些方法渠道获取。那么今天就来分享给各位销售人员获取客户电话号码的方法。 1.打印自己的名片&#xff0…

[ 蓝桥杯Web真题 ]-视频弹幕

目录 介绍 准备 目标 效果 规定 思路 解答参考 扩展功能 介绍 弹幕指直接显现在视频上的评论&#xff0c;可以以滚动、停留甚至更多动作特效方式出现在视频上&#xff0c;是观看视频的人发送的简短评论。通过发送弹幕可以给观众一种“实时互动”的错觉&#xff0c;弹幕…

大数据 - MapReduce:从原理到实战的全面指南

本文深入探讨了MapReduce的各个方面&#xff0c;从基础概念和工作原理到编程模型和实际应用场景&#xff0c;最后专注于性能优化的最佳实践。 一、引言 1.1 数据的价值与挑战 在信息爆炸的时代&#xff0c;数据被视为新的石油。每天都有数以百万计的数据被生成、存储和处理&…

GUI库pyqt5的中线程通信问题

背景 在使用pyqt5编写GUI程序时&#xff0c;我们可能有时会需要使用多线程来处理问题&#xff0c;这就可能会涉及到线程之间相互通信的问题。比如接下来要解决的进度条问题。 解决思路 我们可以通过pyqt5的信号与槽机制来完成线程之间的通信。 代码编写 # Copyright (C) 2…

如何写好亚马逊listing页面?助你提高转化率!(下)

一、产品长描述 产品长描述位于listing页面的中部&#xff0c;是产品信息的重要组成部分。卖家可以描述产品的特点、功能和使用方法&#xff0c;有助于解决买家可能存在的疑虑&#xff0c;从而增加销售、提高转化率和品牌形象。 在亚马逊上&#xff0c;有两种长描述方式——有…

Canvas鼠标画线

鼠标按下开始画线,鼠标移动根据鼠标的轨迹去画,鼠标抬起停止画线 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

[SHCTF 2023]——week1-week3 Web方向详细Writeup

Week1 babyRCE 源码如下 <?php$rce $_GET[rce]; if (isset($rce)) {if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\|\%|\>|\<|\|\"/i", $rce)) {system($rce);}else {echo "hhhhhhacker!!!".&…

antv x6填坑指南: 部分节点拖拽和操作撤销重做不生效问题、使用Stencil过滤时过滤后分组的显示高度无法根据过滤节点自适应问题

问题1. 部分分组中节点拖拽添加或操作后撤销重做操作不生效。 前提&#xff1a;使用Stencil插件&#xff0c;创建画布侧边栏的 UI 组件&#xff0c;同时使用其分组、折叠能力。分组包含固定分组、后台接口获取的动态分组和组件。 //固定分组初始化 initStencil (graph, stenc…

C语言——深入理解指针(5)

目录 1. sizeof和strlen的对比 1.1 sizeof 1.2 strlen 1.3 sizeof和strlen 的对比 2. 数据和指针题解析 2.1 一维数组 2.2 字符数组 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2,6 2.3 二维数组 3. 指针运算题解析 3.1 例1 3.2 例2 3.3 例3 3.4 例4 3.5 例5 3.6 例…

DSShop移动商城网店系统 反序列化RCE漏洞复现

0x01 产品简介 DSShop是长沙德尚网络科技有限公司推出的一款单店铺移动商城网店系统,能够帮助企业和个人快速构建手机移动商城,并减少二次开发带来的成本。 以其丰富的营销功能,精细化的用户运营,解决电商引流、推广难题,帮助企业打造生态级B2C盈利模式商业平台。完备的电商…

EasyRecovery2024免费永久版手机数据恢复软件

EasyRecovery2024是一款操作安全、用户可自主操作的数据恢复方案&#xff0c;它支持从各种各样的存储介质恢复删除或者丢失的文件&#xff0c;其支持的媒体介质包括&#xff1a;硬盘驱动器、光驱、闪存、硬盘、光盘、U盘/移动硬盘、数码相机、手机以及其它多媒体移动设备。能恢…

将.tiff格式图片转换为可视化的png,jpg,bmp等格式(附代码)

目前常用的.tiff格式图片转png格式图片&#xff0c;搜了一下&#xff0c;多数都是第三方平台直接转换&#xff0c;需要米&#xff0c;其实大可不必&#xff0c;自己撸代码就可以直接转换。 TIFF&#xff08;Tagged Image File Format&#xff09;是一种灵活的位图格式&#xf…

探索人工智能领域——每日20个名词详解【day7】

目录 前言 正文 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转载&#xff0c;请事先与我联系以…

YITH Product Countdown Premium电商商城产品倒计时高级版插件

点击阅读YITH Product Countdown Premium电商商城产品倒计时高级版插件原文 YITH Product Countdown Premium电商商城产品倒计时高级版插件的作用通过显示优惠的剩余时间或特定产品的可用数量的倒计时来促进销售。 您如何从中受益&#xff1a; 您可以利用稀缺性原则来增加转…