博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2057The Lost House
阅读量:5286 次
发布时间:2019-06-14

本文共 1230 字,大约阅读时间需要 4 分钟。

大神的指导,加上大神的题解文档,我自己照着他的代码打了一遍,通过了

详细看看网站

我的ACCEPT代码,想通了就感觉个之前做过的一道聚会的树形dp有点像

#include "iostream"#include "algorithm"#include "string.h"#include 
#define M 1015using namespace std;int tree[M][M],leave[M],success[M],fail[M];char h[M];int cmp(int u,int v) { return (fail[u]+2)*leave[v]<(fail[v]+2)*leave[u];}void work(int a){ int i,j,tem[M]; if(tree[a][0]==0){ leave[a]=1; success[a]=0; fail[a]=0; } for(i=1;i<=tree[a][0];i++){ work(tree[a][i]); } for(i=1;i<=tree[a][0];i++){ if(h[a]=='N')fail[a]+=fail[tree[a][i]]+2; leave[a]+=leave[tree[a][i]]; } for(i=1;i<=tree[a][0];i++){ tem[i]=tree[a][i]; } sort(tem+1,tem+tree[a][0]+1,cmp); for(i=1,j=0;i<=tree[a][0];i++){ success[a]+=(j+1)*leave[tem[i]]+success[tem[i]]; j+=fail[tem[i]]+2; }}int main(){ char b; int a,n,i; while(cin>>n&&n){ memset(tree,0,sizeof(tree)); memset(success,0,sizeof(success)); memset(fail,0,sizeof(fail)); memset(leave,0,sizeof(leave)); for(i=1;i<=n;i++){ cin>>a>>b; if(a!=-1){ tree[a][0]++; tree[a][tree[a][0]]=i; } h[i]=b; } work(1); double tem=(double)success[1]/(double)leave[1]; cout <

 

转载于:https://www.cnblogs.com/dowson/p/3331769.html

你可能感兴趣的文章
Day13
查看>>
tensorflow saver简介+Demo with linear-model
查看>>
Luogu_4103 [HEOI2014]大工程
查看>>
Oracle——SQL基础
查看>>
项目置顶随笔
查看>>
Redis的安装与使用
查看>>
P1970 花匠
查看>>
java语言与java技术
查看>>
NOIP2016提高A组五校联考2总结
查看>>
iOS 项目的编译速度提高
查看>>
table中checkbox选择多行
查看>>
Magento开发文档(三):Magento控制器
查看>>
性能调优攻略
查看>>
ie6解决png图片透明问题
查看>>
瞬间的永恒
查看>>
2019-8-5 考试总结
查看>>
JS中实现字符串和数组的相互转化
查看>>
web service和ejb的区别
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>