hdu5044 Tree 上海网络赛1003 LCA+输入输出外挂

基于STM32+RFID设计的宿舍检修管理系统 设计一个上位机,用来管理查看维修检修信息,当维修寝室的设备或者检修完成时,通过STM32上的RC522刷一下这个寝室的IC卡,识别这是哪个寝室,识别成功后在软件上弹出一个对话框,填写本次维修或者检修的事件,填写完毕点击提交即可。... 阅读详情

Tree

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 668    Accepted Submission(s): 141


Problem Description
You are given a tree (an acyclic undirected connected graph) with N nodes. The tree nodes are numbered from 1 to N

There are N - 1 edges numbered from 1 to N - 1.

Each node has a value and each edge has a value. The initial value is 0.

There are two kind of operation as follows:

● ADD1 u v k: for nodes on the path from u to v, the value of these nodes increase by k.

● ADD2 u v k: for edges on the path from u to v, the value of these edges increase by k.

After finished M operation on the tree, please output the value of each node and edge.
 

Input
The first line of the input is T (1 ≤ T ≤ 20), which stands for the number of test cases you need to solve.

The first line of each case contains two integers N ,M (1 ≤ N, M ≤105),denoting the number of nodes and operations, respectively.

The next N - 1 lines, each lines contains two integers u, v(1 ≤ u, v ≤ N ), denote there is an edge between u,v and its initial value is 0.

For the next M line, contain instructions “ADD1 u v k” or “ADD2 u v k”. (1 ≤ u, v ≤ N, -105 ≤ k ≤ 105)
 

Output
For each test case, print a line “Case #t:”(without quotes, t means the index of the test case) at the beginning.

The second line contains N integer which means the value of each node.

The third line contains N - 1 integer which means the value of each edge according to the input order.
 

Sample Input
2 4 2 1 2 2 3 2 4 ADD1 1 4 1 ADD2 3 4 2 4 2 1 2 2 3 1 4 ADD1 1 4 5 ADD2 3 2 4
 

Sample Output
Case #1: 1 1 0 1 0 2 2 Case #2: 5 0 0 5 0 4 0

  之前也就做了一道类似LCA的题,对LCA还不是很熟悉,比赛的时候感觉是LCA但是不会写。

  看了题解,仔细想想这题其实真不难。。就是记录每个操作,最后从叶子到根网上遍历一遍,每次把要修改的值传上去就行了。。

  对点u,v加w就是:add1[u]+=w,add1[v]+=w,x=lca(u,v),add[x]-=w(因为传上来两个w),因为到了x之后不能再往上传,设sub[x]+=x,每个点的add值减去sub值就是要往上传的值。

  设add2[u]为u和fa[u]的边要增加的值,那么对边操作add2[u]+=w,add2[v]+=w,add2[x]-=2*w。

  因为这题要按输入的顺序输出边的权值,那么还要记录u和u的父节点之间的边的编号。

  注意要输入输出外挂才能过。。。。。。。

#include<iostream>
#include<algorithm>
#include<queue>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<set>
#include<map>
#include<stack>
#define INF 0x3f3f3f3f
#define MAXN 100010
#define LOGMAXN 20
#define MAXM 1500
#define MOD 1000000007
#define MAXNODE 8*MAXN
#define eps 1e-10
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
typedef long long LL;
int T,N,M,L[MAXN],anc[MAXN][LOGMAXN],fa[MAXN],e[MAXN],deg[MAXN];
LL add1[MAXN],add2[MAXN],sub[MAXN],node[MAXN],edge[MAXN];
char str[10];
struct Edge{
    int to,id;
    Edge(){}
    Edge(int to,int id):to(to),id(id){}
};
vector<Edge> G[MAXN];
void DFS(int u,int f,int level){
    L[u]=level;
    int len=G[u].size();
    for(int i=0;i<len;i++){
        int v=G[u][i].to;
        if(v!=f){
            deg[u]++;
            fa[v]=u;
            e[v]=G[u][i].id;
            DFS(v,u,level+1);
        }
    }
}
void lca_init(){
    for(int i=1;i<=N;i++){
        anc[i][0]=fa[i];
        for(int j=1;(1<<j)<=N;j++) anc[i][j]=-1;
    }
    for(int j=1;(1<<j)<=N;j++)
        for(int i=1;i<=N;i++) if(anc[i][j-1]!=-1){
            int a=anc[i][j-1];
            anc[i][j]=anc[a][j-1];
        }
}
int lca(int p,int q){
    if(L[p]<L[q]) swap(p,q);
    int log;
    for(log=0;(1<<log)<=L[p];log++);
    log--;
    for(int i=log;i>=0;i--) if(L[p]-(1<<i)>=L[q]) p=anc[p][i];
    if(p==q) return p;
    for(int i=log;i>=0;i--) if(anc[p][i]!=-1&&anc[p][i]!=anc[q][i]){
        p=anc[p][i];
        q=anc[q][i];
    }
    return fa[p];
}
void solve(){
    queue<int> q;
    for(int i=1;i<=N;i++) if(!deg[i]) q.push(i);    //叶子节点
    while(!q.empty()){
        int x=q.front();
        q.pop();
        node[x]=add1[x];
        add1[x]-=sub[x];
        edge[e[x]]=add2[x];
        int f=fa[x];
        add1[f]+=add1[x];
        add2[f]+=add2[x];
        if(!(--deg[f])) q.push(f);  //子节点都处理完了,成为叶子节点
    }
}
template <class T>
inline bool scan_d(T &ret) {
    char c; int sgn;
    if(c=getchar(),c==EOF) return 0; //EOF
    while(c!='-'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-')?-1:1;
    ret=(c=='-')?0:(c-'0');
    while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
    ret*=sgn;
    return 1;
}
inline void out(long long x) {
    if(x>9) out(x/10);
    putchar(x%10+'0');
}
int main(){
    freopen("in.txt","r",stdin);
    int cas=0;
    scan_d(T);
    while(T--){
        scan_d(N);
        scan_d(M);
        for(int i=1;i<=N;i++) G[i].clear();
        int u,v;
        for(int i=1;i<=N-1;i++){
            scan_d(u);
            scan_d(v);
            G[u].push_back(Edge(v,i));
            G[v].push_back(Edge(u,i));
        }
        memset(fa,0,sizeof(fa));
        memset(deg,0,sizeof(deg));
        DFS(1,-1,0);
        lca_init();
        memset(add1,0,sizeof(add1));
        memset(add2,0,sizeof(add2));
        memset(sub,0,sizeof(sub));
        while(M--){
            int u,v,w;
            scanf("%s",str);
            scan_d(u);
            scan_d(v);
            scan_d(w);
            int x=lca(u,v);
            if(str[3]=='1'){
                add1[u]+=w;
                add1[v]+=w;
                add1[x]-=w;
                sub[x]+=w;
            }
            else{
                add2[u]+=w;
                add2[v]+=w;
                add2[x]-=w*2;
            }
        }
        solve();
        printf("Case #%d:\n",++cas);
        for(int i=1;i<=N;i++){
            if(i>1) printf(" ");
            out(node[i]);
        }
        puts("");
        if(N==1) puts("");
        else{
            for(int i=1;i<=N-1;i++){
                if(i>1) printf(" ");
                out(edge[i]);
            }
            puts("");
        }
    }
    return 0;
}


SAP 标准 CDS View 到底能不能用 CDS Extension View 扩展,我们在项目里应该这样判断 文章摘要:判断SAP标准CDS视图(如A_PRODUCT)能否扩展字段,不能仅凭命名或@Metadata.allowExtensions判断,需检查DDL源码中的@AbapCatalog.viewEnhancementCategory值。#PROJECTION_LIST允许扩展字段,#NONE则禁止。聚合视图需额外包含#GROUP_BY,UNION视图需#UNION。CDS View Extension用于新增字段,Metadata Extension仅用于添加注解。在ABAP Cloud环境中还需检查AP 阅读详情

相关推荐

深度学习|卷积神经网络

介绍卷积神经网络基本理论,包括卷积层、池化层和全连接层,并阐述LeNet卷积神经网络的构建过程。

weixin_58243219的博客 5720

hdu 5044 树区间操作最后输出/ lca+dfs

题意:一棵树,俩种操作:1 有路径上的所有点加vi,2所有边加vi。  先离线求出所有询问的lca,再遍历询问一次,点+vi,lca-2*vi ,最后dfs从叶子扫上来一次,最后再祖先点补上即可。用了输入挂。复杂度(n+m). #pragma comment(linker,"/STACK:10240000000000,10240000000000") #include #include #in

天羽屠龙舞 1399

别再搞混了!Vue3里xgplayer播放FLV视频与FLV直播流,配置到底差在哪?

本文详细解析了在Vue3项目中使用xgplayer播放FLV视频与FLV直播流的配置差异,帮助开发者避免常见错误。通过对比点播与直播的核心协议差异、插件选择及配置参数,提供实战代码示例和性能优化技巧,确保流畅播放体验。特别针对直播流场景,深入讲解专属配置和问题排查方法。

weixin_28687331的博客 150

HDU 5044 Tree(LCA)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5044 题意:对于一棵树,可以进行两种操作: ADD1 U V K:将U到V结点路上的结点的权值都增加K; ADD2 U V K:将U到V结点路上的边的权值都增加K; 最后输出所有点和所有边的权值。 思路:思路出自http://blog.youkuaiyun.com/hongrock/article...

Tongqi 797

【SpringBoot 3.x 第51节】带你玩转 GraalVM Native Image:启动快到飞起,内存省到心疼,你还不试试?

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章

**My Coding Family** 1304

手把手打通全流程:在华为昇腾310/Atlas 200DK上实现深度学习模型从移植到部署

通过以上步骤,你已成功在华为昇腾310 Atlas 200DK上完成深度学习模型的移植与推理。这一流程可复用到目标检测、语义分割等其他任务,快去尝试将自己的AI模型部署到昇腾设备上,打造属于你的边缘智能应用吧!上部署深度学习模型,这篇教程将带你走完从模型转换到推理运行的完整流程。无需担心技术壁垒,我们以通俗易懂的方式拆解每一步,让你轻松在昇腾嵌入式设备上实现AI应用。是专为边缘AI设计的高性能处理器,Atlas 200DK是其开发板形态,能高效运行图像分类、目标检测等深度学习任务。

FJN110的博客 181

HDU5044【LCA+差分】

思路: 树以1为根节点,然后向下DFS 两个差分 ADD1 操作,对节点 (u, v) 就是 他们的两个各自节点+w, 然后节点LCA(u, v) - w,LCA(u, v)的父节点-w,然后DFS一遍就能求出来 ADD2 操作就更简单了,边的权值都放在节点上,然后直接在LCA(u, v)上 - 2*w,另外u, v都+w. 但是很卡常数。//#pragma comment(li

ONE MORE TRY 518

07RK3568 I2S主模式 FPGA

RK3568与fpga通过i2s0连接,fpga连接音频芯片ES8388,RK为i2s主模式。调试时发现可正常采集来自fpga的数据。不可发送数据至fpga。由于i2s后连接fpga这里用了Rockchip的dummy-codec,一个虚拟的编解码器。

qq_39451352的博客 302

HDU 5044 Tree(LCA ,2014上海网络赛1003)

题目:Tree 题意:又是yi'g

hongrock的专栏 1109

红队攻防渗透技术实战流程:云安全之云原生安全:特权模式和挂载模式

红队云攻防实战1. 什么是云 1. 什么是云

HACKONE的博客 572

selenium绕过检测,规避检测

现在不少大网站有对selenium采取了监测机制。比如正常情况下我们用浏览器访问淘宝等网站的 window.navigator.webdriver的值为 undefined或者为false。而使用selenium访问则该值为true。那么如何解决这个问题呢?我们正常浏览器登录查看,window.navigator.webdriver的值为false我们通过selenium打开的网页,测试,可见window.navigator.webdriver的值为true。

景天科技苑 1万+

HDU5044 2014上海网络赛1003 tree

Tree Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1024    Accepted Submission(s): 188 Problem Description You are given a tre

、Poppy 881

uniapp - 实现移动端H5微信公众号网页内置浏览器中预览和下载word文档(doc)、excel表格(xls)、ppt文稿、pdf文档等文件,微信内部打开预览和下载到本地详教程,兼容安卓苹果手机

uni-app,微信公众号,h5,移动端,web平台端,网页,网站,Uniapp微信公众号H5网站,内置浏览器下载文档,如何在微信浏览器中预览office文件,word文档,excel文档,pdf文档,ppt文档,office,微信内置浏览器下载文件,下载文件,在微信浏览器里面实现下载任意文件,H5需要在微信浏览器中下载excel文件,UniApp实现网页在微信内置浏览器中下载文件详细教程,安卓点击下载会提示打开浏览器,后端返回流文件,如何解决无法下载文件,跳转至浏览器下载文件,发送到电脑微信,安卓,苹果,

🏆 前端领域优质创作者 1万+

uva11996 - Jewel Magic 伸展树

Problem J Jewel Magic I am a magician. I have a string of emeralds and pearls. I may insert new jewels in the string, or remove old ones. I may even reverse a consecutive part of the string. At

7527

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

堆 优先队列

首先看完全二叉树的定义: 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。   如果一个完全二叉树的某个结点值都不大于或小于他的父结点,那就叫做堆。根结点是所有结点里最大的叫大根堆,最小的叫小根堆。   比如:  9-1 a是大根堆,9-2 a是小根堆,剩下的都不是堆(因为不是完全二叉树)

2234

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

uva10410 - Tree Reconstruction BFS和DFS重建树

You have just finished a compiler design homework question whereyou had to find the parse tree of an expression. Unfortunately youleft your assignment in the library, but luckily your friend picked it

1221

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

uva12206 - Stammering Aliens 哈希LCP和后缀数组两种做法

Dr. Ellie Arroway has established contact with an extraterrestrialcivilization. However, all efforts to decode their messages have failed so farbecause, as luck would have it, they have stumbled upon

1034

uva12003 - Array Transformer 分块结构

Write a program to transform an array A[1], A[2], . . . , A[n] according to m instructions. Each instruction(L, R, v, p) means: First, calculate how many numbers from A[L] to A[R] (inclusive) are stri

929

并查集

在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。   有n个元素,一开始每个元素都是一个集合,我们用p[x]表示x的父亲结点,当p[x]=x时是根结点,那么一开始p[i]=i(i=1...n)。如果想把两个集合合并,只需要把一个集合的根结点接到另一个集合的根结点下就行了(我们只

919

uva12232 - Exclusive-OR 加权并查集

You are not given n non-negative integers X0, X1,..., Xn-1 less than 220, but they do exist, and their values never change. I'll gradually provide you some facts about them, and ask you some ques

883

uva10829 - L-Gap Substrings 后缀数组+RMQ

Problem J L-Gap Substrings Input:StandardInput Output: Standard Output If a string is in the form UVU, where Uis not empty, and V has exactly L characters, we say UVUis an L-Gap string. For exa

876

哈夫曼树

给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。树的带权路径长度规定为所有叶子结点的带权路径长度之和。   1*3+2*3+3*2+4*1  = (1+2)+(1+2+3)+(1+2+3+4) =19   整个树的带权

869

uva11992 - Fast Matrix Operations 区间修改 二维线段树

//修改、查询区间均为[y1,y2] struct IntervalTree{ //同一结点先考虑set,再考虑add //sumv[o],minv[o],maxv[o]保存的是以o为根结点的树内修改后的和,最大,最小值,o的父节点及以上结点修改的情况没有包括在里面 int setv[MAXNODE],addv[MAXNODE],sumv[MAXNODE],minv[MAX

860

hdu 1542 upcoj 2540 矩形面积并 线段树

几天没AC了 。。。太爷跟我说什么有个线段树的题很简单,可以做一下。。于是被坑了。。   那个题是upcoj 2540,求一堆矩形重叠2次部分的面积,现在我还只会线段树简单的点修改区间修改,呵呵呵一看这题我果断不会做。。百度了一下,看了太爷给的一个不错的线段树汇总http://www.notonlysuccess.com/index.php/segment-tree-complete/,算是对这

798

离散化+树状数组 求逆序对数

除了归并排序,也可以用树状数组求逆序对数。先看 POJ 2299 Ultra-QuickSort Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 32606   Accepted: 11633 Description In this problem, you have

774

uva11525 - Permutation 线段树加速康托展开

Problem F Permutation Input: Standard Input Output: StandardOutput   Given N and K find the N’thpermutation of the integers from 1 to K when those permutations arelexicographically ordered.  N s

755
上一篇: 最小树形图 朱刘算法
下一篇: Dinic+当前弧优化
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值