poj 2057 The Lost House

poj1760 Disk Tree 先上题目: 3:Disk Tree 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 Hacker Bill has accidentally lost all the information from his workstation's hard drive and he has no backup copies of its contents. H 阅读详情

poj 2057 The Lost House


这个题目很考察仔细分析题目的思维能力。

本来应该能够想出来的,就是思维局限在要记录每个点如果蜗牛返回改点的布数和留在其中一个叶子的布数,怎么也没推出来


现在就考虑这种情况根结点 u , 其叶子节点 v1,v2,v3……vn


假设蜗牛是按 顺序遍历其叶子节点的, ans =  ( 在v1为根的子树找到的步数 +  v1的叶子节点数 )   + (试探v1没有的步数 + 2 )* v2的叶子节点数  + 在v2为根的子树找到的步数 + v2的叶子节点数 +……

接下来就很容易设计出状态:

  1. succ[v] 表示在以v为根的子树成功 的 步数

        2 .    fail[v]  试探以v为根的子树失败的步数(如果在v 处有worn 的话 fail[v]=0)

        3 .   num[ v ] 表示以v为根的叶子节点数


知道了状态之间的转移,还有一点要注意的是:选择叶子节点遍历先后顺序的问题,这个可以很容易的用到排序不等式(贪心)来确定,然后化简


感谢这篇博客给我提供思路


#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>

using namespace std;
const int maxn=1010;

vector<int> g[maxn];
int succ[maxn],fail[maxn],num[maxn],worn[maxn],tmp[maxn];

int cmp(int u,int v)
{
    return num[v]*(fail[u]+2) < num[u]*(2+fail[v]);
}
void dfs(int u)
{
    succ[u]=0;
    fail[u]=0;
    num[u]=g[u].empty();
    if(g[u].empty()) return;

    for(int i=0;i<g[u].size();i++)
    {
        dfs(g[u][i]);
        num[u]+=num[g[u][i]];
        if(!worn[u]) fail[u]+=(fail[g[u][i]]+2);
    }
    for(int i=0;i<g[u].size();i++) tmp[i]=g[u][i];

    sort(tmp,tmp+g[u].size(),cmp);
    for(int j=0,i=0;i<g[u].size();i++)
    {
        succ[u]+=(j+1)*num[tmp[i]]+succ[tmp[i]];
        j+=(fail[tmp[i]]+2);
    }
    //cout<<u<<": "<<succ[u]<<" "<<fail[u]<<" "<<num[u]<<endl;
}
int main()
{
    int n,a,b;
    char cc[3];
    while(scanf("%d",&n)==1&&n)
    {
        for(int i=1;i<=n;i++)
        {
            scanf("%d %s",&a,cc);
            if(a!=-1) g[a].push_back(i);
            worn[i]=(cc[0]=='Y');
        }
        dfs(1);
        printf("%.4lf\n",succ[1]*1.0/num[1]);
        for(int i=1;i<=n;i++) g[i].clear();
    }
    return 0;
}


如何让Arduino IDE支持你手里的STM32 nucleo开发板 Arduino IDE开发环境在默认情况下不支持STM32 NUCLEO开发板,只有通过添加附加开发板管理包才能使用。目前为止,只有一部分板子支持使用Arduino IDE开发环境进行开发,分别是 Nucleo F207ZG, Nucleo F429ZI, Nucleo F030R8, Nucleo F091RC, Nucleo F103RB, Nucleo F303RE, Nucl... 阅读详情

相关推荐

R爬虫RSelenium环境搭建及简单应用

这是鄙人自己实践的一种可行的环境搭建,我会尽量详细的写下大家步骤。

weixin_44349986的博客 2014

数据结构与算法(四)树

1.Pre-Post-erous! 描述 We are all familiar with pre-order, in-order and post-order traversals of binary trees. A common problem in data structure classes is to find the pre-order traversal of a binary...

yhjpku的博客 762

深入解析进化算法中的选择与多样性

在计算科学的世界里,最优雅的解决方案往往源于最古老的智慧——大自然。进化算法(Evolutionary Algorithms, EAs)正是这样一种受达尔文自然选择学说启发的强大工具。它们通过模拟“适者生存”的过程,在庞大的可能性海洋中搜寻最优解。。:指的是深入挖掘和优化已知的优质解。这就像在一片已知的沃土上精耕细作,力求获得最高产量。强大的选择压力会促进这一过程。:指的是在整个搜索空间中寻找全新的、可能更优的解。这好比派遣探险队去发现新大陆,充满了未知与机遇。保持种群的多样性是探索的关键。

weixin_62533513的博客 717

2018_2_14_Disk Tree_层次结构

g++Disk TreeTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 2576 Accepted: 939DescriptionHacker Bill has accidentally lost all the information from his workstation's hard drive and he has no...

ujn20161222的博客 703

增程式永磁电机发电系统电压环二自由度控制器设计

本论文主要研究增程式永磁电机发电系统的电压环二自由度控制器设计。该系统采用二自由度控制策略,通过精确调节电压环和电流环,显著提高系统的动态响应性能和稳态稳定性。基于SVPWM(空间矢量脉宽调制)技术,本研究设计的电压环控制器能够在负载突变和外部扰动的情况下,快速恢复并保持电压稳定,从而满足增程式永磁电机发电系统对电压精度和稳定性的高要求。仿真分析表明,所设计的控制器在不同工况下展现出良好的电压稳定性、较短的响应时间和较低的稳态误差,能够有效抑制电压波动并提高系统的鲁棒性。实验结果表明,控制器在维持高效能和高

weixin_44553616的博客 897

UE4入门实例17(Unreal制作卡通Post Process材质球)

效果展示 #1 创建Post Porcess材质球 #2 编写Shader功能 #3 设置场景区域内风格化渲染 #1 创建Post Porcess材质球 #2 编写Shader功能 创建基础效果 移除现有通道渲染 设置视图渲染范围 #3 设置场景区域内风格化渲染 #4 加群下载Shader源码:284105567 ...

Unity3d 攻城师一枚 1346

POJ 2057 The lost house

这道题求的是期望。 首先,一看到期望,就会想到可以将问题分成若干个子问题,再分开算期望,所以这道题可以使用动态规划。 注意到每个叶子有房子的概率是均等的。所以答案就是遍历每个叶子最少的步数/叶子的总数。 所以问题划归为求遍历所有叶子的最少步数。 我们令fail[x]为以x为根的子树找不到房子的最少步数。 su[x]为以x为根的子树中找到房子最少步数。 le[x]为以x为根的子树中叶子的

AChunter的专栏 1332

DDR的Controller、Channel、Chip、Rank、Bank、Row、Column、Sided、Dimm

DDR的Controller、Channel、Chip、Bank、Rank、Row、Column、Sided、Dimm

张飞online博客 2万+

poj2057——the lost house

题目大意:蜗牛把壳落在一个树的叶子结点了,壳在每个叶节点的概率相同,它在根节点处开始爬,可能在树杈处遇到虫子告诉他壳是否在这个子树中,每个节点间距离为1,问他找到壳的爬行距离的最小期望 输入:(包含几个数据集)             树的结点个数n             第i个结点的父亲结点 是否有虫子(Y/N)             结点个数n为0//表示输入结束 输出:爬行距离

tzyshiwolaogongya的博客 261

NI数据采集卡测电流的三种‘姿势’:直接连接、外接分流电阻还是用电流互感器?看完这篇不再纠结

本文全面解析了NI数据采集卡在电流测量中的三种主流方案:直接连接、外接分流电阻和电流互感器。通过对比精度、带宽、隔离等关键参数,结合NI-DAQmx软件生态,为工业自动化、电力监测等场景提供选型指南和实战技巧,帮助工程师优化测量系统设计。

weixin_30882895的博客 422

Python爬虫教程:抓取Android或iOS应用中的数据

随着智能手机的普及,移动应用程序已经成为我们生活中不可或缺的一部分。从社交媒体、在线购物到金融服务和健康管理,几乎所有领域都有相应的手机应用程序(App)服务用户。而这些应用程序通常会存储大量的数据,例如用户行为、产品信息、订单记录等。如果我们能有效地抓取这些数据,可以为数据分析、商业智能、用户行为分析等提供有力支持。本文将重点介绍如何使用Python爬虫技术抓取Android或iOS应用中的数据,尤其是如何从这些应用的后端接口、存储、或网页中提取数据。我们将探讨如何通过反向工程技术访问移动应用中的API接

2201_76125261的博客 802

【POJ2057】The Lost House【TreeDP】

【题目链接】 比较经典的一道TreeDP。 因为概率是相等的,所以我们只需要计算最小步数即可,最后答案再除以叶子节点个数。 设leaf[u]表示以u为根的子树中叶子节点的个数。 设fail[u]表示以u为根的子树中,从u出发,找房子失败后,回到u点,按最优策略走的步数。 设succ[u]表示以u为根的子树中,从u出发,并成功找到房子,按最优策略走的步数。 最优策略即我们要找

BraketBN 530

Windows部署OpenClaw报错不断?这篇环境配置指南帮你解决难题

想在Windows上部署OpenClaw却频频报错?🔧 本文详细梳理了OpenClaw部署必需环境的安装步骤和官方下载地址 📦,提供完整的验证清单和常见问题排查方法,帮你一次性搞定所有环境配置,顺利部署OpenClaw ✅

XiaoqiangClub的博客 6652

POJ 2057 The Lost House

The Lost House Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 2140   Accepted: 886 Description One day a snail climbed up to a big tree and finally came to th

ACM2272902662的专栏 2986

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

POJ 2057 The Lost House 树状DP

题意:一直小蜗牛从树顶掉了下来,但是它的壳子还留在上面。于是它有从根节点去寻找它的壳子(但是它完全忘记了之前走过的路)。在路途中有些节点上可能住着虫子,虫子可以告诉小蜗牛它之前来没来过。假如壳子在每个叶子节点上的概率相等,求出蜗牛所需要走得路程的期望。 题解:关键是确定子节点的

1854

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【树形DP】【poj 2057】The Lost House

http://poj.org/problem?id=2057 这道题很久以前就看到过,一直没看懂题,所以就一直放着 先学好英语,然后就可以做了 这篇论文里讲得很清楚 http://wenku.baidu.com/link?url=t2T0VjAbXPHk1tEM0o8f8orqAbDT34Xs0mAGDq4fxylFsla1RENJhrWgPmq6P7-DkhenpY9ASThFD

willinglive 522

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

poj-2057 The Lost House

题意: 给出一颗有根树,边权均为1; 一个S在根结点上,要找到在某个叶子结点上的它的房子; 有的结点上有w,可以告诉S当前结点的子树上是否有它的房子; 房子在每个叶子结点的概率相等,选择一种最佳的计划,来让S走的期望值最小;

140142 993

POJ 2057 The Lost House 经典树形DP+贪心

POJ 2057 The Lost House 树形DP+贪心

-Claude 1484
上一篇: RUAL 1141. RSA Attack
下一篇: CF 79C. Beaver
struggle_mind
博客等级 码龄15年 39粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值