由最后一句话可知,这个图为一个环。

那么用树状数组保存每一条边的值,然后每一次询问找u到v的总值就行,然后和取反比较(即总长度减去这个值,就是另一个方向的)。输出比较大的。

更改值也容易。

先处理一下每个点的位置,毕竟1 2 3 4 不一定连接在一起。

我的算法对n=1,n=2会有问题,所以特判一下。

当时时间不够查代码了,说到底还是菜。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;
#define LL long long
const int maxn=2e5+55;int n,m;
int head[maxn],nxt[maxn],to[maxn],sz;
int w[maxn];struct node
{int u,v,w;
}len[maxn];void add(int u,int v,int ww)
{nxt[sz]=head[u];to[sz]=v;w[sz]=ww;head[u]=sz++;
}
int tm;
int fsn[maxn];
int vis[maxn];
void dfs(int u,int pre)
{if(fsn[u]) return;fsn[u]=++tm;for(int i=head[u];~i;i=nxt[i]){if(vis[i]) continue;int v=to[i];if(tm==n) return;if(v==pre) continue;vis[i]=1;dfs(v,u);}
}int sum[maxn];int lowbit(int x)
{return x&-x;
}void addshu(int x,int p)
{for(int i=x;i<=n;i+=lowbit(i)){sum[i]+=p;}
}int query(int x)
{int ans=0;for(int i=x;i>=1;i-=lowbit(i)){ans+=sum[i];}return ans;
}int main()
{int T;scanf("%d",&T);while(T--){sz=0;tm=0;int SUM=0;scanf("%d %d",&n,&m);memset(vis,0,sizeof vis);for(int i=1;i<=n;i++) head[i]=-1,sum[i]=0,fsn[i]=0;for(int i=1;i<=m;i++){int u,v,ww;scanf("%d %d %d",&u,&v,&ww);add(u,v,ww);add(v,u,ww);len[i].u=u;len[i].v=v;len[i].w=ww;SUM+=ww;}dfs(1,-1);for(int i=1;i<=m;i++){int u=fsn[len[i].u];int v=fsn[len[i].v];if(u>v) swap(v,u);if(u==1&&v==n)addshu(1,len[i].w);elseaddshu(v,len[i].w);len[i].u=u;len[i].v=v;}int q;scanf("%d",&q);while(q--){int kind;scanf("%d",&kind);if(kind==1){int x,y;scanf("%d %d",&x,&y);int chang=y-len[x].w;int u=len[x].u;int v=len[x].v;SUM+=chang;if(u==1&&v==n)addshu(1,chang);elseaddshu(v,chang);len[x].w=y;}else{int u,v;scanf("%d%d",&u,&v);u=fsn[u];v=fsn[v];if(u>v) swap(u,v);if(u==v||n==1){printf("%d\n",SUM);}else{if(n==2){printf("%d\n",max(len[1].w,len[2].w));continue;}int now=query(v)-query(u);//printf("*%d %d\n",query(v),query(u));printf("%d\n",max(now,SUM-now));}}}}}

ZUFE 2017院赛 - Problem M: 图样图森破(树状数组)相关推荐

  1. ZUFE 2017院赛 - Problem K: Jelly与狗头人的地下世界 (DP)

    一个简单的DP. 只能往下和往右传递. 对DP不够敏感,打院赛的时候用记忆化搜索过的,浪费不少时间. #include <iostream> #include <stdio.h> ...

  2. [2020.11.27NOIP模拟赛]中位数之中位数【二分,树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/U142585?contestId=37855 题目大意 nnn个数,求所有区间中位数的中位数. 解题思路 二分一个答 ...

  3. 「模拟赛20180307」三元组 exclaim 枚举+树状数组

    题目描述 给定 \(n,k\) ,求有多少个三元组 \((a,b,c)\) 满足 \(1≤a≤b≤c≤n\)且\(a + b^2 ≡ c^3\ (mod\ k)\). 输入 多组数据,第一行数据组数\ ...

  4. [2020.10.30NOIP模拟赛]字符串水题【SA,树状数组】

    正题 题目大意 一个字符串SSS. 若干个询问,每次询问一个串TTT和l,rl,rl,r.询问有多少个TTT和SSS的公共子串满足和为[l,r][l,r][l,r] 解题思路 考虑枚举子串左端,那么右 ...

  5. 【洛谷】NOIP提高组模拟赛Day2【动态开节点/树状数组】【双头链表模拟】

    U41571 Agent2 题目背景 炎炎夏日还没有过去,Agent们没有一个想出去外面搞事情的.每当ENLIGHTENED总部组织活动时,人人都说有空,结果到了活动日,却一个接着一个咕咕咕了.只有不 ...

  6. 2017西安交大ACM小学期数据结构 [又是树状数组、异或]

    Problem F 发布时间: 2017年6月28日 10:31   最后更新: 2017年6月29日 21:35   时间限制: 2000ms   内存限制: 64M 描述 给定一个n×m的矩形, ...

  7. 2017西安交大ACM小学期数据结构 [树状数组 离散化]

    Problem E 发布时间: 2017年6月28日 12:53   最后更新: 2017年6月29日 21:35   时间限制: 1000ms   内存限制: 64M 描述 给定一个长度为n的序列a ...

  8. 2017西安交大ACM小学期数据结构 [树状数组,极大值]

    Problem D 发布时间: 2017年6月28日 10:51   最后更新: 2017年6月28日 16:38   时间限制: 1000ms   内存限制: 32M 描述 给定一个长度为n的序列a ...

  9. 2017西安交大ACM小学期数据结构 [树状数组]

    Problem C 发布时间: 2017年6月28日 11:38   最后更新: 2017年6月28日 16:38   时间限制: 1000ms   内存限制: 32M 描述 给定一个长度为n的序列a ...

  10. HDU - 5877 Weak Pair 2016 ACM/ICPC 大连网络赛 J题 dfs+树状数组+离散化

    题目链接 You are given a rootedrooted tree of NN nodes, labeled from 1 to NN. To the iith node a non-neg ...

最新文章

  1. Selenium2+python自动化24-js处理富文本(带iframe)
  2. HDU2215(最小圆覆盖问题)
  3. VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
  4. 2016级算法期末上机-F.中等·AlvinZH's Fight with DDLs II
  5. u盘安装linux 提示no such device_Linux 网络基础设计
  6. flask redis_在Flask应用程序中将Redis队列用于异步任务
  7. 做一个项目,平时都用到哪些工具提高效率(下)
  8. unity模型任意无限切割插件
  9. 人们的Live Meeting系列 (floyd)
  10. android生成kml和kmz
  11. HTML开发者工具抓取所有图片,利用开发者工具,截取网页高清长图
  12. var模型可以用spss做吗_VAR模型一般几个变量
  13. 【STM32F429开发板用户手册】第2章 STM32F429的开发环境搭建
  14. mv背景html代码,深入浅出MV*框架源码(三):Moon的html-code实现
  15. 原来iPhone自带Respring(注销重启桌面)功能
  16. 用html代码画玫瑰花
  17. 利用区块链技术助力中国影视产业的发展升级
  18. 信息系统项目管理师案例分析万金油
  19. 前端网页配色网站推荐
  20. 按键控制步进电机转速(led闪烁)学习心得

热门文章

  1. arduino 有源 蜂鸣器_Arduino控制蜂鸣器发声
  2. 红警3 联网对战平台
  3. Win10系统盘MBR无损数据转GPT,亲测有效
  4. 任务管理器被管理员禁用,命令提示符被禁用,注册表被禁用,组策略被禁用的解决办法
  5. 常用技术网站2017-2018
  6. python处理wps表格数据匹配_wps2个excel表格数据匹配-Wps表格怎么自动匹配我需要的数值...
  7. 一周极客热文:看马云李彦宏马明哲等大佬手绘未来图
  8. 查看oracle归档日志内容,查看归档日志内容
  9. favicon.ico图标在线制作+ico下载
  10. 启程Objectvie-C(绿柠檬学习笔记)