HDU4858 项目管理 其他
原文链接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 条了。
我们对于每一个点维护一下除父亲外的权值和,以及单点权值和。
询问的时候就是第一种信息和父亲的单点权值和加起来。
修改的时候,首先修改一下自己的单点权值和,然后修改一下父亲的单点权值和,然后暴力修改非树边所指向的点的“除父亲外的权值和”,即可。
代码
#include <bits/stdc++.h>
using namespace std;
const int N=100025;
struct Gragh{
static const int M=N*2;
int cnt,y[M],nxt[M],fst[N];
void clear(){
cnt=1;
memset(fst,0,sizeof fst);
}
void add(int a,int b){
y[++cnt]=b,nxt[cnt]=fst[a],fst[a]=cnt;
}
}g,g2;
int T,n,m,Q,fa[N],flag[N],vis[N],v[N],sontot[N];
void dfs(int x,int pre){
fa[x]=pre;
vis[x]=1;
for (int i=g.fst[x];i;i=g.nxt[i])
if (!vis[g.y[i]]){
flag[i>>1]=1;
dfs(g.y[i],x);
}
else if (!flag[i>>1]){
flag[i>>1]=1;
g2.add(x,g.y[i]);
g2.add(g.y[i],x);
}
}
int main(){
scanf("%d",&T);
while (T--){
scanf("%d%d",&n,&m);
g.clear();
for (int i=1,a,b;i<=m;i++){
scanf("%d%d",&a,&b);
g.add(a,b);
g.add(b,a);
}
memset(fa,0,sizeof fa);
memset(flag,0,sizeof flag);
memset(vis,0,sizeof vis);
memset(sontot,0,sizeof sontot);
memset(v,0,sizeof v);
g2.clear();
dfs(1,0);
scanf("%d",&Q);
while (Q--){
int opt,x,y;
scanf("%d",&opt);
if (opt==0){
scanf("%d%d",&x,&y);
if (fa[x])
sontot[fa[x]]+=y;
v[x]+=y;
for (int i=g2.fst[x];i;i=g2.nxt[i])
sontot[g2.y[i]]+=y;
}
else {
scanf("%d",&x);
printf("%d\n",v[fa[x]]+sontot[x]);
}
}
}
return 0;
}
HDU4858 项目管理 其他的更多相关文章
- HDU-----(4858)项目管理(模拟)
项目管理 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu4858 项目管理 bestcoder round1 B
唔..弱弱的暴力水果 0操作时,将v加到u上,能够直接把v加到u相连的点上,这样输出时直接输出要求点的值. 布这种话反正我是超时了.. #include<cstdio> #include& ...
- 聊聊Unity项目管理的那些事:Git-flow和Unity
0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了.敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理.项目从最初使用svn到之后的Git One Track策略再到现在的GitFlo ...
- 【组织级项目管理】P2 MSP P3O
组织级项目管理--有你,有我,有大家 在过去的2年,无论对于企业来讲,还是对于我们个人都有很多大脑的冲击,有几个词大家应该特别耳熟能详:转型,变革,敏捷,互联网+,组织的项目化管理等.就是这些让我们的 ...
- 【项目管理】GitHub使用操作指南
GitHub使用操作指南 作者:白宁超 2016年10月5日18:51:03> 摘要:GitHub的是版本控制和协作代码托管平台,它可以让你和其他人的项目从任何地方合作.相对于CVS和SVN的联 ...
- Atitit.attilax软件研发与项目管理之道
Atitit.attilax软件研发与项目管理之道 1. 前言4 2. 鸣谢4 3. Genesis 创世记4 4. 软件发展史4 5. 箴言4 6. 使徒行传 4 7. attilax书 4 8. ...
- 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的
感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...
- 5、项目间的沟通协调 - PMO项目管理办公室
沟通是人类所具备的优良而有一定技巧的一种方式.但是,沟通也是PMO项目管理办公室中所有项目组必须建立起来的能力,也是PMO项目管理办公室日常所需要进行的一项工作内容. 一.项目间的沟通: PMO项目管 ...
- 4、项目的培训 - PMO项目管理办公室
培训是一个重要的内容,在公司内部就有相关的培训.对于PMO项目管理办公室来说,就是相关的项目的技术和业务的培训,以期让项目组人员能够快速的学习好项目业务内容和所需要使用到的技术内容,然后尽快的进入项目 ...
随机推荐
- MVC异步方法
在mvc的开发过程中,有时候我们会需要在action中调用异步方法,这个时候会需要做一些特殊处理.我们会使用到await和async.对应的controller也应该是async的. 在MVC4中直接 ...
- HDU 1796 (容斥原理)
容斥原理练习题,忘记处理gcd 和 lcm,wa了几发0.0. #include<iostream> #include<cstdio> #include<cstring& ...
- Cocos2d-x中文显示乱码
Cocos2d-x 引擎编码格式默认为utf8,而VS开发环境默认为gbk2312,所以把代码文件保存为utf8格式就能解决. VS->文件->高级保存选项->Unicode(UTF ...
- -bash: /opt/cslc/jdk1.8.0_144/bin/jps: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
yum install -y glibc.i686 解决问题
- nodejs和ionic小助手
nodejs已经安装完成的情况下,安装ionic小助手 win+r打开cmd. 命令: 1.node -v(查看版本信息) 2.npm -v(查看版本信息) 3.npm install -g cnpm ...
- IntellJ IDEA下写JUnit
安装配置JUnit File->Settings->Plugins->Browse Repositories->在右侧搜索框输入"junit"-> ...
- oracle user locked(timed)处理
故障现象: SQL> connect scott/scottERROR:ORA-01017: invalid username/password; logon deniedSQL> con ...
- url加密和解密
.NET中加密和解密有两种方式 string file="文件上(传)篇.doc";string Server_UrlEncode=Server.UrlEncode(file);s ...
- ORA-00257: archiver error. Connect internal only, until freed.| Oracle数据库归档日志满导致应用系统反应缓慢的问题处理
一:查看原因 查看了下V$FLASH_RECOVERY_AREA_USAGE,看看归档目录使用的情况.果然是归档满了. Disconnected from Oracle Database 11g En ...
- Confluence 6 用户目录图例 - 使用 LDAP 授权的内部目录
上面的图:Confluence 连接 LDAP 服务器仅用做授权 https://www.cwiki.us/display/CONFLUENCEWIKI/Diagrams+of+Possible+Co ...