文章目录

  • 第四章 高级数据结构
    • 4.1 并查集
      • 4.1.1 1250. 格子游戏
      • 4.1.2 1252. 搭配购买
      • 4.1.3 237. 程序自动分析
      • 4.1.4 239. 奇偶游戏
      • 4.1.5 238. 银河英雄传说
    • 4.2 树状数组
      • 4.2.1 241. 楼兰图腾
      • 4.2.2 242. 一个简单的整数问题
      • 4.2.3 243. 一个简单的整数问题2
      • 4.2.4 244. 谜一样的牛
    • 4.3 线段树
      • 4.3.1 1275. 最大数
      • 4.3.2 245. 你能回答这些问题吗
      • 4.3.3 246. 区间最大公约数
      • 4.3.4 243. 一个简单的整数问题2
      • 4.3.5 247. 亚特兰蒂斯
      • 4.3.6 1277. 维护序列
    • 4.4 可持久化数据结构
      • 4.4.1 256. 最大异或和
      • 4.4.2 255. 第K小数
    • 4.5 平衡树
      • 4.5.1 253. 普通平衡树
      • 4.5.2 265. 营业额统计
    • 4.6 AC自动机
      • 4.6.1 1282. 搜索关键词
      • 4.6.2 1285. 单词

第四章 高级数据结构

4.1 并查集

4.1.1 1250. 格子游戏

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=40010;int n,m;
int p[N];
int findP(int x)
{if(p[x]!=x) return p[x]=findP(p[x]);return p[x];
}
int main()
{cin>>n>>m;for(int i=0;i<=N;i++) p[i]=i;bool success=false;for(int i=0;i<m;i++){int x,y;char c;cin>>x>>y>>c;int a=(x-1)*n+y-1;int b=a;if(c=='R'){b++;}elseb+=n;int pa=findP(a),pb=findP(b);if(pa==pb){cout<<i+1<<endl;success=true;break;}elsep[pa]=pb;}if(!success)cout<<"draw"<<endl;return 0;
}

4.1.2 1252. 搭配购买

在这里插入图片描述

代码:

#include<bits/stdc++.h> //y总的using namespace std;const int N = 10010;int n, m, vol;
int v[N], w[N];
int p[N];
int f[N];int find(int x)
{if (p[x] != x) p[x] = find(p[x]);return p[x];
}int main()
{cin >> n >> m >> vol;for (int i = 1; i <= n; i ++ ) p[i] = i;for (int i = 1; i <= n; i ++ ) cin >> v[i] >> w[i];while (m -- ){int a, b;cin >> a >> b;int pa = find(a), pb = find(b);if (pa != pb){v[pb] += v[pa];w[pb] += w[pa];p[pa] = pb;}}// 01背包for (int i = 1; i <= n; i ++ )if (p[i] == i)for (int j = vol; j >= v[i]; j -- )f[j] = max(f[j], f[j - v[i]] + w[i]);cout << f[vol] << endl;return 0;
}
/* 自己写的
#include<bits/stdc++.h>
using namespace std;
const int N=10010;int n,m,w;
map<int,pair<int,int> > mp;
int money[N],value[N];
int cnt;
int M[N],V[N];
int dp[N];
int p[N];
int findP(int x)
{if(p[x]!=x) return p[x]=findP(p[x]);return p[x];
}int main()
{cin>>n>>m>>w;for(int i=1;i<=n;i++) p[i]=i;for(int i=1;i<=n;i++){cin>>money[i]>>value[i];}for(int i=0;i<m;i++){int a,b;cin>>a>>b;p[findP(a)]=findP(b);}for(int i=1;i<=n;i++){int pa=findP(i);mp[pa].first+=money[i];mp[pa].second+=value[i];}for(map<int,pair<int,int> >::iterator it=mp.begin();it!=mp.end();it++){cnt++;M[cnt]=it->second.first;V[cnt]=it->second.second;}for(int i=1;i<=cnt;i++){for(int j=w;j>=M[i];j--){dp[j]=max(dp[j],dp[j-M[i]]+V[i]);}}cout<<dp[w];return 0;
}
*/

4.1.3 237. 程序自动分析

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=200010;int cnt;
struct Node{int a,b,c;
}op[100010];
unordered_map<int,int> mp;
int p[N];
int findP(int x)
{if(p[x]!=x) return p[x]=findP(p[x]);return p[x];
}int main()
{int t;cin>>t;while(t--){int n;cin>>n;cnt=1;mp.clear();for(int i=1;i<=N;i++) p[i]=i;for(int i=1;i<=n;i++){int a,b,c;cin>>a>>b>>c;if(mp.count(a)==0)mp[a]=cnt++;if(mp.count(b)==0)mp[b]=cnt++;op[i].a=a,op[i].b=b,op[i].c=c;}for(int i=1;i<=n;i++){int a=op[i].a,b=op[i].b,c=op[i].c;if(c==1){p[findP(mp[a])]=findP(mp[b]);}}bool success=true;for(int i=1;i<=n;i++){int a=op[i].a,b=op[i].b,c=op[i].c;if(c==0){if(findP(mp[a])==findP(mp[b])){success=false;break;}}}if(success) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}

4.1.4 239. 奇偶游戏

在这里插入图片描述

代码:

#include<bits/stdc++.h>     //带边权并查集
using namespace std;
const int N=20010;int n,m;
int p[N],d[N];
map<int,int> S;int get(int x)
{if(S.count(x)==0) S[x]=++n;return S[x];
}int findP(int x)
{if(p[x]!=x){int root=findP(p[x]);d[x]^=d[p[x]];p[x]=root;}return p[x];
}
int main()
{cin>>n>>m;n=0;for(int i=0;i<N;i++) p[i]=i;int res=m;for(int i=1;i<=m;i++){int a,b;string type;cin>>a>>b>>type;a=get(a-1),b=get(b);int t=0;if(type=="odd") t=1;int pa=findP(a),pb=findP(b);if(pa==pb){if(d[a]^d[b]!=t){res=i-1;break;}}else{p[pa]=pb;d[pa]=d[a]^d[b]^t;}}cout<<res<<endl;return 0;
}/* 扩展域
#include<bits/stdc++.h>
using namespace std;
const int N=40010,base=N/2;int n,m;
int p[N],d[N];
map<int,int> S;int get(int x)
{if(S.count(x)==0) S[x]=++n;return S[x];
}int findP(int x)
{if(p[x]!=x) return p[x]=findP(p[x]);return p[x];
}int main()
{cin>>n>>m;n=0;for(int i=0;i<N;i++) p[i]=i;int res=m;for(int i=1;i<=m;i++){int a,b;string type;cin>>a>>b>>type;a=get(a-1),b=get(b);if(type=="even"){if(findP(a+base)==findP(b)){res=i-1;break;}p[findP(a)]=findP(b);p[findP(a+base)]=findP(b+base);}else{if(findP(a)==findP(b)){res=i-1;break;}p[findP(a)]=findP(b+base);p[findP(a+base)]=findP(b);}}cout<<res<<endl;return 0;
}
*/

4.1.5 238. 银河英雄传说

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=30010;int n;
int p[N],sz[N],d[N];
int findP(int x)
{if(p[x]!=x){int root=findP(p[x]);d[x]+=d[p[x]];p[x]=root;}return p[x];
}
int main()
{cin>>n;for(int i=1;i<=N;i++){p[i]=i;sz[i]=1;}for(int i=0;i<n;i++){string type;int a,b;cin>>type>>a>>b;int pa=findP(a),pb=findP(b);if(type=="M"){d[pa]=sz[pb];sz[pb]+=sz[pa];p[pa]=pb;}else{if(pa!=pb)cout<<-1<<endl;elsecout<<max(0,abs(d[a]-d[b])-1)<<endl;}}return 0;
}

4.2 树状数组

4.2.1 241. 楼兰图腾

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;const int N=200010;int n;
int a[N],tr[N];
int big[N],little[N];
int lowbit(int x)
{return x&(-x);
}void add(int x,int c)
{for(int i=x;i<=n;i+=lowbit(i))  //从x开始tr[i]+=c;
}int sum(int x)
{int res=0;for(int i=x;i>0;i-=lowbit(i))res+=tr[i];return res;
}
int main()
{cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){int y=a[i];big[i]=sum(n)-sum(y);little[i]=sum(y-1);add(y,1);}memset(tr,0,sizeof tr);LL res1=0,res2=0;for(int i=n;i>=1;i--){int y=a[i];res1+=big[i]*(LL)(sum(n)-sum(y));res2+=little[i]*(LL)sum(y-1);add(y,1);}cout<<res1<<" "<<res2<<endl;return 0;
}

4.2.2 242. 一个简单的整数问题

在这里插入图片描述

代码:

#include<bits/stdc++.h> //差分,树状数组综合应用
using namespace std;
const int N=100010;int n,m;
int a[N];
int b[N];   //差分数组
int tr[N];  //差分数组的树状数组void myinsert(int l,int r,int c)    //差分
{b[l]+=c,b[r+1]-=c;
}int lowbit(int x)
{return x&(-x);
}void add(int x,int c)
{for(int i=x;i<=n;i+=lowbit(i))  //从x开始tr[i]+=c;
}int sum(int x)
{int res=0;for(int i=x;i>0;i-=lowbit(i))res+=tr[i];return res;
}int main()
{cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)myinsert(i,i,a[i]);for(int i=1;i<=n;i++)add(i,b[i]);while(m--){string op;cin>>op;if(op=="Q"){int x;cin>>x;cout<<sum(x)<<endl;}else{int l,r,c;cin>>l>>r>>c;add(l,c),add(r+1,-c);}}return 0;
}

4.2.3 243. 一个简单的整数问题2

在这里插入图片描述

代码:

#include<bits/stdc++.h> //差分,树状数组综合应用
using namespace std;
typedef long long LL;
const int N=100010;int n,m;
int a[N];
LL tr_b[N];  //差分数组b[i]的树状数组
LL tr_bi[N]; //差分数组b[i]*i的树状数组int lowbit(int x)
{return x&(-x);
}void add(LL tr[],int x,LL c)
{for(int i=x;i<=n;i+=lowbit(i))  //从x开始tr[i]+=c;
}LL sum(LL tr[],int x)
{LL res=0;for(int i=x;i>0;i-=lowbit(i))res+=tr[i];return res;
}LL prefix_sum(int x)
{return sum(tr_b,x)*(x+1)-sum(tr_bi,x);
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){int b=a[i]-a[i-1];add(tr_b,i,b);add(tr_bi,i,(LL)b*i);}while(m--){string op;int l,r,d;cin>>op>>l>>r;if(op=="Q"){cout<<prefix_sum(r)-prefix_sum(l-1)<<endl;}else{cin>>d;add(tr_b,l,d),add(tr_b,r+1,-d);//均只要修改两处add(tr_bi,l,l*d),add(tr_bi,r+1,(r+1)*-d);}}return 0;
}

4.2.4 244. 谜一样的牛

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=100010;int n;
int h[N];
int ans[N];
int tr[N];
int lowbit(int x)
{return x&-x;
}
void add(int x,int c)
{for(int i=x;i<=n;i+=lowbit(i))tr[i]+=c;
}
int sum(int x)
{int res=0;for(int i=x;i>0;i-=lowbit(i))res+=tr[i];return res;
}
int main()
{cin>>n;for(int i=2;i<=n;i++)cin>>h[i];for(int i=1;i<=n;i++)tr[i]=lowbit(i);for(int i=n;i>0;i--){int k=h[i]+1;int l=1,r=n;while(l<r){int mid=(l+r)/2;if(sum(mid)>=k) r=mid;else l=mid+1;}ans[i]=r;add(r,-1);}for(int i=1;i<=n;i++)cout<<ans[i]<<endl;return 0;
}

4.3 线段树

4.3.1 1275. 最大数

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=200010,INF=0x3f3f3f3f;int m,p;
int n;
struct Node
{int l,r;int v;  // 区间[l, r]中的最大值Node(){}Node(int _l,int _r,int _v){l=_l,r=_r,v=_v;}
}tr[4*N];void pushup(int u)  // 由子节点的信息,来计算父节点的信息 u表示父节点编号
{tr[u].v=max(tr[u<<1].v,tr[u<<1|1].v);
}void build(int u,int l,int r)   //u表示父节点编号,从u开始建立[l,r]的线段树
{tr[u]=Node(l,r,0);if(l==r) return;int mid=l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);pushup(u);
}int query(int u,int l,int r)
{if(tr[u].l>=l&&tr[u].r<=r) return tr[u].v; // 树中节点,已经被完全包含在[l, r]中了int mid=tr[u].l+tr[u].r>>1;int v=-INF;if(l<=mid) v=query(u<<1,l,r);if(r>mid) v=max(v,query(u<<1|1,l,r));return v;
}void modify(int u,int x,int v) //单点修改,将u父节点编号,x是要修改的点,v是要修改为多少
{if(tr[u].l==x&&tr[u].r==x) tr[u].v=v;else{int mid=tr[u].l+tr[u].r>>1;if(x<=mid) modify(u<<1,x,v);else  modify(u<<1|1,x,v);pushup(u);}
}
int main()
{cin>>m>>p;int num=0;build(1,1,m);while(m--){string op;int x;cin>>op>>x;if(op=="Q"){num=query(1,n-x+1,n);cout<<num<<endl;}else{n++;modify(1,n,(num+x)%p);}}return 0;
}

4.3.2 245. 你能回答这些问题吗

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=500010,INF=0x3f3f3f3f;int n,m;
int w[N];
struct Node
{int l,r;int sum,tmax,lmax,rmax;Node(){}Node(int _l,int _r,int _sum,int _tmax,int _lmax,int _rmax){l=_l,r=_r,sum=_sum,tmax=_tmax,lmax=_lmax,rmax=_rmax;}
}tr[N*4];void pushup(Node &u,Node &l,Node &r)
{u.sum=l.sum+r.sum;u.lmax=max(l.lmax,l.sum+r.lmax);u.rmax=max(r.rmax,r.sum+l.rmax);u.tmax=max(max(l.tmax,r.tmax),l.rmax+r.lmax);
}
void pushup(int u)
{pushup(tr[u],tr[u<<1],tr[u<<1|1]);
}void build(int u,int l,int r)
{if(l==r) tr[u]=Node(l,r,w[r],w[r],w[r],w[r]);else{tr[u]=Node(l,r,0,0,0,0);int mid=l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);pushup(u);}
}void modify(int u,int x,int v)
{if(tr[u].l==x&&tr[u].r==x) tr[u]=Node(x,x,v,v,v,v);else{int mid=tr[u].l+tr[u].r>>1;if(x<=mid) modify(u<<1,x,v);else modify(u<<1|1,x,v);pushup(u);}
}Node query(int u,int l,int r)
{if(tr[u].l>=l&&tr[u].r<=r) return tr[u];int mid=tr[u].l+tr[u].r>>1;if(r<=mid) return query(u<<1,l,r);else if(l>mid) return query(u<<1|1,l,r);else{Node left=query(u<<1,l,r);Node right=query(u<<1|1,l,r);Node res;pushup(res,left,right);return res;}
}
int main()
{ios::sync_with_stdio(0);cin>>n>>m;for(int i=1;i<=n;i++)cin>>w[i];build(1,1,n);while(m--){int k,x,y;cin>>k>>x>>y;if(k==1){if(x>y) swap(x,y);cout<<query(1,x,y).tmax<<endl;}else modify(1,x,y);}return 0;
}

4.3.3 246. 区间最大公约数

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=500010;int n,m;
LL w[N];
struct Node
{int l,r;LL sum,d;Node(){}Node(int _l,int _r,LL _sum,LL _d){l=_l,r=_r,sum=_sum,d=_d;}
}tr[N*4];LL gcd(LL a,LL b)
{return b?gcd(b,a%b):a;
}void pushup(Node &u,Node &l,Node &r)
{u.sum=l.sum+r.sum;u.d=gcd(l.d,r.d);
}void pushup(int u)
{pushup(tr[u],tr[u<<1],tr[u<<1|1]);
}void build(int u,int l,int r)
{if(l==r){LL b=w[r]-w[r-1];tr[u]=Node(l,r,b,b);}else{tr[u].l=l,tr[u].r=r;int mid=l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);pushup(u);}
}void modify(int u,int x,LL v)
{if(tr[u].l==x&&tr[u].r==x){LL b=tr[u].sum+v;tr[u]=Node(x,x,b,b);}else{int mid=tr[u].l+tr[u].r>>1;if(x<=mid) modify(u<<1,x,v);else modify(u<<1|1,x,v);pushup(u);}
}Node query(int u,int l,int r)
{if(tr[u].l>=l&&tr[u].r<=r) return tr[u];//注意三种情况int mid=tr[u].l+tr[u].r>>1;if(r<=mid) return query(u<<1,l,r);else if(l>mid) return query(u<<1|1,l,r);else{Node left=query(u<<1,l,r);Node right=query(u<<1|1,l,r);Node res;pushup(res,left,right);return res;}
}int main()
{cin>>n>>m;for(int i=1;i<=n;i++) cin>>w[i];build(1,1,n);string op;int l,r;LL d;while(m--){cin>>op>>l>>r;if(op=="Q"){Node left=query(1,1,l);Node right=Node(0,0,0,0);if(l+1<=r) right=query(1,l+1,r);cout<<abs(gcd(left.sum,right.d))<<endl;}else{cin>>d;modify(1,l,d);if(r+1<=n) modify(1,r+1,-d);}}return 0;
}

4.3.4 243. 一个简单的整数问题2

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=100010;int n,m;
int w[N];
struct Node
{int l,r;LL sum,add;Node(){}Node(int _l,int _r,LL _sum,LL _add){l=_l,r=_r,sum=_sum,add=_add;}
}tr[N*4];void pushup(int u)
{tr[u].sum=tr[u<<1].sum+tr[u<<1|1].sum;
}void pushdown(int u)
{Node &root=tr[u],&left=tr[u<<1],&right=tr[u<<1|1];if(root.add){left.add+=root.add,left.sum+=(LL)(left.r-left.l+1)*root.add;right.add+=root.add,right.sum+=(LL)(right.r-right.l+1)*root.add;root.add=0;}
}void build(int u,int l,int r)
{if(l==r) tr[u]=Node(l,r,w[r],0);else{tr[u]=Node(l,r,0,0);int mid=l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);pushup(u);}
}void modify(int u,int l,int r,int d)
{if(tr[u].l>=l&&tr[u].r<=r){tr[u].sum+=(LL)(tr[u].r-tr[u].l+1)*d;tr[u].add+=d;}else // 一定要分裂{pushdown(u);int mid=tr[u].l+tr[u].r>>1;if(l<=mid) modify(u<<1,l,r,d);if(r>mid) modify(u<<1|1,l,r,d);pushup(u);}
}LL query(int u,int l,int r)
{if(tr[u].l>=l&&tr[u].r<=r) return tr[u].sum;pushdown(u);int mid=tr[u].l+tr[u].r>>1;LL sum=0;if(l<=mid) sum+=query(u<<1,l,r);if(r>mid) sum+=query(u<<1|1,l,r);return sum;
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++) cin>>w[i];build(1,1,n);string op;int l,r,d;while(m--){cin>>op>>l>>r;if(op=="C"){cin>>d;modify(1,l,r,d);}elsecout<<query(1,l,r)<<endl;}return 0;
}

4.3.5 247. 亚特兰蒂斯

在这里插入图片描述
在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=10010;
typedef pair<double,double> PII;int n;
struct Segment
{double x,y1,y2;int k;Segment(){}Segment(double _x,double _y1,double _y2,int _k){x=_x,y1=_y1,y2=_y2,k=_k;}bool operator < (const Segment &t) const{return x<t.x;}
}seg[N*2];
struct Node
{int l,r;int cnt;double len;Node(){}Node(int _l,int _r,int _cnt,double _len){l=_l,r=_r,cnt=_cnt,len=_len;}
}tr[N*2*4];vector<double> ys;int find_y(double y)
{return lower_bound(ys.begin(),ys.end(),y)-ys.begin();
}void pushup(int u)
{if(tr[u].cnt) tr[u].len=ys[tr[u].r+1]-ys[tr[u].l];else if(tr[u].l!=tr[u].r){tr[u].len=tr[u<<1].len+tr[u<<1|1].len;}else tr[u].len=0;
}void build(int u,int l,int r)
{tr[u]=Node(l,r,0,0);if(l!=r){int mid=l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);}
}void modify(int u,int l,int r,int k)
{if(tr[u].l>=l&&tr[u].r<=r){tr[u].cnt+=k;pushup(u);}else{int mid=tr[u].l+tr[u].r>>1;if(l<=mid) modify(u<<1,l,r,k);if(r>mid) modify(u<<1|1,l,r,k);pushup(u);}
}
int main()
{int T=1;while(true){cin>>n;if(n==0) break;ys.clear();for(int i=0,j=0;i<n;i++){double x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;seg[j++]=Segment(x1,y1,y2,1);seg[j++]=Segment(x2,y1,y2,-1);ys.push_back(y1),ys.push_back(y2);}sort(ys.begin(),ys.end());ys.erase(unique(ys.begin(),ys.end()),ys.end());build(1,0,ys.size()-2);sort(seg,seg+n*2);double res=0;for(int i=0;i<n*2;i++){if(i>0) res+=tr[1].len*(seg[i].x-seg[i-1].x);modify(1,find_y(seg[i].y1),find_y(seg[i].y2)-1,seg[i].k);}printf("Test case #%d\n",T++);printf("Total explored area: %.2f\n\n",res);}return 0;
}

4.3.6 1277. 维护序列

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=100010;int n,p,m;
int w[N];
struct Node
{int l,r;int sum,add,mul;Node(){}Node(int _l,int _r,int _sum,int _add,int _mul){l=_l,r=_r,sum=_sum,add=_add,mul=_mul;}
}tr[N*4];void pushup(int u)
{tr[u].sum=(tr[u<<1].sum+tr[u<<1|1].sum)%p;
}void eval(Node &t,int add,int mul)
{t.sum=((LL)t.sum*mul+(LL)(t.r-t.l+1)*add)%p;t.mul=(LL)t.mul*mul%p;t.add=((LL)t.add*mul+add)%p;
}void pushdown(int u)
{eval(tr[u<<1],tr[u].add,tr[u].mul);eval(tr[u<<1|1],tr[u].add,tr[u].mul);tr[u].add=0,tr[u].mul=1;
}void build(int u,int l,int r)
{if(l==r) tr[u]=Node(l,r,w[r],0,1);else{tr[u]=Node(l,r,0,0,1);int mid=l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);pushup(u);}
}void modify(int u,int l,int r,int add,int mul)
{if(tr[u].l>=l&&tr[u].r<=r) eval(tr[u],add,mul);else{pushdown(u);int mid=tr[u].l+tr[u].r>>1;if(l<=mid) modify(u<<1,l,r,add,mul);if(r>mid) modify(u<<1|1,l,r,add,mul);pushup(u);}
}int query(int u,int l,int r)
{if(tr[u].l>=l&&tr[u].r<=r) return tr[u].sum;pushdown(u);int mid=tr[u].l+tr[u].r>>1;int sum=0;if(l<=mid) sum=query(u<<1,l,r);if(r>mid) sum=(sum+query(u<<1|1,l,r))%p;return sum;
}
int main()
{cin>>n>>p;for(int i=1;i<=n;i++) cin>>w[i];build(1,1,n);cin>>m;while(m--){int t,l,r,d;cin>>t>>l>>r;if(t==1){cin>>d;modify(1,l,r,0,d);}else if(t==2){cin>>d;modify(1,l,r,d,1);}elsecout<<query(1,l,r)<<endl;}return 0;
}

4.4 可持久化数据结构

4.4.1 256. 最大异或和

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=600010,M=N*25;int n,m;
int s[N];
int tr[M][2],max_id[M];
int root[N],idx;void my_insert(int i,int k,int p,int q)
{if(k<0){max_id[q]=i;return;}int v=s[i]>>k&1;if(p) tr[q][v^1]=tr[p][v^1];tr[q][v]=++idx;my_insert(i,k-1,tr[p][v],tr[q][v]);max_id[q]=max(max_id[tr[q][0]],max_id[tr[q][1]]);
}int query(int root,int C,int L)
{int p=root;for(int i=23;i>=0;i--){int v=C>>i&1;if(max_id[tr[p][v^1]]>=L) p=tr[p][v^1];else p=tr[p][v];}return C^s[max_id[p]];
}
int main()
{ios::sync_with_stdio(0);cin>>n>>m;max_id[0]=-1;root[0]=++idx;my_insert(0,23,0,root[0]);for(int i=1;i<=n;i++){int x;cin>>x;s[i]=s[i-1]^x;root[i]=++idx;my_insert(i,23,root[i-1],root[i]);}string op;int l,r,x;while(m--){cin>>op;if(op=="A"){cin>>x;n++;s[n]=s[n-1]^x;root[n]=++idx;my_insert(n,23,root[n-1],root[n]);}else{cin>>l>>r>>x;cout<<query(root[r-1],s[n]^x,l-1)<<endl;}}return 0;
}

4.4.2 255. 第K小数

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=100010,M=10010;int n,m;
int a[N];
vector<int> nums;struct Node
{int l,r;int cnt;
}tr[N*4+N*17];int root[N],idx;int find_x(int x)
{return lower_bound(nums.begin(),nums.end(),x)-nums.begin();
}int build(int l,int r)
{int p=++idx;if(l==r) return p;int mid=l+r>>1;tr[p].l=build(l,mid),tr[p].r=build(mid+1,r);return p;
}int my_insert(int p,int l,int r,int x)
{int q=++idx;tr[q]=tr[p];if(l==r){tr[q].cnt++;return q;}int mid=l+r>>1;if(x<=mid) tr[q].l=my_insert(tr[p].l,l,mid,x);else tr[q].r=my_insert(tr[p].r,mid+1,r,x);tr[q].cnt=tr[tr[q].l].cnt+tr[tr[q].r].cnt;return q;
}int query(int q,int p,int l,int r,int k)
{if(l==r) return r;int cnt=tr[tr[q].l].cnt-tr[tr[p].l].cnt;int mid=l+r>>1;if(k<=cnt) return query(tr[q].l,tr[p].l,l,mid,k);else return query(tr[q].r,tr[p].r,mid+1,r,k-cnt);
}
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];nums.push_back(a[i]);}sort(nums.begin(),nums.end());nums.erase(unique(nums.begin(),nums.end()),nums.end());root[0]=build(0,nums.size()-1);for(int i=1;i<=n;i++)root[i]=my_insert(root[i-1],0,nums.size()-1,find_x(a[i]));while(m--){int l,r,k;cin>>l>>r>>k;cout<<nums[query(root[r],root[l-1],0,nums.size()-1,k)]<<endl;}return 0;
}

4.5 平衡树

4.5.1 253. 普通平衡树

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=100010,INF=1e9;int n;
struct Node
{int l,r;int key,val;int cnt,sz;
}tr[N];int root,idx;void pushup(int p)
{tr[p].sz=tr[tr[p].l].sz+tr[tr[p].r].sz+tr[p].cnt;
}int get_node(int key)   //创建新的节点
{tr[++idx].key=key;tr[idx].val=rand();tr[idx].cnt=tr[idx].sz=1;return idx;
}void zig(int &p)    // 右旋
{int q=tr[p].l;tr[p].l=tr[q].r,tr[q].r=p,p=q;pushup(tr[p].r),pushup(p);
}void zag(int &p)    // 左旋
{int q=tr[p].r;tr[p].r=tr[q].l,tr[q].l=p,p=q;pushup(tr[p].l),pushup(p);
}void build()
{get_node(-INF),get_node(INF);root=1,tr[1].r=2;pushup(root);if(tr[1].val<tr[2].val) zag(root);
}void my_insert(int &p,int key)
{if(!p) p=get_node(key);else if(tr[p].key==key) tr[p].cnt++;else if(tr[p].key>key){my_insert(tr[p].l,key);if(tr[tr[p].l].val>tr[p].val) zig(p);}else{my_insert(tr[p].r,key);if(tr[tr[p].r].val>tr[p].val) zag(p);}pushup(p);
}void my_remove(int &p,int key)
{if(!p) return;if(tr[p].key==key){if(tr[p].cnt>1) tr[p].cnt--;else if(tr[p].l||tr[p].r){if(!tr[p].r||tr[tr[p].l].val>tr[tr[p].r].val){zig(p);my_remove(tr[p].r,key);}else{zag(p);my_remove(tr[p].l,key);}}elsep=0;}else if(tr[p].key>key) my_remove(tr[p].l,key);else my_remove(tr[p].r,key);pushup(p);
}int get_rank_by_key(int p,int key)  // 通过数值找排名
{if(!p) return 0;    // 本题中不会发生此情况if(tr[p].key==key) return tr[tr[p].l].sz+1;if(tr[p].key>key) return get_rank_by_key(tr[p].l,key);return tr[tr[p].l].sz+tr[p].cnt+get_rank_by_key(tr[p].r,key);
}int get_key_by_rank(int p,int rk) // 通过排名找数值rk:rank
{if(!p) return INF;  // 本题中不会发生此情况if(tr[tr[p].l].sz>=rk) return get_key_by_rank(tr[p].l,rk);if(tr[tr[p].l].sz+tr[p].cnt>=rk) return tr[p].key;return get_key_by_rank(tr[p].r,rk-tr[tr[p].l].sz-tr[p].cnt);
}int get_prev(int p,int key)     // 找到严格小于key的最大数
{if(!p) return -INF;if(tr[p].key>=key) return get_prev(tr[p].l,key);return max(tr[p].key,get_prev(tr[p].r,key));
}int get_next(int p,int key)     // 找到严格大于key的最小数
{if(!p) return INF;if(tr[p].key<=key) return get_next(tr[p].r,key);return min(tr[p].key,get_next(tr[p].l,key));
}
int main()
{build();cin>>n;while(n--){int op,x;cin>>op>>x;if(op==1) my_insert(root,x);else if(op==2) my_remove(root,x);else if(op==3) cout<<get_rank_by_key(root,x)-1<<endl;else if(op==4) cout<<get_key_by_rank(root,x+1)<<endl;else if(op==5) cout<<get_prev(root,x)<<endl;else cout<<get_next(root,x)<<endl;}return 0;
}

4.5.2 265. 营业额统计

在这里插入图片描述

代码:

/* Treep
#include<bits/stdc++.h>
using namespace std;
const int N=1000010,INF=1e9;
int n;
struct Node
{int l,r;int key,val;int cnt,sz;
}tr[N];int root,idx;void pushup(int p)
{tr[p].sz=tr[tr[p].l].sz+tr[tr[p].r].sz+tr[p].cnt;
}int get_node(int key)   //创建新的节点
{tr[++idx].key=key;tr[idx].val=rand();tr[idx].cnt=tr[idx].sz=1;return idx;
}void zig(int &p)    // 右旋
{int q=tr[p].l;tr[p].l=tr[q].r,tr[q].r=p,p=q;pushup(tr[p].r),pushup(p);
}void zag(int &p)    // 左旋
{int q=tr[p].r;tr[p].r=tr[q].l,tr[q].l=p,p=q;pushup(tr[p].l),pushup(p);
}void build()
{get_node(-INF),get_node(INF);root=1,tr[1].r=2;pushup(root);if(tr[1].val<tr[2].val) zag(root);
}void my_insert(int &p,int key)
{if(!p) p=get_node(key);else if(tr[p].key==key) tr[p].cnt++;else if(tr[p].key>key){my_insert(tr[p].l,key);if(tr[tr[p].l].val>tr[p].val) zig(p);}else{my_insert(tr[p].r,key);if(tr[tr[p].r].val>tr[p].val) zag(p);}pushup(p);
}int get_prev(int p,int key)     // 找到严格小于等于key的最大数
{if(!p) return -INF;if(tr[p].key>key) return get_prev(tr[p].l,key);return max(tr[p].key,get_prev(tr[p].r,key));
}int get_next(int p,int key)     // 找到严格大于等于key的最小数
{if(!p) return INF;if(tr[p].key<key) return get_next(tr[p].r,key);return min(tr[p].key,get_next(tr[p].l,key));
}int main()
{ios::sync_with_stdio(0);build();cin>>n;int res=0;for(int i=1;i<=n;i++){int key;cin>>key;if(i==1) res+=key;else{int aj1=get_prev(root,key),aj2=get_next(root,key);if(aj1==-INF) aj1=INF;int aj=min(abs(aj1-key),abs(aj2-key));res+=aj;}my_insert(root,key);}cout<<res<<endl;return 0;
}
*/
//STL set lower_bound >=
#include<bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
int n;
set<int> st;
int main()
{cin>>n;int res=0;set<int>::iterator it;st.insert(-INF);st.insert(INF);for(int i=0;i<n;i++){int x;cin>>x;if(i==0)res+=x;else{int aj1,aj2;it=st.lower_bound(x);aj1=*it;aj2=*(--it);res+=min(aj1-x,x-aj2);}st.insert(x);}cout<<res<<endl;return 0;
}

4.6 AC自动机

4.6.1 1282. 搜索关键词

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=10010,S=55,M=1000010;int n;
int tr[N*S][26],cnt[N*S],idx;
char str[M];
int q[N*S],ne[N*S];void my_insert()    //trie中插入节点
{int p=0;for(int i=0;str[i];i++){int t=str[i]-'a';if(!tr[p][t]) tr[p][t]=++idx;p=tr[p][t];}cnt[p]++;
}void build()
{queue<int> q;for(int i=0;i<26;i++){if(tr[0][i])q.push(tr[0][i]);}while(q.size()){int t=q.front();q.pop();for(int i=0;i<26;i++){int p=tr[t][i];if(!p) tr[t][i]=tr[ne[t]][i];else{ne[p]=tr[ne[t]][i];q.push(p);}}}
}
int main()
{int T;cin>>T;while(T--){memset(tr,0,sizeof tr);memset(cnt,0,sizeof cnt);memset(ne,0,sizeof ne);idx=0;cin>>n;for(int i=0;i<n;i++){cin>>str;my_insert();}build();cin>>str;int res=0;for(int i=0,j=0;str[i];i++){int t=str[i]-'a';j=tr[j][t];int p=j;while(p){res+=cnt[p];cnt[p]=0;p=ne[p];}}cout<<res<<endl;}return 0;
}

4.6.2 1285. 单词

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1000010;int n;
int tr[N][26],f[N],idx;
int ne[N];
char str[N];
int id[210];
vector<int> seq;void my_insert(int x)
{int p=0;for(int i=0;str[i];i++){int t=str[i]-'a';if(!tr[p][t]) tr[p][t]=++idx;p=tr[p][t];f[p]++;}id[x]=p;
}void build()
{queue<int> q;for(int i=0;i<26;i++){if(tr[0][i]){q.push(tr[0][i]);seq.push_back(tr[0][i]);}}while(q.size()){int t=q.front();q.pop();for(int i=0;i<26;i++){int &p=tr[t][i];if(!p) p=tr[ne[t]][i];else{ne[p]=tr[ne[t]][i];q.push(p);seq.push_back(p);}}}
}
int main()
{cin>>n;for(int i=0;i<n;i++){cin>>str;my_insert(i);}build();for(int i=seq.size()-1;i>=0;i--) f[ne[seq[i]]]+=f[seq[i]];for(int i=0;i<n;i++)cout<<f[id[i]]<<endl;return 0;
}
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. STM32学习笔记(一)

    一、内部核心功能 ARM内核 存储器 Flash&#xff1a;硬盘 SRAM&#xff1a;内存 时钟 实时时钟&#xff1a;RTC 振荡器HSE/HSI RC振荡器 晶体振荡器 分频器 实现震荡频率翻倍 用锁相环实现&#xff0c;称PLL 复位 电源管理 备用电源输入 端口输入输出 逻辑电源输入 模…...

    2024/4/20 11:05:16
  2. 线程、并发相关基础知识

    线程、并发相关基础知识一、线程、并发相关1、线程的生命周期&#xff1f;线程有几种状态2、sleep()、wait()、join()、yield()的区别3、对线程安全的理解4、Thread、Runable的区别5、守护线程6、ThreadLocal的原理和使用场景7、ThreadLocal内存泄露原因8、并发、并行、串行的区…...

    2024/4/14 13:02:03
  3. 计算机网络实验: 使用Wireshark抓包工具进行网络层和链路层网络协议分析(Ethernet ARP部分)

    在这一部分中&#xff0c;我们将抓取并分析 Ethernet 数据帧的内容&#xff0c;观察 ARP 协议在现实网络中如何工作。 抓取Ethernet 数据帧并进行分析&#xff1a; a) 启动web浏览器&#xff0c;清空浏览器的缓存&#xff0c;启动 Wireshark 程序 b) 键入&#xff1a; http:/…...

    2024/4/16 22:04:46
  4. MySQL-事务;存储引擎

    一、事务&#xff08;transaction&#xff09; MySQL 事务主要用于处理操作量大&#xff0c;复杂度高的数据。比如说&#xff0c;在人员管理系统中&#xff0c;你删除一个人员&#xff0c;你既需要删除人员的基本资料&#xff0c;也要删除和该人员相关的信息&#xff0c;如信箱…...

    2024/4/14 18:13:31
  5. Rust 入门 基础单向链表

    使用Rust完成单向链表 最近闲下来了&#xff0c;看到一门语言Rust兴起&#xff0c;工资也可观&#xff0c;linux听说有部分也开始用rust写了&#xff0c;但听说学习有曲线&#xff0c;当时本人是不信邪的&#xff0c;学了之后才知道是真的有曲线。。。光是链表就搞了好几天&…...

    2024/4/14 13:03:09
  6. 在DirectX 12中使用SSAO

    在DirectX 12中使用SSAOSSAO是常用的实现环境光遮蔽&#xff0c;提高物体真实性的一种技术&#xff0c;它可以分为生成AO贴图和使用AO贴图两个阶段。在生成阶段&#xff0c;我们需要一张view space下的normal texture&#xff0c;和一张depth texture作为输入。depth texture是…...

    2024/4/14 13:03:04
  7. Kotlin 协程+Retrofit 最优雅的网络请求使用

    1.简介 Retrofit对协程的支持非常的简陋。在kotlin中使用不符合kotlin的优雅 interface TestServer {GET("banner/json")suspend fun banner(): ApiResponse<List<Banner>> }//实现并行捕获异常的网络请求fun oldBanner(){viewModelScope.launch {//传…...

    2024/4/5 4:56:46
  8. 学弟挺进字节,细谈大厂高级Android研发,面试问什么?

    最近收到学弟好消息&#xff0c;经历几番尝试和挣扎&#xff0c;终于在今年入职字节&#xff0c;实现了自己的职业梦想&#xff01;学弟18年毕业国内211院校本科&#xff0c;19-21年在业内有些知名度小厂做Android研发&#xff0c;下半年的时候准备跳槽。 几个月前还是这么问我…...

    2024/4/18 22:44:22
  9. 第二章、Java基本语法(2):运算符

    文章目录前言&#xff1a;千里之行&#xff0c;始于足下。一、算术运算符二、赋值运算符三、比较运算符&#xff08;关系运算符&#xff09;四、逻辑运算符五、位运算符六、三元运算符七、运算符的优先级总结前言&#xff1a;千里之行&#xff0c;始于足下。 提示&#xff1a;以…...

    2024/4/14 13:03:14
  10. C++学习笔记——容器

    容器 分类 序列容器&#xff1a;对象有序排列&#xff0c;用数值进行索引关联容器&#xff1a;对象顺序不重要&#xff0c;用键来进行索引适配器&#xff1a;调整原有容器的行为&#xff0c;使其对外展现新的类型接口或返回新元素生成器&#xff1a;构造元素序列 序列容器 …...

    2024/4/14 13:03:14
  11. Kubernetes网络flannel之host-gw模式分析

    1. Flannel的host-gw模式 Flannel的host-gw模式是一种纯三层的网络互通方案&#xff0c;Pod之间互相访问是通过路由方式实现。host-gw模式下跨节点网络通信需要通过节点上的路由表实现&#xff0c;因此必须要通信双方所在宿主机能够直接路由。这就要求该模式下集群中所有节点必…...

    2024/4/19 15:25:54
  12. Js基础_DOM

    文章目录一、什么是DOM1.DOM树二、获取DOM1.根据ID获取一、什么是DOM 文档对象模型&#xff08;Docunebt Object Model&#xff09;&#xff0c;他提供了对文档结构化的表述&#xff0c;将Js和HTML联系了起来&#xff0c;将文档解析成了一个由节点和对象&#xff08;包含属性和…...

    2024/4/20 7:45:33
  13. C语言求解:为何这个在手机上运行,数据没有溢出

    在这里插入图片...

    2024/4/7 5:11:44
  14. CUG中国地质大学(武汉)现代软件国际会议用例图活动图状态图

    CUG中国地质大学&#xff08;武汉&#xff09;现代软件工程作业 推荐在线画图网站&#xff1a;processon...

    2024/4/19 8:58:58
  15. 机器学习算法 22 决策树算法到集成学习思想(02 决策树常用的分裂条件基尼系数Gini、信息增益、信息增益率、MSE )

    1 总结&#xff1a; 决策树的生成说白了就是数据不断分裂的递归过程&#xff0c;每一次分裂&#xff0c;尽可能让类别一样的数据在树的一边&#xff0c;当树的叶子节点的数据都是一类的时候&#xff0c;则停止分裂 2 分割的条件 问题&#xff1a;分割的条件是什么&#xff1…...

    2024/4/14 13:03:19
  16. 2021电赛F题-智能送药小车-国一

    2021电赛F题-智能送药小车-国一 B站视频链接&#xff1a;https://www.bilibili.com/video/BV1u44y1e7qk/ &#xff08;这大概是b站第一个双车视频吧&#xff0c;嘿嘿&#x1f601;&#xff09; 全部代码开源-下载链接:https://download.csdn.net/download/my_id_kt/76744664 &…...

    2024/4/14 18:14:36
  17. 使用触发器和C#程序实现数据同步

    c#教程https://www.xin3721.com/eschool/CSharpxin3721/ 项目中用到了Quartz&#xff0c;也算是Quartz的一个示例。 源库创建数据同步表SYNC_DATA&#xff1a; CREATE TABLE SYNC_DATA(ID VARCHAR2(36) NOT NULL,TABLE_NAME …...

    2024/4/14 13:02:59
  18. Java Applet

    Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。 Applet特点 Applet 类继承了 java.applet.Applet 类Applet 类没有定义 main()&#xff0c;所以一个 Applet 程序不会调用 main() …...

    2024/4/14 14:43:56
  19. Java基础系列文章-数据类型之引用数据类型

    Java基础系列文章-数据类型之引用数据类型 Java基础系列文章-数据类型之引用数据类型 文章目录Java基础系列文章-数据类型之引用数据类型前言一、数据类型结构图二、引用数据类型1.类&#xff08;Class&#xff09;1.1构造方法1.2创建对象1.3访问实例变量和方法1.4实例1.5源文…...

    2024/4/22 23:24:35
  20. Java特性和优势

    Java特性和优势 三高&#xff1a;高可用高并发高性能简单性面向对象可移植性高性能分布式动态性多线程安全性 JDK&#xff0c; JRE&#xff0c; JVM...

    2024/4/14 14:44:27

最新文章

  1. 实验:使用apache + yum实现自制yum仓库

    实验准备 Web服务器端&#xff1a;cenos-1&#xff08;IP&#xff1a;10.9.25.33&#xff09; 客户端&#xff1a;centos-2 保证两台机器网络畅通&#xff0c;原yum仓库可用&#xff0c;关闭防火墙和selinux Web服务器端 ①安装httpd并运行&#xff0c;设置开机自启动 安装…...

    2024/4/25 0:55:31
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Redis Stack十部曲之三:理解Redis Stack中的数据类型

    文章目录 前言String字符串作为计数器限制 List限制列表阻塞列表自动创建和删除聚合类型键限制 Set限制 Hash限制 Sorted Set范围操作字典操作更新分数 JSON路径限制 BitMapBitfieldProbabilisticHyperLogLogBloom filterCuckoo filtert-digestTop-KCount-min sketchConfigurat…...

    2024/4/19 15:45:16
  4. 与机器对话:ChatGPT 和 AI 语言模型的奇妙故事

    原文&#xff1a;Talking to Machines: The Fascinating Story of ChatGPT and AI Language Models 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 从 ELIZA 到 ChatGPT&#xff1a;会话式人工智能的简史 会话式人工智能是人工智能&#xff08;AI&#xff09;的一个分…...

    2024/4/23 6:37:10
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/23 20:58:27
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/23 13:30:22
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/23 13:28:06
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/24 18:16:28
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/23 13:27:44
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/19 11:57:53
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/23 13:29:53
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/23 13:27:22
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/23 13:28:42
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/23 22:01:21
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/23 13:29:23
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/25 0:00:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/23 13:47:22
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/19 11:59:23
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/19 11:59:44
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/23 13:28:08
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/24 16:38:05
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/23 13:28:14
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/23 13:27:51
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/23 13:27:19
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57