原文链接https://www.cnblogs.com/zhouzhendong/p/HDU4858.html

题目传送门 - HDU4858

题意

  给定一个无向图 $n$ 。有 $m$ 条边。

  每一个点有一个权值。

  有 $Q$ 次操作,有两种类型:

  1.  给一个点的权值加上 $v$ 。

  2.  对于每条关于 $x$ 的无向边,累加另一端点的权值,并输出最终的累加和。(可能会有重边)

  $n\leq 100000, m\leq n+10$ ,  $Q$ 数据范围不详。

题解

  这题本来是个分块题。

  但是,由于 $m\leq n+10$ ,我们就有了一种复杂度正确的简易算法。

  我们先 dfs 跑出原图的一个生成树。于是剩余的边就最多 10 条了。

  我们对于每一个点维护一下除父亲外的权值和,以及单点权值和。

  询问的时候就是第一种信息和父亲的单点权值和加起来。

  修改的时候,首先修改一下自己的单点权值和,然后修改一下父亲的单点权值和,然后暴力修改非树边所指向的点的“除父亲外的权值和”,即可。

代码

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N=100025;
  4. struct Gragh{
  5. static const int M=N*2;
  6. int cnt,y[M],nxt[M],fst[N];
  7. void clear(){
  8. cnt=1;
  9. memset(fst,0,sizeof fst);
  10. }
  11. void add(int a,int b){
  12. y[++cnt]=b,nxt[cnt]=fst[a],fst[a]=cnt;
  13. }
  14. }g,g2;
  15. int T,n,m,Q,fa[N],flag[N],vis[N],v[N],sontot[N];
  16. void dfs(int x,int pre){
  17. fa[x]=pre;
  18. vis[x]=1;
  19. for (int i=g.fst[x];i;i=g.nxt[i])
  20. if (!vis[g.y[i]]){
  21. flag[i>>1]=1;
  22. dfs(g.y[i],x);
  23. }
  24. else if (!flag[i>>1]){
  25. flag[i>>1]=1;
  26. g2.add(x,g.y[i]);
  27. g2.add(g.y[i],x);
  28. }
  29. }
  30. int main(){
  31. scanf("%d",&T);
  32. while (T--){
  33. scanf("%d%d",&n,&m);
  34. g.clear();
  35. for (int i=1,a,b;i<=m;i++){
  36. scanf("%d%d",&a,&b);
  37. g.add(a,b);
  38. g.add(b,a);
  39. }
  40. memset(fa,0,sizeof fa);
  41. memset(flag,0,sizeof flag);
  42. memset(vis,0,sizeof vis);
  43. memset(sontot,0,sizeof sontot);
  44. memset(v,0,sizeof v);
  45. g2.clear();
  46. dfs(1,0);
  47. scanf("%d",&Q);
  48. while (Q--){
  49. int opt,x,y;
  50. scanf("%d",&opt);
  51. if (opt==0){
  52. scanf("%d%d",&x,&y);
  53. if (fa[x])
  54. sontot[fa[x]]+=y;
  55. v[x]+=y;
  56. for (int i=g2.fst[x];i;i=g2.nxt[i])
  57. sontot[g2.y[i]]+=y;
  58. }
  59. else {
  60. scanf("%d",&x);
  61. printf("%d\n",v[fa[x]]+sontot[x]);
  62. }
  63. }
  64. }
  65. return 0;
  66. }

  

HDU4858 项目管理 其他的更多相关文章

  1. HDU-----(4858)项目管理(模拟)

    项目管理 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. hdu4858 项目管理 bestcoder round1 B

    唔..弱弱的暴力水果 0操作时,将v加到u上,能够直接把v加到u相连的点上,这样输出时直接输出要求点的值. 布这种话反正我是超时了.. #include<cstdio> #include& ...

  3. 聊聊Unity项目管理的那些事:Git-flow和Unity

    0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了.敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理.项目从最初使用svn到之后的Git One Track策略再到现在的GitFlo ...

  4. 【组织级项目管理】P2 MSP P3O

    组织级项目管理--有你,有我,有大家 在过去的2年,无论对于企业来讲,还是对于我们个人都有很多大脑的冲击,有几个词大家应该特别耳熟能详:转型,变革,敏捷,互联网+,组织的项目化管理等.就是这些让我们的 ...

  5. 【项目管理】GitHub使用操作指南

    GitHub使用操作指南 作者:白宁超 2016年10月5日18:51:03> 摘要:GitHub的是版本控制和协作代码托管平台,它可以让你和其他人的项目从任何地方合作.相对于CVS和SVN的联 ...

  6. Atitit.attilax软件研发与项目管理之道

    Atitit.attilax软件研发与项目管理之道 1. 前言4 2. 鸣谢4 3. Genesis 创世记4 4. 软件发展史4 5. 箴言4 6. 使徒行传 4 7. attilax书 4 8. ...

  7. 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的

    感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...

  8. 5、项目间的沟通协调 - PMO项目管理办公室

    沟通是人类所具备的优良而有一定技巧的一种方式.但是,沟通也是PMO项目管理办公室中所有项目组必须建立起来的能力,也是PMO项目管理办公室日常所需要进行的一项工作内容. 一.项目间的沟通: PMO项目管 ...

  9. 4、项目的培训 - PMO项目管理办公室

    培训是一个重要的内容,在公司内部就有相关的培训.对于PMO项目管理办公室来说,就是相关的项目的技术和业务的培训,以期让项目组人员能够快速的学习好项目业务内容和所需要使用到的技术内容,然后尽快的进入项目 ...

随机推荐

  1. java后台发送请求并获取返回值

    项目中需要前端发送请求给后端,而后端需要从另一个平台中取数据然后再透传给前端,通过下述代码将其实现.在此记录一下. package com.autotest.utils; import java.io ...

  2. Go append 省略号

    1 前言 Golang append加...用法缘由 2 代码 type Product struct { ID int64 `json:"id"` Name string `js ...

  3. linux软件安装、rpm操作命令、本地yum配置(有什么用)

    1.yum是什么? yum的全称是yellow dog updater,modified,是一个shell前端软件包管理器;基于RPM包管理,能够从指定的服务器下载RPM包并自动安装,可以自动处理依赖 ...

  4. 一篇文章让你了解Android各个版本的历程

    2008年--至今 Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘:使用widgets实现桌面个性化:在线文件夹(Live Folder)快速浏览在线数据:视频录制和分享:图片上传: ...

  5. Jenkins三.1 配置maven

    maven配置安装下载 wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-b ...

  6. Mysql8.0安装步骤

    Mysql8.0安装步骤 2018年05月10日 14:39:05 93年的香槟 阅读数:19628 标签: mysql 更多 个人分类: 数据库   版权声明:本文为博主原创文章,未经博主允许不得转 ...

  7. Confluence 6 使用 JMX 界面实时监控

    使用 JMX 界面(Java Management Extensions API ),你可以实时的查看你 Confluence 运行实例的状态. JMX 使用的对象被称 MBeans (Managed ...

  8. mongoDB基础使用

    环境交代 操作系统: CentOS 6.8 64位 mongodb: 4.06 安装 官方下载地址:https://www.mongodb.org/dl/linux/x86_64-rhel62 阿里云 ...

  9. Jquery无刷新实时更新表格数据

    html代码: <style> .editbox { display:none } .editbox { font-size:14px; width:70px; background-co ...

  10. 关于在CentOS上,绘图丢失部分中文字的问题

    官方的system.drawing.common 第三方的 zkweb.system.drawing,都用的是libgdiplus 只要是自己编译libgdiplus,都会有这个问题, 问题 : 这里 ...