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

比赛记录:Codeforces Global Round 25 A~E (猜猜题场)

传送门:CF

[前题提要]:其实这场打的不是很好.A题一个sb错误看不出来,50min后才过,B题上来就Wa了一发,C题用了没必要的线段树,D题刚开始被60诈骗,一直在想按位考虑.幸好赛时猜出了E,然后又猜出来D,本来掉大分变成上大分…但是这场前几题大都是猜猜题,所以本来不想写题解的.但是一想到对于这种结论题,肯定没多少人解释证明结论,所以还是逼自己一把来写这玩意了…


A. Dual Trigger

显然1的个数是奇数的时候是不合法的.那么现在只需要判断1的个数是偶数的时候.考虑只有两个1的时候,并且这两个1是相邻的时候是不满足要求的,其他偶数情况都是合法的.
考虑证明:对于只有两个1并且不相邻的情况,我们只要选择这两个1操作一次即可.对于 k k k个1,且 k k k是偶数的情况,我们每次都选择相对位置在第 i i i和第 ( i + k / 2 ) (i+k/2) (i+k/2)位置的1,不难发现这种构造方式是合法的.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 1000000
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int main() {int T=read();while(T--) {int n=read();string s;cin>>s;vector<int>v;for(int i=0;i<s.length();i++) {if(s[i]=='1') {v.push_back(i);}}if((int)v.size()&1) {cout<<"NO"<<endl;}else {int cnt=0;for(int i=0;i<s.length();i++) {if(s[i]=='1') {cnt++;while(i+1<s.length()&&s[i+1]=='1') {i++;}}}if(cnt==1&&(int)v.size()==2) {cout<<"NO"<<endl;}else {cout<<"YES"<<endl;}}}return 0;
}

B. Battle Cows

感觉做法应该有很多.我的做法是考虑枚举每一个位置作为与 k k k交换的位置,然后求得每种情况的贡献最后取一个 m a x max max.
那么显然的,当我们枚举到第 i i i个奶牛,如果 i i i之前的所有奶牛的值比 k k k大,那此时已经被必要继续枚举下去了,因为对于 i i i以及 i i i之后的所有位置来说,无论我们怎么交换,最后的贡献都是0.
然后对于交换的位置我们考虑它的贡献是什么,对于前缀的贡献显然是1,因为前面都比它要小(对吗?不对,此时需要进行分类讨论,如果交换到的位置是第一个,那么此时前缀没有贡献,并且如果当前的a[i]>a[k],k<i,的时候,你会发现所有无前缀贡献也无后缀贡献,所以此处需要进行分类讨论).那么对于后缀的贡献来说,显然是交换后(也就是当前位置是 i i i)后续第一个比它大的数的位置.考虑如何维护这个,只要提前用 s e t set set记录所有比k大的数位置,如果当前的 i i i在其中,先将其删除,求完贡献之后再插入即可.如果不在直接查即可.感觉凭空说比较麻烦,直接看代码理解或许会更好

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 1000000
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int a[maxn];int lmax[maxn];
int main() {int T=read();while(T--) {int n=read();int k=read();for(int i=1;i<=n;i++) {a[i]=read();lmax[i]=max(lmax[i-1],a[i]);}set<int>st;for(int i=1;i<=n;i++) {if(a[i]>a[k]) {st.insert(i);	}}st.insert(n+1);//注意边界问题int ans=0;for(int i=1;i<=n;i++) {if(lmax[i-1]>a[k]) {break;}if(a[i]>a[k]) {if(k<i) continue;st.erase(i);st.insert(k);auto pos=st.lower_bound(i);if(i==1) {ans=max(ans,*pos-i-1);}else {ans=max(ans,1+*pos-i-1);}st.erase(k);st.insert(i);}else {auto pos=st.lower_bound(i);if(i==1) {ans=max(ans,*pos-i-1);}else {ans=max(ans,1+*pos-i-1);}}}cout<<ans<<endl; }return 0;
}

C. Ticket Hoarding

赛时没有细想,想了个自以为很正确的贪心过了样例就交了.赛后发现这道题证明起来还是挺麻烦的.

先讲做法,就是贪心地取便宜的东西,然后尽量的将其拿满 m m m个(显然最后一次是拿k%m),考虑如何维护这个东西,我是拿线段树进行维护的.假设你当前枚举到的是第 i i i个,那么这个东西现在的单价上升的数值等同于之前拿的 i d id id在其之前的个数.然后你拿了这个东西,同样会影响之前拿的所有 i d id id在其之后的东西.具体关系很好推,就不赘述了(不会看具体代码也应该能理解).那么现在我们的问题就是如何维护 i d id id在当前之前的东西的个数以及在当前之后的东西的个数,这个可以使用权值线段树或者权值树状数组维护.

那么为什么上述贪心是正确的呢.下面来简单证明一下:
考虑设数组 a a a表示 1 1 1~ n n n每一个物品买的个数;数组 b b b表示每一个的原始单价.那么对于当前的第 i i i个物品,此时它的真实购买价格就是 ∑ j = 1 i − 1 a j + b i \sum_{j=1}^{i-1}{a_j}+b_i j=1i1aj+bi,那么此时的总价格就是 ∑ i = 1 n ( ( ∑ j = 1 i − 1 a j + b i ) ∗ a i ) \sum_{i=1}^{n}((\sum_{j=1}^{i-1}{a_j}+b_i)*a_i) i=1n((j=1i1aj+bi)ai),化简一下不难发现就是下面这个东西 ∑ i = 1 n a i b i + ∑ a i a j [ i ≠ j ] \sum_{i=1}^{n}a_ib_i+\sum a_ia_j[{i\neq j}] i=1naibi+aiaj[i=j],发现后面那个式子只跟a有关,所以我们考虑对于固定数字的a数组来说,我们可以随意交换其位置,对于后面答案是没有影响的.但是显然的对于前面的式子来说,我们将a中大的数与b中小的数搭配才是最优的,那么显然的,我们此时假设b数组是单调增的,我们应该尽量的将前的每一个位置都填满对于前面的式子来说贡献才是最小的.也就是a数组此时的值应该为 [ m , m . . . , k % m , . . . , 0 , 0 , 0 ] [m,m...,k\%m,...,0,0,0] [m,m...,k%m,...,0,0,0].但是这个只是对于前面的式子来说是最优的,我们后面的式子该怎么办呢.其实可以证明上述这种贪心策略同样适用于后面的式子.

对于 ∑ a i a j [ i ≠ j ] \sum a_ia_j[{i\neq j}] aiaj[i=j],我们将其换个方式表示 ( ∑ i = 1 n a i ) 2 − ∑ i = 1 n a i 2 (\sum_{i=1}^{n}a_i)^2-\sum_{i=1}^na_{i}^2 (i=1nai)2i=1nai2,不难发现 ∑ a i \sum{a_i} ai是固定的.所以就是后面那个式子尽量的取最大.对于平方和来说,什么时候取最大呢,显然是最不平均的时候(这个应该是可以使用某个基础的不等式证明的,太久没学数学了,忘了,就不证明了),而我们上述的分法刚好是最不平均的分法.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 1000000
#define int long long
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
struct Segment_tree{int l,r,mn,mx,sum;
}tree[maxn<<2];
void pushup(int rt) {tree[rt].mn=min(tree[ls].mn,tree[rs].mn);tree[rt].mx=max(tree[ls].mx,tree[rs].mx);tree[rt].sum=tree[ls].sum+tree[rs].sum;
}
void build(int l,int r,int rt) {tree[rt].l=l;tree[rt].r=r;tree[rt].mn=int_INF;tree[rt].mx=-int_INF;tree[rt].sum=0;if(l==r) {return ;}int mid=(l+r)>>1;build(lson);build(rson);pushup(rt);
}
void update(int pos,int rt,int val) {if(tree[rt].l==pos&&tree[rt].r==pos) {tree[rt].mn=tree[rt].mx=val;tree[rt].sum+=val;return ;}int mid=(tree[rt].l+tree[rt].r)>>1;if(pos<=mid) update(pos,ls,val);else update(pos,rs,val);pushup(rt);
} 
int query_min(int l,int r,int rt) {if(tree[rt].l==l&&tree[rt].r==r) {return tree[rt].mn;}int mid=(tree[rt].l+tree[rt].r)>>1;if(r<=mid) return query_min(l,r,ls);else if(l>mid) return query_min(l,r,rs);else return min(query_min(l,mid,ls),query_min(mid+1,r,rs));
}
int query_max(int l,int r,int rt) {if(tree[rt].l==l&&tree[rt].r==r) {return tree[rt].mx;}int mid=(tree[rt].l+tree[rt].r)>>1;if(r<=mid) return query_max(l,r,ls);else if(l>mid) return query_max(l,r,rs);else return max(query_max(l,mid,ls),query_max(mid+1,r,rs));
}
int query(int l,int r,int rt) {if(tree[rt].l==l&&tree[rt].r==r) {return tree[rt].sum;}int mid=(tree[rt].l+tree[rt].r)>>1;if(r<=mid) return query(l,r,ls);else if(l>mid) return query(l,r,rs);else return query(l,mid,ls)+query(mid+1,r,rs);
}
struct Node{int val,id;bool operator < (const Node &rhs) const {return val<rhs.val;}
}node[maxn];
signed main() {int T=read();while(T--) {int n=read();int m=read();int k=read();build(1,n,1);for(int i=1;i<=n;i++) {node[i].val=read();node[i].id=i;}sort(node+1,node+n+1);int ans=0;for(int i=1;i<=n;i++) {if(k>=m) {int num=query(node[i].id,n,1);int num2=query(1,node[i].id,1);ans+=(node[i].val+m*num2)*m+num*m*m;k-=m;update(node[i].id,1,1);}else {int num=query(node[i].id,n,1);int num2=query(1,node[i].id,1);ans+=(node[i].val+m*num2)*k+num*m*k;break;}}cout<<ans<<endl;}return 0;
}

D. Buying Jewels

猜猜题.经典先猜后证
显然我们会发现当n<k的时候我们的答案是NO,因为我们至少也要花1换取1个东西.
当n=k时候,显然只要设置金额是1即可
当n>k的时候,显然此时1号摊位不能设置1,然后我们经过某种神奇的思考(或者手模几个样例找找规律).例如20,9,此时的答案是12,1,就会发现我们可以设置1号摊位为 n − k + 1 n-k+1 nk+1,然后二号摊位为 1 1 1,这样似乎就可以了?因为我们发现只要我们给2号摊位剩下k-1块钱,然后1号摊位用掉n-k+1块钱并获得1贡献即可.但是上述这种方法是有范围限制的.我们发现当 n / ( n − k + 1 ) > 1 n/(n-k+1)>1 n/(nk+1)>1的时候,就会出问题,例如8,4.然后就会想这个时候该怎么构造呢?其实这个时候的答案就是NO.考虑简单证明一下这个.
因为我们此时的1号摊位不能是1了,那么此时我们能获得的最大物品数显然是 ⌊ n 2 ⌋ + n % 2 \lfloor \frac{n}{2}\rfloor+n\%2 2n+n%2,考虑 n / ( n − k + 1 ) > 1 n/(n-k+1)>1 n/(nk+1)>1是什么情况,因为是整数,所以我们可以将其改写为 n ≥ 2 ∗ ( n − k + 1 ) n \geq 2*(n-k+1) n2(nk+1),化简一下就会发现 2 ∗ k − 2 ≥ n 2*k-2\geq n 2k2n,也就是 k ≥ ⌈ n + 2 2 ⌉ k\geq\lceil\frac{n+2}{2}\rceil k2n+2,然后我们会发现什么,我们会发现此时的 ⌈ n + 2 2 ⌉ > ⌊ n 2 ⌋ + n % 2 \lceil\frac{n+2}{2}\rceil>\lfloor \frac{n}{2}\rfloor+n\%2 2n+2>2n+n%2(这个可以通过分类n的奇偶性证明).这说明了什么,说明了这种情况下我们获得最大物品数都不及k,所以必然不可能得到一个可行解.所以此时的答案必然是NO

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 1000000
#define int long long
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
signed main() {int T=read();while(T--) {int n=read();int k=read();if(n%k==0) {cout<<"YES"<<endl;cout<<1<<endl;cout<<n/k<<endl;continue;}if(n>k) {if(n/(n-k+1)==1) {cout<<"YES"<<endl;cout<<2<<endl;cout<<n-k+1<<" "<<1<<endl;continue;}}cout<<"NO"<<endl;}return 0;
}

E. No Palindromes

猜猜题.经典先猜后证
赛时想了一下,直觉告诉我能分成2个以上的非回文串的难度应该是大于分成两个非回文串的难度的.所以当时直接钦定只能分成两个非回文串,然后使用 M a n a c h e r Manacher Manacher判断回文串.没想到真给我过了,当时很怕被FST,结果正解还真是这个…
考虑证明下面这个结论:如果一个字符串能分成若干个非回文子串,那么一定可以通过分成两段的方式来满足该题意.
首先我们会发现如果一个字符串S,它本身就是非回文串,那么我们直接输出它即可.那么下面的讨论将基于S是回文串开始讨论.

对于一个非回文串来说,我们首先应该想到如果一个子串的两个端点不同,那么它显然就是一个非回文串那么假设我们存在 S ( 1 , p o s ) S(1,pos) S(1,pos)满足 S [ 1 ] ! = S [ p o s ] S[1]!=S[pos] S[1]!=S[pos],那么只要 S [ p o s + 1 , n ] S[pos+1,n] S[pos+1,n]不是一个回文串,我们就可以直接把上述两个子串当做我们此时的答案.并且我们会发现此时满足分成两个子串的结论

那么假设不存在上述这种情况该怎么办呢.考虑不存在上述情况,我们的S会是什么形式.
首先可能我们的S只有一个字符,此时这种情况是不能分成两个非回文子串的.但是此时确确实实应该是NO.所以与上述结论不矛盾.

那么此时我们的S有多个字符,我们会发现S一定是AbAbAb…AbAbA这种形式.其中A是若干个相同的字符,b是一个字符.我们考虑从后往前枚举,那么最后一个b显然是一个位置与开头不同的端点,所以此时最后一个A一定是多干个相同的字符(我们此时假设所有的A我们不知道他们是相同的,b也不知道是相同的).我们继续枚举,到倒数第二个b,我们会发现,此时需要AbA需要是一个回文串,因为A中的字符和b不同,所以倒数第二个A一定和最后一个A相同.所以倒数第二个A也是若干个相同字符.类似的枚举到倒数第三个b,我们会发现后两个b一定相同.并且因为S是一个回文串,我们最后能得到最后一个A和开头的A也是相同的,那么我们可以根据不完全归纳法得出上述这种形式是正确的.

很好,那么此时我们考虑根据A的字符的个数来进行枚举.不难发现,当A中的字符个数是1个时,此时的A是ababababa这种形式,我们无法将其分为两个非回文子串,但是我们此时也会发现该字符本就无法分成多个非回文子串;考虑当A中的字符个数大于1时(假设有t个),我们假设a是A的单个字符,我们只要将其分为 A b a Aba Aba以及 a a a . . . a a a b A b A aaa...aaabAbA aaa...aaabAbA的两个子串即可.其中第二子串的开头是 t − 1 t-1 t1个a.第一个子串的结尾是1个a.我们会发现这种构造必然是两个非回文子串,因为两个子串开头和结尾的a的个数不同.

至此,证毕.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 1000000
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
class Manacher {
public:Manacher(const std::string &s) {construct(s);};void getLongestPalindromeString(int &position, int &length) {// 找到最长的回文子串的位置与长度。position = -1, length = -1;for(int i = 0; i < len.size(); i++) {if(len[i] > length) {length = len[i];position = i;}}// 映射到原始字符串中的位置。position = position/2 - length/4;length = length/2;return;}// s[L:R] 是否是回文的bool isPalindrome(int L, int R) {L = L*2 + 1;R = R*2 + 1;int mid = (L+R)/2;if(0 <= mid && mid < len.size() && R-L+1 <= len[mid]) {return true;}return false;}
private:vector<int> len;void construct(const std::string &s) {vector<char> vec;// 用 0 作为分隔符vec.resize(s.size()*2+1);for(int i = 0; i < s.size(); i++) {vec[i<<1|1] = s[i];}int L = 0, R = -1;len.resize(vec.size());for(int i = 0, n = vec.size(); i < n; i++) {if(i <= R) { // 被覆盖了,尝试加速len[i] = min((R-i)*2+1, len[L+R-i]);} else { // 未被覆盖,那就没办法加速了,从 1 开始。len[i] = 1;}// 尝试继续探测int l = i - len[i]/2 - 1;int r = i + len[i]/2 + 1;while(0 <= l && r < vec.size() && vec[l] == vec[r]) {--l;++r;}// 更新len[i] = r-l-1;if(r > R) {L = l+1;R = r-1;}}}
};
int main() {cin.sync_with_stdio(false);cin.tie();cout.tie();int T;cin>>T;while(T--) {string s;cin>>s;int n=s.length();s=" "+s;Manacher Ma(s);if(!Ma.isPalindrome(1,n)) {cout<<"YES"<<endl;cout<<1<<endl;cout<<s.substr(1)<<endl;continue;}int flag=0;string ans1="",ans2="";for(int i=1;i<=n;i++) {if(!Ma.isPalindrome(1,i)&&!Ma.isPalindrome(i+1,n)) {ans1=s.substr(1,i);ans2=s.substr(i+1);flag=1;break;}}if(flag) {cout<<"YES"<<endl;cout<<2<<endl;cout<<ans1<<" "<<ans2<<endl;}else {cout<<"NO"<<endl;}}return 0;
}

相关文章:

比赛记录:Codeforces Global Round 25 A~E (猜猜题场)

传送门:CF [前题提要]:其实这场打的不是很好.A题一个sb错误看不出来,50min后才过,B题上来就Wa了一发,C题用了没必要的线段树,D题刚开始被60诈骗,一直在想按位考虑.幸好赛时猜出了E,然后又猜出来D,本来掉大分变成上大分…但是这场前几题大都是猜猜题,所以本来不想写题解的.但是…...

Windows系统安装OpenSSH结合VS Code远程ssh连接Ubuntu【内网穿透】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-AwzyR2lkHKjD9HYl {font-family:"trebuchet ms",verdana,arial,sans-serif;f…...

Svg Flow Editor 原生svg流程图编辑器(五)

系列文章 Svg Flow Editor 原生svg流程图编辑器&#xff08;一&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;二&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;三&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;四&#xf…...

数字晶体管选型参数,结构原理,工艺与注意问题总结

🏡《总目录》 目录 1,概述2,工作原理2.1,AND 门(与门),2.2,OR 门(或门):2.3,NOT 门(非门):2.4,NAND 门(与非门):2.5,NOR 门(或非门):3,结构特点3.1,TTL(Transistor-Transistor Logic)晶体管...

lua学习笔记9(字典的学习)

print("********************字典的学习***********************") a{["凌少"]"傻逼",["我"]"天才",["age"]24,["daihao"]114514,["8848"]20000} --访问单个变量 print(a["凌少"])…...

第六篇: 3.5 性能效果 (Performance)- IAB/MRC及《增强现实广告效果测量指南1.0》

​​​​​​​ 翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇 广告效果测量定义和其他矩阵之- 3.1 广告印象&#xff08;AD Impression&#xff09;第三篇 广告效果测量定义和其他矩阵之- 3.2 可见性 &#xff08;Viewability…...

mysql学习笔记NO.2

Java操作数据库、表笔记 1.创建数据库 创建数据库的步骤如下&#xff1a; 导入所需的Java数据库连接驱动&#xff08;如MySQL驱动&#xff09;。使用JDBC连接到数据库。执行SQL语句创建数据库。 import java.sql.Connection; import java.sql.DriverManager; import java.…...

C++11:lambda表达式 包装器

C11&#xff1a;lambda表达式 & 包装器 lambda表达式包装器functionbind lambda表达式 在C98中&#xff0c;如果想对一个结构体数组使用sort排序&#xff0c;那么我们就需要自己些仿函数。 比如以下结构体&#xff1a; struct Goods {string _name; // 名字double _pric…...

Node.js HTTP/2 CONTINUATION 拒绝服务漏洞(CVE-2024-27983)

Node.js 是开源、跨平台的 JavaScript 运行时环境。CONTINUATION泛洪攻击被发现存在于多个HTTP/2协议实现中。 在受影响版本中&#xff0c;由于Node.js针对HTTP/2协议的实现不当&#xff0c;未正确处理多个CONTINUATION帧的情况&#xff0c;在node::http2::Http2Session::~Htt…...

YOLOV8 + 双目测距

YOLOV8 双目测距 1. 环境配置2. 测距流程和原理2.1 测距流程2.2 测距原理 3. 代码部分解析3.1 相机参数stereoconfig.py3.2 测距部分3.3 主代码yolov8-stereo.py 4. 实验结果4.1 测距4.2 测距跟踪4.3 测距跟踪分割4.4 视频展示 相关文章 1. YOLOv5双目测距&#xff08;python&…...

前端:SVG绘制流程图

效果 代码 html代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>SVG流程图示例</title><style>/* CSS 样式 */</style><script src"js/index.js"></script…...

【Linux系列】如何确定当前运行的是 RHEL 9 还是 RHEL 8?

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

vscode开发java的插件和配置

推荐插件 .vscode/extensions.json {"recommendations": ["redhat.fabric8-analytics","ms-azuretools.vscode-docker","vscjava.vscode-java-pack","eamodio.gitlens","obkoro1.korofileheader","redhat.j…...

Mysql启动报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止

Mysql启动报错&#xff1a;本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止 文章目录 Mysql启动报错&#xff1a;本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止1. 备份mysql的data文件夹2. 重新构建 Wind…...

WPF程序添加托盘图标

程序添加托盘图标 UI层 //添加handycontrol的引用xmlns:hc"https://handyorg.github.io/handycontrol"//添加NotifyIcon图标 实现单击 双击 二级菜单点击功能<hc:NotifyIconText"通知"Token"Info"><hc:NotifyIcon.ContextMenu><…...

工业4g路由器联网后迅速掉线是什么原因?

工业4G路由器连接上网后迅速掉线可能是由多种因素造成的。以下是一些建议的检查和解决步骤&#xff1a; 1、信号问题&#xff1a; 信号强度&#xff1a;检查工业路由器信号强度指示灯&#xff0c;如果信号弱&#xff0c;尝试移动路由器位置或添加外部天线来增强信号。 网络拥…...

腾讯云4核8G服务器12M带宽646元1年零3个月,4C8G使用场景说明

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…...

java - 读取配置文件

文章目录 1. properties2. XML(1) dom4j(2) XPath 1. properties // 创建properties对象用于读取properties文件Properties properties new Properties();properties.load(new FileReader("src/main/resources/test.properties"));String name properties.getPrope…...

Ubuntu22.04平台编译完美解决问题“error: GLSL 4.5 is not supported.”【GLSL(OpenGL着色器语言)】

GLSL介绍 GLSL&#xff08;OpenGL着色器语言&#xff09;是用于编写OpenGL着色器程序的语言。GLSL 4.5 是 GLSL 的一个版本&#xff0c;引入了许多新的特性和改进&#xff0c;旨在提高着色器编程的灵活性和性能。GLSL 4.5 工具通常是用于编写、调试和优化 GLSL 4.5 着色器代码…...

数据结构之搜索二叉树与关联性容器初接触

一、搜索二叉树 1>、前言 1. map和set特性需要先铺垫二叉搜索树&#xff0c;而二叉搜索树也是一种树形结构 2. 二叉搜索树的特性了解&#xff0c;有助于更好的理解map和set的特性。 2>、概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者…...

C语言整数和小数的存储

1.整数在内存中的存储 计算机使用二进制进行存储、运算&#xff0c;整数在内存中存储使用的是二进制补码 1.1原码、反码、补码 整数的2进制表⽰⽅法有三种&#xff0c;即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&am…...

Games101Homework【6】Acceleration structure(Including framework analysis)

Code Analysis&#xff1a; friend&#xff1a; C中友元&#xff08;友元函数和友元类&#xff09;的用法和功能_friend class a<b>-CSDN博客 [C&#xff1a;不如Coding]&#xff08;11&#xff09;&#xff1a;友元函数与友元类_哔哩哔哩_bilibili Here is a simple…...

应用运维文档1

统一nginx接入配置指南 Nginx配置规范 1:不带微服务编码上下文至后端,以metadata-ui为例 location段配置信息,location配置中维护微服务编码上下文信息 # app_code: metadata-ui 流水线名称: metadata-ui location ~ ^/metadata-ui/(?P.*) {set $app_code metadata-ui;p…...

手机如何在线制作gif?轻松一键在线操作

现在大家都喜欢使用手机来拍摄记录有趣的事物&#xff0c;但是时间长了手机里的视频越来越多导致手机存储空间不够了&#xff0c;这些视频又不想删除时应该怎么办呢&#xff1f;这个很简单&#xff0c;下面就给大家分享一款不用下载手机就能操作的视频转gif网站-GIF中文网&…...

ChatGPT 在做什么,为什么有效?

原文&#xff1a;What Is ChatGPT Doing … and Why Does It Work? 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 序言 这本简短的书试图从第一原理解释 ChatGPT 是如何工作的。在某种程度上&#xff0c;这是关于技术的故事。但它也是关于科学的故事。以及关于哲学…...

Linux实验2 初步使用shell

一&#xff1a;实验目的 学习Linux下的文件系统结构&#xff0c;了解最基本的Linux下的shell命令操作&#xff0c;例如ls, cd, cat等各种指令操作。 学习vim编辑器的使用方式&#xff0c;学习如何使用ssh连接远程服务器。 二&#xff1a;实验内容 1&#xff0e;请指出下面每…...

甘特图/横道图制作技巧 - 任务组

在甘特图中通过合理的任务分组可以让项目更加清晰&#xff0c;修改也更方便。 列如下面的甘特图一眼不太容易看清楚整体的进度。或者需要把所有的任务整体的延迟或者提前只能这样一个一个的任务调整&#xff0c;就比较麻烦。 通过给任务分组&#xff0c;看这上面整体的进度就…...

Web题记

反序列化补充知识&#xff1a; private变量会被序列化为&#xff1a;\x00类名\x00变量名 protected变量会被序列化为: \x00\*\x00变量名 public变量会被序列化为&#xff1a;变量名web254 这个逻辑不难&#xff0c;自己刚看的时候还奇怪是不是自己哪里想错了&#xff0c;因为…...

学习java第三十六天

Spring 官网列出的 Spring 的 6 个特征: 核心技术 &#xff1a;依赖注入(DI)&#xff0c;AOP&#xff0c;事件(events)&#xff0c;资源&#xff0c;i18n&#xff0c;验证&#xff0c;数据绑定&#xff0c;类型转换&#xff0c;SpEL。 测试 &#xff1a;模拟对象&#xff0c;…...

0205矩阵分块法-矩阵及其运算-线性代数

文章目录 1 分块矩阵的定义2 分块矩阵的运算&#xff08;性质&#xff09;3 按列分块与按行分块 结语 1 分块矩阵的定义 将矩阵A用若干条纵线和横线分成许多个小矩阵&#xff0c;每一个小矩阵称为A的子快&#xff0c;以子块为元素的形式上的矩阵称为分块矩阵。 2 分块矩阵的运算…...

网站开发合同技术目标/成都网站建设seo

对于窗体的透明&#xff0c;一般来说&#xff0c;有三种方式&#xff1a; 1.通过Ps等工具制作一定透明度的图片&#xff0c;放在div或其他想要放置的trigger里面。以此实现透明的效果。 1 <html> 2   <body> 3     <div id"content">   4 …...

网站服务器有什么区别/人民网 疫情

其实你这个问题我平时上课的时候也有很多学生问过&#xff0c;看来很多人都对尺寸大小的设定存在疑惑&#xff0c;那就就你这个话题阐述一下吧&#xff01;首先想参赛的照片肯定不需要原图那么大&#xff0c;因为现在几乎都是电子评片&#xff0c;不需要打印实物照片&#xff0…...

wordpress无法连接ftp/开发网站的流程

简述&#xff1a; 开发过程中&#xff0c;有时候函数满足不了我们的需求&#xff0c;我们需要自己去定义函数使用。在spark中&#xff0c;有三种自定义函数&#xff0c;分别为UDF&#xff0c;UDAF&#xff0c;UDTF。 UDF&#xff1a;一对一 UDAF&#xff1a;多对一 UDTF&#…...

郑州网站建设知识分享/云seo关键词排名优化软件

Workday公开募股&#xff0c;OracleFusion也在积攒实力本文翻译&#xff1a;陶晶&#xff0c;李炯明 雇得易|深圳八爪网络科技有限公司这周Worday递交IPO申请S-1文件。同时&#xff0c;我们也了解了Oracle公司Fusion产品以及收购Taleo公司的具体情况。WORKDAY的进展情况Workday…...

微信公众号怎么做链接网站吗/微商软文范例

2019独角兽企业重金招聘Python工程师标准>>> 看到一篇关于程序员发展的博文&#xff0c;感觉很不错&#xff0c;转载一下。。。 原文是一个系列博文&#xff0c;原文出处&#xff1a;http://www.cnblogs.com/forfuture1978/archive/2010/05/13/1734162.html 技术路线…...

大理微网站建设/郑州网站建设

create方法 1.create方法可以对POST提交的数据进行处理&#xff08;通过表中的字段名称与表单提交的名称对应关系自动封装数据实例&#xff09;&#xff0c;例如user表中有一个字段名叫"username",如果表单中有一个<input name"username" value"小…...