一门武功能否传承久远并被发扬光大,是要看缘分的。一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱…… 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹、挖到了特别的秘笈),会将功夫的威力一下子放大N倍 —— 我们称这种弟子为“得道者”。

这里我们来考察某一位祖师爷门下的徒子徒孙家谱:假设家谱中的每个人只有1位师傅(除了祖师爷没有师傅);每位师傅可以带很多徒弟;并且假设辈分严格有序,即祖师爷这门武功的每个第i代传人只能在第i-1代传人中拜1个师傅。我们假设已知祖师爷的功力值为Z,每向下传承一代,就会减弱r%,除非某一代弟子得道。现给出师门谱系关系,要求你算出所有得道者的功力总值。

输入格式:

输入在第一行给出3个正整数,分别是:N(<=105)——整个师门的总人数(于是每个人从0到N-1编号,祖师爷的编号为0);Z——祖师爷的功力值(不一定是整数,但起码是正数);r ——每传一代功夫所打的折扣百分比值(不超过100的正数)。接下来有N行,第i行(i=0, ..., N-1)描述编号为i的人所传的徒弟,格式为:

Ki ID[1] ID[2] ... ID[Ki]

其中Ki是徒弟的个数,后面跟的是各位徒弟的编号,数字间以空格间隔。Ki为零表示这是一位得道者,这时后面跟的一个数字表示其武功被放大的倍数。

输出格式:

在一行中输出所有得道者的功力总值,只保留其整数部分。题目保证输入和正确的输出都不超过1010

输入样例:

10 18.0 1.00
3 2 3 5
1 9
1 4
1 7
0 7
2 6 1
1 8
0 9
0 4
0 3

输出样例:

404

提交代码

这题因为知道最顶头的就是0  然后根据每个人的徒弟下来的进行深搜

需要注意到就是即便是得道中人也要满足说  师傅传给徒弟的就会损失百分之几的道理

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+100;
vector<int>vec[maxn];
int sky[maxn];
double last[maxn];
double sum=0;
int n;
double beg,reduce;
void DFS(int id,int pre)
{for(int i=0;i<vec[id].size();i++){//升天的人不用继续DFS 因为是叶子节点了if(sky[vec[id][i]]!=0){last[vec[id][i]]=last[pre]*sky[vec[id][i]]*(1-reduce*0.01);sum=sum+last[vec[id][i]];//比例}else//不升天的人 要继续DFS{last[vec[id][i]]=last[pre]*(1-reduce*0.01);//    printf("%.4lf     %lf    %lf   %d   %d\n",1-reduce*0.01,last[vec[id][i]],last[pre],vec[id][i],pre);DFS(vec[id][i],vec[id][i]);}}return;
}
int main()
{scanf("%d %lf %lf",&n,&beg,&reduce);last[0]=beg;//初始值for(int i=0;i<n;i++){int k;int now=0;scanf("%d",&k);if(k==0){int x;scanf("%d",&sky[i]);//只要这个是哪个啥 就是升天的人}//表示的是倍数for(int j=1;j<=k;j++){int b;scanf("%d",&b);vec[i].push_back(b);}}if(n==1){printf("%lld\n",(long long)(beg*sky[0]));return 0;}DFS(0,0);//一个他 一个他师傅printf("%lld\n",(long long)sum);return 0;
}

L2-020. 功夫传人(STL+深搜)相关推荐

  1. 7-72 功夫传人 (25 分)(深搜)

    7-72 功夫传人 (25 分) 一门武功能否传承久远并被发扬光大,是要看缘分的.一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱-- 直到某一支的某一代突然出现一个天分特 ...

  2. 【L2-020 功夫传人】天梯赛L2系列详解

    天梯赛L2-020 功夫传人 题目详情: 思路: 这个题目的看着就感觉需要深搜一下,不妨将样例画出来,思路就突然涌来了.很明显的一道深搜的题目: 题目刚开始输入的一行信息整体的信息:宗门人数,祖师爷功 ...

  3. hdu4876 深搜+(随机枚举剪枝)

    题意:       给你n个数,让你从选择k个数,然后排成一个环(k个数的顺序随意,但是排成一个环后就不能变了),然后可以在这个环上任意的找连续w个数(w<=k),可以找多次,得到一个值等于当前 ...

  4. P2668 斗地主 dp+深搜版

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...

  5. nyoj-20-吝啬的国度(深搜)

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 在一个吝啬的国度里有N个城市.这N个城市间仅仅有N-1条路把这个N个城市连接起来.如今,Tom在第S号城市 ...

  6. 深搜(DFS)和宽搜(BFS)

    相同点: 深搜和宽搜都可以对空间进行遍历,搜索的结构都是树 不同点: 深搜(DFS):(暴搜)(直男)(执着的人) (1)尽可能往深了搜,当搜到叶节点(简称搜到头)就会回溯,然后再搜下一个,然后再回溯 ...

  7. Go 分布式学习利器(15) -- Go 实现 深搜和广搜

    强化语法,回顾算法. 通过Go语言实现 深度优先搜索 和 广度优先搜索,来查找社交网络中的三度好友关系(三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 ,图递增三层好友关系). 涉及到的Go语 ...

  8. 水管工游戏 (深搜)

    水管工游戏 本题依然是采用搜索,深搜,广搜都可以,本代码采用深搜,此题在搜索时需要增加一些判断条件以及下一步要搜索的位置即可. 代码如下: #include<stdio.h> int a[ ...

  9. Poj(2488),按照字典序深搜

    题目链接:http://poj.org/problem?id=2488 思路:按照一定的字典序深搜,当时我的想法是把所有的可行的路径都找出来,然后字典序排序. 后来,凡哥说可以在搜索路径的时候就按照字 ...

  10. [数据结构] 迷宫问题(栈和队列,深搜和广搜)

    代码: #include <iostream> #include <string.h> #include <stack> #include <queue> ...

最新文章

  1. Linux驱动程序开发 - 设备IO
  2. [转]十问 Linux 虚拟内存管理 (glibc)
  3. mysql 插入数据后返回该条数据id
  4. stm32 USART_IT_IDLE中断 一帧数据
  5. php curl 传输大文件,空白目录 · php下载大文件curl · 看云
  6. 使用POI读取excel文件内容
  7. C语言 返回指针的函数--指针函数 int* max(int a)
  8. WordPress页面、文章、分类等的条件判断的标签集合
  9. meta标签以及一些基本标签
  10. 安装hexo,建站并新建博客
  11. 吸引人才的十大顶尖运营机制
  12. 超多种类的报表模板,填上数据就能用,全拿走!
  13. 驱动开发——经典图书免费试读下载及勘误讨论
  14. 成考java_成考本科课程:《Java程序设计》
  15. 笔记本省电问题分析及其实用小技巧
  16. 「量化技术」Inv_Strategy 胜率76%的趋势反转策略
  17. tp6后台管理系统搭建
  18. 计算机组成原理实验箱教程,计算机组成原理实验箱的技术参数和性能指标
  19. 如何将网站转化为桌面应用
  20. python1 到n_怎么用python求1到n所有整数的和

热门文章

  1. 大型网站的系统架构(摘)
  2. photon四种同步方式_Map 四种同步方式的性能比较
  3. Mybatis知识(1)
  4. SQLite查询优化(转)
  5. MySQL类型float double decimal的区别
  6. 《软件设计师》考点分布
  7. Springmvc 的post请求的json格式参数
  8. [20170203]克隆schema.txt
  9. JavaScript原型OOP——你上车了吗?
  10. 关于虚拟机virtualbox使用无线卡上网的设置