您的位置:首页 > 其它

PAT Advanced Level 1079

2014-03-27 02:01 183 查看
题目地址:http://pat.zju.edu.cn/contests/pat-a-practise/1079

代码如下:

#include <stdio.h>
#include <math.h>
#include <vector>
using namespace std;
vector<int> s[100011];
vector<int> ss[100011];
int main()
{
int n;
double up,prp;
scanf("%d%lf%lf",&n,&up,&prp);
for(int i=0;i<n;i++){
s[i].clear();
int t;
scanf("%d",&t);
s[i].push_back(t);
if(t==0){
int tt;
scanf("%d",&tt);
s[i].push_back(tt);
}
else{
for(int j=0;j<t;j++){
int tmp;
scanf("%d",&tmp);
s[i].push_back(tmp);
}
}
}
double res=0;
int layer=0;
ss[0].clear();
ss[0].push_back(0);
while(ss[layer].size()>0){
ss[layer+1].clear();
for(int i=0;i<(signed)ss[layer].size();i++){
int ttt=ss[layer][i];
if(s[ttt][0]==0){
res+=pow((1+prp/100),layer)*up*s[ttt][1];//使用pow函数能节省不少时间
}
else{
for(int j=1;j<=s[ttt][0];j++){
ss[layer+1].push_back(s[ttt][j]);
}
}
}
layer++;
}
printf("%.1lf\n",res);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: