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

codechef Tree and Queries Solved

题目链接:
https://www.codechef.com/problems/IITK1P10

 大概是:修改点值,求子树节点为0有多少个,

DFS序后,BIT 询问,修改

 1 #include<bits/stdc++.h>
 2 
 3  using  namespace std;
 4 typedef  long  long ll;
 5 
 6  #define N 223456
 7 ll val[N];
 8  int l[N],r[N];
 9  int t= 1;
10  int f[N];
11  int lowbit( int x)
12 {
13      return x&-x;
14 }
15  void update( int x, int v)
16 {
17      while (x<N)
18     {
19         f[x]+=v;
20         x+=lowbit(x);
21     }
22 }
23 ll query( int x)
24 {
25     ll s= 0;
26      while (x)
27     {
28         s+=f[x];
29         x-=lowbit(x);
30     }
31      return s;
32 }
33 vector< int>mp[N];
34  void dfs( int u, int pre)
35 {
36     l[u]=t++;
37      for ( int i= 0;i<mp[u].size();i++)
38     {
39          int v=mp[u][i];
40          if (v==pre)  continue;
41         dfs(v,u);
42     }
43     r[u]=t- 1;
44 }
45 
46 
47  int main()
48 {
49      int n,Q;
50     scanf( " %d%d ",&n,&Q);
51      for ( int i= 1;i<n;i++)
52     {
53          int x,y;
54         scanf( " %d%d ",&x,&y);
55         mp[x].push_back(y);
56         mp[y].push_back(x);
57     }
58     dfs( 1, 0);
59      for ( int i= 1;i<=n;i++)
60     {
61         scanf( " %d ",&val[i]);
62          if (val[i]== 0) update(l[i], 1);
63     }
64      while (Q--)
65     {
66          char s[ 4];
67         scanf( " %s ",s);
68          if (s[ 0]== ' U ')
69         {
70              int u,v;
71             scanf( " %d%d ",&u,&v);
72              if (val[u]== 0) update(l[u],- 1);
73             val[u]+=v;
74              if (val[u]== 0) update(l[u], 1);
75         } else
76         {
77              int x;
78             scanf( " %d ",&x);
79              int ans=query(r[x])-query(l[x]- 1);
80             printf( " %d\n ",ans);
81         }
82     }
83      return  0;
84 }

 

转载于:https://www.cnblogs.com/forgot93/p/4831012.html

相关文章:

  • 队列的数组实现
  • mac下视频录制及gif图创建
  • JavaScript的DOM编程--07--节点的属性
  • tar解压问题gzip: stdin: not in gzip format
  • iOS开发引入第三方类库的问题
  • IOS 线程 +并发
  • MySQL的自增主键
  • golang echo livereload
  • XML DTD学习
  • 又是一番风味
  • 配置 ASP.NET Linux( CentOS 6.5 ) 运行环境 MONO + Jexus
  • 读书笔记 - 《黑天鹅》
  • bootstrap-scrollspy
  • 著名博客
  • 弹出和收起软键盘
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Akka系列(七):Actor持久化之Akka persistence
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • input的行数自动增减
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Mysql数据库的条件查询语句
  • QQ浏览器x5内核的兼容性问题
  • 跨域
  • 嵌入式文件系统
  • 使用 Docker 部署 Spring Boot项目
  • 使用common-codec进行md5加密
  • 使用Gradle第一次构建Java程序
  • 我感觉这是史上最牛的防sql注入方法类
  • 异常机制详解
  • 进程与线程(三)——进程/线程间通信
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • (0)Nginx 功能特性
  • (3)nginx 配置(nginx.conf)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (搬运以学习)flask 上下文的实现
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (十六)Flask之蓝图
  • (四) 虚拟摄像头vivi体验
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core 6 集成和使用 mongodb
  • .NET gRPC 和RESTful简单对比
  • .NET 中的轻量级线程安全
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • :O)修改linux硬件时间
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录