pta l2-20(功夫传人)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805059118809088
题意:给定n个人,编号0~n-1,0为祖先,每个人有一个师傅,每次从师傅传功夫到徒弟时,功力值会削弱r,但可能会出现得道者,功力翻n倍,计算所有得道者功力值之和。
思路:因为计算功力值时要从祖先开始逐渐向下计算,所以我们需要存储每个人的徒弟,然后从上向下遍历即可,我这里用的是邻接表实现的,定义maxn个表头结点head,head[i]其中包括它的第一个徒弟编号nxt,翻的倍数,功力值;定义maxn个表结点,指向其兄弟结点。然后用dfs从祖先编号0开始搜即可,但我被两个细节点卡了一个多小时,卡到崩溃QAQ:1.输入的r是[0,100]的值,还需除100; 2. 我写代码没带脑子,在dfs函数中用全局变量tmp作为指向徒弟的指针,然后程序一直在那运行错误的结果...
AC代码:
- #include<bits/stdc++.h>
- using namespace std;
- const int maxn=;
- struct node{
- int nxt,bg;
- double gl;
- }head[maxn];
- int n,k,tmp,nxt[maxn];
- double z,r,sum;
- void dfs(int p){
- if(head[p].bg)
- sum+=head[p].gl*head[p].bg;
- else{
- int t=head[p].nxt;
- while(t){
- head[t].gl=head[p].gl*r;
- dfs(t);
- t=nxt[t];
- }
- }
- }
- int main(){
- scanf("%d%lf%lf",&n,&z,&r);
- r=1.0-0.01*r;
- head[].gl=z;
- for(int i=;i<n;++i){
- scanf("%d",&k);
- if(!k)
- scanf("%d",&head[i].bg);
- else
- while(k--){
- scanf("%d",&tmp);
- nxt[tmp]=head[i].nxt;
- head[i].nxt=tmp;
- }
- }
- dfs();
- printf("%lld\n",(long long)sum);
- return ;
- }
pta l2-20(功夫传人)的更多相关文章
- 天梯赛 L2-020. 功夫传人 BFS
L2-020. 功夫传人 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一门武功能否传承久远并被发扬光大,是要看缘分的.一般来 ...
- L2-020. 功夫传人*
L2-020. 功夫传人 参考博客 #include<vector> #include<cstring> #include<algorithm> using nam ...
- L2-020. 功夫传人(dfs+vector 或者 邻接矩阵+dij+优先队列)
L2-020. 功夫传人 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一门武功能否传承久远并被发扬光大,是要看缘分的.一般来 ...
- PAT 天梯杯 L2-020 功夫传人
L2-020. 功夫传人 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一门武功能否传承久远并被发扬光大,是要看缘分的.一般来 ...
- PAT L2-020 功夫传人【BFS】
一门武功能否传承久远并被发扬光大,是要看缘分的.一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱-- 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹.挖到 ...
- PAT L2-020 功夫传人
https://pintia.cn/problem-sets/994805046380707840/problems/994805059118809088 一门武功能否传承久远并被发扬光大,是要看缘分 ...
- 天梯赛 L2-20 功夫传人 (深搜)
一门武功能否传承久远并被发扬光大,是要看缘分的.一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱-- 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹.挖到 ...
- 【PAT-L2-020】功夫传人
链接:https://www.patest.cn/contests/gplt/L2-020 一门武功能否传承久远并被发扬光大,是要看缘分的.一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟 ...
- CCCC L2-020. 功夫传人 搜索 bfs && 精度+ 特判
https://www.patest.cn/contests/gplt/L2-020 题解:给你一颗树,让你遍历一遍,顺便更新一下数据,每次到根节点时将其对应的数据加到ans上面.这里用的bfs. 坑 ...
随机推荐
- winform 布局、容器
一.布局 属性:1.Anchor: 绑定控件到容器边缘位置保持不变 注:四周全锁定时控件随界面变化时变大 2.Dock:绑定到容器的边缘 注:下控件到边需先将下控件定义到边再将左右控件新建.到边 3 ...
- Mybatis八( mybatis工作原理分析)
MyBatis的主要成员 Configuration MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中 SqlSession ...
- zip和zipPartitions
zip函数用于将两个RDD组合成Key/Value形式的RDD,这里默认两个RDD的partition数量以及元素数量都相同,否则会抛出异常. scala> val aa=sc.makeRDD( ...
- django的i18n是如何实现的
在程序中出现 _的地方会调用gettext_lazy(django.utils.translation.py) class LogEntry(models.Model): action_time = ...
- zabbix模块注意
1,每个监控组使用一个模版,对模版操作时会对监控组的每个模版进行修改操作.
- javascript,移动划过超链接鼠标变手型
用css控制鼠标样式的语法如下:<span style="cursor:*">文本或其它页面元素</span>把 * 换成如下15个效果的一种: 下面是对这 ...
- php装curl拓展出错
错误: checking for cURL in default path... not found checking for cURL 7.10.5 or greater... ./configur ...
- 装饰者模式——Head First
一.定义 装饰者模式(Decorator Pattern)动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 二.类图 三.星巴兹饮料 //Component public ...
- Linux sort命令使用方法
sort命令在Linux中主要用于对文件进行排序,并将排序结果输出.sort命令输入可以是指定的文件和数据流.本文主要介绍sort命令的基本语法和常见使用实例. sort命令语法 sort命令格式:s ...
- Android 操作UI线程的一些方法
我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据.但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,android的UI页面是不允许在其他线程直接操作的.下面总结4 ...