数列
提交文件:sequence.pas/c/cpp
输入文件: sequence.in
输出文件: sequence.out
问题描述:
把一个正整数分成一列连续的正整数之和。这个数列必须包含至少两个正整数。你需要求出这个数列的最小长度。如果这个数列不存在则输出 -1 。
输入格式:
每行包含一个正整数 n 。
每个文件包含多行,读入直到文件结束。
输出格式:
对于每个 n ,输出一行,为这个数列的最小长度。

第一行是两个整数N和S,其中N是树的节点数。

第二行是N个正整数,第i个整数表示节点i的正整数。

接下来的N-1行每行是2个整数x和y,表示y是x的儿子。

输出格式:

输出路径节点总和为S的路径数量。

输入样例:

输出样例:

3 3

1 2 3

1 2

1 3

2

数据范围:

对于30%数据,N≤100;

对于60%数据,N≤1000;

对于100%数据,N≤100000,所有权值以及S都不超过1000。

数据范围:
对于所有数据,n≤2 63

这个是JLOI2012的T1,发出来仅为了试题完整

=============================================================================================

在这个问题中,给定一个值S和一棵树。在树的每个节点有一个正整数,问有多少条路径的节点总和达到S。路径中节点的深度必须是升序的。假设节点1是根节点,根的深度是0,它的儿子节点的深度为1。路径不必一定从根节点开始。

Input

第一行是两个整数N和S,其中N是树的节点数。

第二行是N个正整数,第i个整数表示节点i的正整数。

接下来的N-1行每行是2个整数x和y,表示y是x的儿子。

Output

输出路径节点总和为S的路径数量。

Sample Input

3 31 2 31 21 3

Sample Output

2

Hint

对于100%数据,N≤100000,所有权值以及S都不超过1000。

题解:
  这个题目看上去是不是要点分,稍微看一下数据范围,S不超过1000,而且所有点权都为正整数,这意味着我们每次枚举一个起点,dfs,层数不会超过1000层,而且因为要保证深度关系,很多节点都远远达不到。这题还是很暴力吧。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#define MAXN 101000
using namespace std;
int ans=0;
int val[MAXN],b[MAXN],dep[MAXN],roof;
struct edge{int first;int next;int to;
}a[MAXN*2];
int n,m,num=0;void addedge(int from,int to){a[++num].to=to;a[num].next=a[from].first;a[from].first=num;
}void dfs(int now,int fa,int tot){if(tot==m) ans++;if(tot>=m) return;for(int i=a[now].first;i;i=a[i].next){int to=a[i].to;if(to==fa) continue;if(dep[to]<=dep[now]) continue;dfs(to,now,val[to]+tot);}
}void pre(int now,int fa){dep[now]=dep[fa]+1;for(int i=a[now].first;i;i=a[i].next){int to=a[i].to;if(to==fa) continue;pre(to,now);}
}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",&val[i]);for(int i=1;i<=n-1;i++){int x,y;scanf("%d%d",&x,&y);addedge(x,y),addedge(y,x);b[y]=1;}for(int i=1;i<=n;i++) if(!b[i]) roof=i;pre(roof,0);for(int i=1;i<=n;i++) dfs(i,0,val[i]);printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/renjianshige/p/7616763.html

BZOJ - 2783 树相关推荐

  1. BZOJ 2282 树的直径

    SDOI2011的Dayx第2题 题意: 在树中找到一条权值和不超过S的链(为什么是链呢,因为题目中提到"使得路径的两端都是城市",如果不是链那不就不止两端了吗--怎么这么机智的感 ...

  2. BZOJ 4551树题解

    好吧,洛谷的数据比较水暴力就可以过....(而且跑到飞快) 不过(BZ水不过去)还是讲讲正规的做法. 其实一眼可以看出可以树剖,但是,码起来有点麻烦. 其实有一种更简单的离线做法. 我们很容易联想到并 ...

  3. BZOJ 4811 树链剖分+线段树

    思路: 感觉这题也可神了.. (还是我太弱) 首先发现每一位不会互相影响,可以把每一位分开考虑,然后用树链剖分或者LCT维护这个树 修改直接修改,询问的时候算出来每一位填0,1经过这条链的变换之后得到 ...

  4. bzoj 1036 树的统计Count

    题意:... 解法:树链剖分,对点进行重编号,这样的话线段树中点的信息就是树中点的信息...别的很常规... 1 #include<cstdio> 2 #include<cstrin ...

  5. bzoj 4196 树链剖分 模板

    [Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 2135  Solved: 1232 [Submit][Status] ...

  6. BZOJ 2243 树链剖分

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2243 题意:中文题目 思路:树链剖分.首先考虑求区间颜色段数的问题, 我们可以用线段树维护 ...

  7. bzoj 4337 树的同构

    4337: BJOI2015 树的同构 Description 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点都有一个前驱,这个树 ...

  8. Codevs 2460 == BZOJ 1036 树的统计

     2460 树的统计 2008年省队选拔赛浙江 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 一棵树上有n个节点,编号分别为1 ...

  9. BZOJ 2836 树链剖分+线段树

    思路: 链剖+线段树裸题 重链的标号就是DFS序 所以查子树的时候每回就 query(change[x],change[x]+size[x]-1) 就好了 剩下的应该都会吧.. //By Sirius ...

  10. BZOJ.3257.树的难题(树形DP)

    题目链接 状态只与黑.白两点的颜色有关,于是用 \(f[x][i][j]\)表示当前以x为根节点,有\(i\)个黑点\(j\)个白点,使得x子树满足该条件的最小花费. 最后答案就是 \(min\{f[ ...

最新文章

  1. R语言双因素方差分析
  2. “我的开源项目被威胁了!”
  3. 解放你内心的自然领袖,从你的内心而非你的自我来领导你自己
  4. spring的@Transactional注解详细用法
  5. Android 读取assets文件下的txt文件
  6. c语言socket发送excel,socket文件传输功能的实现
  7. 代码生成平台Xxl-Code-Generator
  8. python多进程优化for循环_Python中for循环中的多进程处理和传递多个参数
  9. 3.3_number_join_数字拼接问题
  10. 超详细|一篇搞定操作系统——处理器管理
  11. 开箱即用的SSH攻击字典收集工具
  12. 达梦数据库(DM7试用版)安装
  13. IC基础知识7-数据选择器
  14. [贪心][区间dp]Zero-One Codeforces1733D1D2
  15. XUL透明异形旋转窗体
  16. 第二模块 商务电子邮件写作技巧
  17. linux关触摸屏命令,Linux 禁用触摸屏 触摸板
  18. 三万字,100题!Linux知识汇总!
  19. Vscode c与c++编译环境配置(.vscode),看这一篇就够了
  20. 【刷题】BZOJ 2754 [SCOI2012]喵星球上的点名

热门文章

  1. 「LibreOJ β Round #4」多项式 (广义欧拉数论定理)
  2. java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载
  3. [原创]Tsys 2.0 beta 官方版无法使用自定义SQ
  4. Xcode 12 引用缺失包:libstdc++.tbd libstdc++.6.tbd libstdc++.6.0.9.tbd 等
  5. 使用 RxJava 的正确姿势
  6. 181106 solution
  7. mongodb 的安装使用步骤
  8. [moka同学笔记]WINDOWS中cmd的切换目录cd命令失效
  9. ASP 读取Word文档内容简单示例
  10. 【转】nginx禁止访问某个文件和目录(文件夹)