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

北京协会网站建设/中文网站排名

北京协会网站建设,中文网站排名,在网站建设中要注意的问题,小程序开发流程步骤这个题一看就是树剖的模型 但是有一些问题&#xff0c;比如权值的乘机太大了&#xff0c;可能会爆long long 一种解决的方法&#xff1a;我们考虑到&#xff0c;v<10^18 所以最多经过60条大于1的边 对于权值为1的边我们可以用一个并查集合并&#xff08;注意只会改小&#x…

这个题一看就是树剖的模型

但是有一些问题,比如权值的乘机太大了,可能会爆long long

一种解决的方法:我们考虑到,v<=10^18 所以最多经过60条大于1的边

对于权值为1的边我们可以用一个并查集合并(注意只会改小)

但是这种方法不好想,我们还是考虑树剖

若权值>=10^18 我们可以直接将其变为一个特殊的值(例如-1)表示“足够大”,这种情况直接输出0

若不够,我们有一个结论: [[a/b]/c] = [a/bc] 这个是显然的,所以可以将路径上的权值乘机求出并直接得到答案

CODE比较长但是比较好想(mul()这里做乘法的时候会爆long long ,一种方法是用除法,但是效率比较低所以用了int128)

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 100010
#define mid (l+r>>1) 
#define LL __int128
#define M 1000000000000000000ll 
using namespace std;
struct Edge{ int v,nt; LL c; } G[N<<1];
int h[N],sz[N],son[N],d[N],f[N],rk[N];
int top[N],b[N],n,m,cnt=0,clk=0; LL w[N<<2],val[N]; long long C,D;
LL mul(LL x,LL y){ return ~x&&~y?(x*y>=M?-1:x*y):-1; }
inline void adj(int x,int y,LL c){G[++cnt]=(Edge){y,h[x],c}; h[x]=cnt;
}
void dfs(int x,int p){f[x]=p; sz[x]=1; d[x]=d[p]+1;for(int v,i=h[x];i;i=G[i].nt)if((v=G[i].v)!=p){dfs(v,x); val[v]=G[i].c;sz[x]+=sz[v];if(sz[v]>sz[son[x]]) son[x]=v;}
}
void dijk(int x,int p){b[x]=++clk; rk[clk]=x; top[x]=p;if(son[x]) dijk(son[x],p);for(int v,i=h[x];i;i=G[i].nt)if((v=G[i].v)!=f[x] && v!=son[x]) dijk(v,v);
}
void build(int l,int r,int x){if(l==r){ w[x]=val[rk[l]]; return; }build(l,mid,x<<1);build(mid+1,r,x<<1|1);w[x]=mul(w[x<<1],w[x<<1|1]); 
}
void update(int l,int r,int x,int p,LL k){if(l==r){ w[x]=k; return; }if(p<=mid) update(l,mid,x<<1,p,k); else update(mid+1,r,x<<1|1,p,k);w[x]=mul(w[x<<1],w[x<<1|1]);
}
LL query(int l,int r,int x,int L,int R){if(L<=l && r<=R) return w[x];LL ans=1;if(L<=mid) ans=mul(ans,query(l,mid,x<<1,L,R));if(mid<R) ans=mul(ans,query(mid+1,r,x<<1|1,L,R));return ans;
}
LL gLca(int x,int y){LL A=1;for(;top[x]!=top[y]&&~A;y=f[top[y]]){if(d[top[x]]>d[top[y]]) swap(x,y);A=mul(A,query(1,n,1,b[top[y]],b[y]));}if(d[x]>d[y]) swap(x,y);A=mul(A,query(1,n,1,b[x]+1,b[y]));return A;
}
int main(){freopen("walk.in","r",stdin);freopen("walk.out","w",stdout);scanf("%d%d",&n,&m);for(int x,y,i=1;i<n;++i){scanf("%d%d%lld",&x,&y,&C);adj(x,y,C); adj(y,x,C);}dfs(1,0); dijk(1,1); build(1,n,1);for(int o,x,y;m--;){scanf("%d",&o);if(o==1){scanf("%d%d%lld",&x,&y,&C);D=gLca(x,y);if(D==-1 || D>C) puts("0");else printf("%lld\n",C/D);} else {scanf("%d%lld",&x,&C);y=G[x<<1].v; x=G[(x<<1)-1].v;if(f[y]==x) x=y;update(1,n,1,b[x],C);}}
}

转载于:https://www.cnblogs.com/Extended-Ash/p/9477263.html

http://www.jmfq.cn/news/4868443.html

相关文章:

  • 政府门户网站建设总结/为什么不建议去外包公司上班
  • 网站管理员登陆域名/如何用google搜索产品关键词
  • 福州小程序开发案例/广州seo运营
  • 邯郸移动网站制作/公关负面处理公司
  • 关键词seo公司真实推荐/南宁关键词优化服务
  • 义乌婚介网站建设/seo站长论坛
  • 效果图网站都有哪些?/营销计划书7个步骤
  • 宿州官方网站建设/有人看片吗免费观看视频
  • 怎么做ps4的视频网站/百度推广找谁做靠谱
  • 网站建设及推广方案ppt模板/营销方式有哪些
  • 郑州网站设计网站/深圳seo培训
  • 河南平台网站建设找哪家/国外引擎搜索
  • 专门做二手手机的网站吗/seo黑帽教程视频
  • 一女被多男做的视频网站/武汉seo网站推广培训
  • 建网站怎么备案/百度移动首页
  • 保定网站制作公司/优化是什么意思
  • 网站的说服力/推广关键词如何优化
  • 公司网站建设费分录/seo推广代运营
  • 禁止粘贴的网站/公司建立网站的步骤
  • 深圳找网站建设/网站优化是做什么的
  • 装饰设计学校/青岛网站seo分析
  • 静态网站站内搜索/百度渠道开户哪里找
  • 南宁网站制作费用/网络营销推广难做吗
  • 成都网站关键字优化/免费平台推广
  • 淘宝实时优惠券网站怎么做的/推销一个产品的方案
  • 成都建设网站分享/朋友圈广告30元 1000次
  • 网站开发的实验心德/网站项目开发流程
  • 单位网站建设收费标准/百度账号设置
  • 做钢管用哪个门户网站/百度热搜榜排名昨日
  • 购物网站的后台做哪些东西/360推广登录入口