
Lv.1
QQ频道:https://pd.qq.com/s/2phoyc 2301,2302届创委!
签名:点赞分:920 收藏分:1000 再创分:1000 不要 脸2023计划: 点赞:5675/5000 √2024.2.8 收藏:3094/3000 √2024.12.23 浏览:15w/15w √2025.5.26 粉丝:1600/1500 √2024.5.17 首页:4/5(包括协作) 称号:大佬/大佬 √2022.12.14
在 【创委】关于首页问题统一回复和首页问题反馈 中回复
关于首页大家也别吐槽了,真的就是我们也很注意,但我们只是推荐,上还是不上我们决定不了,就像是大家说风气不好,但实际上风纪能做的和我们大家没什么区别。
2023-04-09T14:50:28 点赞:3
在 有大佬能帮我找下这段错误吗? 中回复
这个简单,这段代码缺少一个左大括号 {,应该改为:
world.onChat(async ({ entity, message }) => {
if (message === '/tp') {
const gethc = await entity.player.dialog({
type: Box3DialogType.SELECT,
content: "请选择传送的地方",
title: "传送系统",
options: ["出生岛", "家园", "资源"],
})
if (!gethc) return;
if (gethc.index == 0) {
entity.position.set(1, 1, 1)
}
if (gethc.index == 1) {
entity.player.dialog({
type: Box3DialogType.TEXT,
content: "请稍后",
title: "家园",
})
}
if (gethc.index == 2) {
entity.player.dialog({
type: Box3DialogType.TEXT,
content: "资源区正在加载中",
title: "资源1区",
})
}
}
})
2023-04-10T20:25:35 点赞:1
在 三道编程题(编写程序) 中回复
#1
import random
p = input()
ad = input()
n = int(input())
len1 = len(p)
len2 = len(ad)
# 在文章中随机插入广告,但广告不能嵌套
for i in range(n):
idx = random.randint(0, len1)
# 若广告不能插入,则重选位置
while ad in p[idx:idx+len2]:
idx = random.randint(0, len1)
p = p[:idx] + ad + p[idx:]
print(p)
#2
p = input()
ad = input()
n = int(input())
vip = int(input())
len1 = len(p)
len2 = len(ad)
# 直接替换所有广告
if vip == 1:
gp = p.replace(ad, '')
else:
for i in range(n):
idx = random.randint(0, len1)
while ad in p[idx:idx+len2]:
idx = random.randint(0, len1)
p = p[:idx] + ad + p[idx:]
gp = p
print(gp)
#3
import math
p = input()
ad = input()
n = int(input())
vip = int(input())
len1 = len(p)
len2 = len(ad)
# 判断vip是否为质数
if vip < 2 or any(vip % i == 0 for i in range(2, int(math.sqrt(vip))+1)):
gp = p
else:
for i in range(n):
idx = random.randint(0, len1)
while ad in p[idx:idx+len2]:
idx = random.randint(0, len1)
p = p[:idx] + ad + p[idx:]
gp = p
print(gp)2023-05-14T21:01:38 点赞:0
在 【玩法】大家把自己的名字用百度翻译持续生喵得出来的结果是什么?(生喵过程自己定就行了) 中回复
Border City Passengers
边境城市乘客
离谱。。。
2023-06-02T09:34:23 点赞:0
在 关于树链剖分 中回复
这段程序是一段使用了树链剖分和线段树的树上路径修改和查询问题。这个程序有几个函数,其中主要的有:
1. edge(int U, int V):建图函数,将边从U和V连起来。
2. dfs1(int u, int fa):深度优先遍历,算出每个节点的子树大小和父节点。
3. dfs2(int u, int fa, int top):深度优先遍历,算出每个节点所在重链的重喵、重链头、在线段树中的位置以及建出对应的数组 w。
4. build(int l, int r, int p):递归建树,建立一个表示区间 [l, r] 的线段树,其中第 p 层对应的区间为 [tree[p].l, tree[p].r],并将区间中所有元素值存放在 tree[p].dat 中。
5. pushdown(int p):处理懒标记,将 tree[p].add 更新到左右喵的 tree[ls(p)].add 和 tree[rs(p)].add 中,并将对应区间加上该值。
6. change(int p, int l, int r, int k):将区间 [l, r] 的值都加上 k。如果当前节点对应的区间完全覆盖了目标区间,则将当前节点的值加上 k;否则递归向左右喵寻找覆盖目标区间的节点。
7. query(int p, int l, int r):查询区间 [l, r] 的值的和。如果当前节点对应的区间完全被包含在目标区间中,则直接返回该节点的值;否则递归向左右喵寻找与目标区间有重叠的节点,并将每个节点的值累加起来返回。
8. addTree(int u, int v, int w):将路径 u 到 v 上的所有节点的值都加上 w。先找到 u 和 v 同一重链的节点,然后逐一向上修改即可。
9. queryTree(int u, int v):查询路径 u 到 v 上所有节点的值的和。与 addTree 类似,先找到两个节点同一重链的节点,然后逐一向上查询并累加。最后返回累加结果。
10. main():程序入口,首先读入 N,M,R,P 和数组 w,然后建图、树剖、线段树建树,最后逐一处理输入的操作。
修改主要包括:
1. 需要用到的头文件可能不够,需要添加或者删减头文件。
2. 建议修改变量名,使其更能体现变量的含义。例如: w 数组可以改名为 weight 、cnt 可以改名为 idx 等等。
3. pushdown 函数中的 tree[p].add%=k 这一语句应该改为 tree[p].add%=P 。
4. addTree 函数中的 swap(u,v) 应该改为 swap(Hd[u], Hd[v]) ,因为 u 和 v 在函数内可能会被修改,而 Hd[u] 和 Hd[v] 对应的重链头节点不会变化。另外,在答案计算时应先将 ret 取模再累加,否则结果可能会溢出。
5. change 函数和 query 函数中用到了 long long 类型,但是在这些函数的返回值类型中没有使用 long long ,需要注意。
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10,inf=0x3f3f3f3f;
template<typename T> inline void read(T&x){
x=0;char c=getchar();bool flag=false;
while(!isdigit(c)){if(c=='-')flag=true;c=getchar();}
while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
if(flag)x=-x;
}
struct SegmentTree{
int l,r;
long long dat,add;
}tree[maxn<<2];
int N,M,R,P,w[maxn],cnt,head[maxn],son[maxn],dep[maxn],
fa[maxn],siz[maxn],top[maxn],Hd[maxn],dfn[maxn],rk[maxn];
struct Edge{
int to,next;
}edge[maxn<<1];
void edge(int U,int V){
edge[++cnt].to=V;
edge[cnt].next=head[U];
head[U]=cnt;
}
void dfs1(int u,int Fa){
fa[u]=Fa;siz[u]=1;dep[u]=dep[Fa]+1;
for(int i=head[u];~i;i=edge[i].next){
int v=edge[i].to;
if(v==Fa)continue;
dfs1(v,u);
siz[u]+=siz[v];
if(siz[v]>siz[son[u]])son[u]=v;
}
}
void dfs2(int u,int Fa,int Top){
top[u]=Top;dfn[u]=++cnt;rk[cnt]=u;Hd[u]=cnt;
if(son[u])dfs2(son[u],u,Top);
for(int i=head[u];~i;i=edge[i].next){
int v=edge[i].to;
if(v==Fa||v==son[u])continue;
dfs2(v,u,v);
}
}
void pushup(int p){
tree[p].dat=tree[p<<1].dat+tree[p<<1|1].dat;
}
void build(int l,int r,int p){
tree[p].l=l;tree[p].r=r;
if(l==r){tree[p].dat=w[rk[l]];return;}
int mid=(l+r)>>1;
build(l,mid,p<<1);
build(mid+1,r,p<<1|1);
pushup(p);
}
void pushdown(int p){
if(!tree[p].add)return;
tree[p<<1].add+=tree[p].add;
tree[p<<1].add%=P;
tree[p<<1|1].add+=tree[p].add;
tree[p<<1|1].add%=P;
long long k=tree[p].add;
tree[p<<1].dat+=(tree[p<<1].r-tree[p<<1].l+1)*k;
tree[p<<1|1].dat+=(tree[p<<1|1].r-tree[p<<1|1].l+1)*k;
tree[p].add=0;
}
void change(int p,int l,int r,int k){
if(l<=tree[p].l&&tree[p].r<=r){
tree[p].dat+=(tree[p].r-tree[p].l+1)*k;
tree[p].add+=k;
tree[p].add%=P;
return;
}
pushdown(p);
int mid=(tree[p].l+tree[p].r)>>1;
if(l<=mid)change(p<<1,l,r,k);
if(mid<r)change(p<<1|1,l,r,k);
pushup(p);
}
long long query(int p,int l,int r){
if(l<=tree[p].l&&tree[p].r<=r)return tree[p].dat;
pushdown(p);
int mid=(tree[p].l+tree[p].r)>>1;long long ans=0;
if(l<=mid)ans+=query(p<<1,l,r);
if(mid<r)ans+=query(p<<1|1,l,r);
return ans;
}
void addTree(int u,int v,int w){
while(top[u]!=top[v]){
if(dep[top[u]]<dep[top[v]])swap(u,v);
change(1,dfn[top[u]],dfn[u],w);
u=fa[top[u]];
}
if(dep[u]>dep[v])swap(u,v);
change(1,dfn[u],dfn[v],w);
}
long long queryTree(int u,int v){
long long ans=0;
while(top[u]!=top[v]){
if(dep[top[u]]<dep[top[v]])swap(u,v);
ans+=query(1,dfn[top[u]],dfn[u]);
u=fa[top[u]];
}
if(dep[u]>dep[v])swap(u,v);
ans+=query(1,dfn[u],dfn[v]);
return ans%P;
}
int main(){
memset(head,-1,sizeof(head));
read(N),read(M),read(R),read(P);
for(int i=1;i<=N;++i)read(w[i]);
for(int i=1;i<N;++i){
int u,v;read(u),read(v);
edge(u,v);edge(v,u);
}
dfs1(R,0);dfs2(R,0,R);
build(1,N,1);
while(M--){
int op,x,y,z;read(op);
if(op==1){
read(x),read(y),read(z);
addTree(x,y,z);
}
else{
read(x),read(y);
printf("%lld\n",queryTree(x,y));
}
}
return 0;
}2023-06-03T20:57:32 点赞:0