uva10859 树形dp

uva10859放置街灯(树形dp) 例题30 放置街灯(Placing Lampposts, UVa 10859) 给你一个n个点m条边的无向无环图, 在尽量少的结点上放灯, 使得 所有边都被照亮。 每盏灯将照亮以它为一个端点的所有边。 在灯的总数 最小的前提下, 被两盏灯同时照亮的边数应尽量大。 【输入格式】 输入的第一行为测试数据组数T(T≤30) 。 每组数据第一行为两个整 数n和m(m<n≤1000) , 即 阅读详情

这道题太让我恶心了,用别人ac的代码和自己的答案进行对拍,没错,但就是ac不了,希望大神可以帮我一下(按道理这题提交不成功是因为没有用记忆花搜索,应该是tle,但却是wa,懒得改为记忆花搜索了,毕竟答案都是错的,那就没必要去纠结超时的问题了但我好像知道wa在哪里了)

#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#include <cstring>
#define M 2000
#define inf 0x3f3f3f3f
int n,m,dp[1010][2],head[1001];//dp[x][0]表示这个点不取,dp[x][1]表示取这个点
vector<int> eage[1010];

int dfs(int son,int father,int ope)
{
    int i,j,k,choose,choose1;
    if(ope==0)
        choose=2001;
    else
    {
        choose=2000;
        choose1=1;
    }
    if(eage[son].size()==1&&ope==0)
    {
        return 2000+1;
    }
    if(eage[son].size()==1&&ope==1)
    {
       return 1;
    }
    for(i=0;i<eage[son].size();i++)
    {
        j=eage[son][i];
        if(j!=father)
        {
           if(ope==0)
           {
              choose+=dfs(j,son,1);
           }
           else
           {
               choose+=dfs(j,son,1);
               choose1+=dfs(j,son,0);
           }
        }
    }
    if(ope==1)
    choose=min(choose,choose1);
    return choose;
}

int main()
{
    //freopen("d:\\in.txt","r",stdin);
    int T,ans1=2000,ans2=0;
    scanf("%d",&T);
    while(T)
    {
        for(int i=0;i<=1001;i++)
            eage[i].clear();
        scanf("%d%d",&n,&m);
        memset(head,-1,sizeof(head));
        memset(dp,inf,sizeof(dp));
        for(int i=1;i<=m;i++)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            eage[a].push_back(b);
            eage[b].push_back(a);
        }
        ans1=2000,ans2=0;
        for(int i=0;i<eage[0].size();i++)
        {
           int j;
           j=eage[0][i];
           ans1+=dfs(j,0,1);
           ans2+=dfs(j,0,0);
        }
        int ans=min(ans1,ans2);
        printf("%d %d %d\n",ans/2000,m-ans%2000,ans%2000);
        T--;
    }
    return 0;
}//写的又臭又长

Android Studio连接手机详细教程(包含遇到的问题集) 如果以上内容全都调试正确了,还是存在这个无法安装的问题,多半是一开始用的别的手机进行调试安装,然后抽掉线重新换上另一个手机安装调试才会报错。无法识别的 USB 设备,跟这台计算机连接的前一个 USB 设备工作不正常,Windows 无法识别它。此时,我的开发者选项已经开启,并且windows系统和android studio已经能够识别我的设备了,但还是报了这样的错误。右击你的手机——>更新驱动程序——>浏览我的计算机以查找驱动程序软件。右击此电脑——>属性——>设备管理器——>便携设备。 阅读详情

相关推荐

密码学实战:如何利用生日攻击破解哈希函数

本文深入探讨了生日攻击在密码学中的应用及其对哈希函数的威胁。通过分析生日悖论的数学原理,揭示了哈希函数在实际应用中的脆弱性,并提供了防御策略,如升级哈希算法、正确使用加盐技术等。文章结合实战案例,帮助开发者理解如何有效防范此类攻击,确保系统安全。

weixin_42530732的博客 191

uva 10859 - Placing Lampposts(树形dp)

题目链接:uva 10859 - Placing Lampposts 题目大意:给定一个无向无环图,要求在点上放灯,如果某一点上放了等,则可以照亮与它相通的边,现在要求放尽量少得等,使得所有边都被照亮,并且输出灯数,被照亮两次的边数(即边的两个端点均放置灯),被照亮一次的边。 如果等数一样的话,按照被照亮一次边越大的方案。 解题思路:树形dp,每次枚举某个顶点作为根,对于每个点

不慌不忙、不急不躁 1765

音频格式之AAC:(2)AAC封装格式ADIF,ADTS,LATM,extradata及AAC ES存储格式

本文主要1-3部分介绍AAC封装格式ADIF,ADTS和LATM,同时因为从mp4等封装容器有extradata模式,故也第4部分介绍extradata模式。最后第5部分介绍AAC压缩数据存储方式。

littlezls的博客 4936

uva 10859 Placing Lampposts (树形dp)

题目大意 给你一个n个点m条边的无向无环图,在尽量少的节点上放灯,使得所有边都被照亮。每盏灯将照亮以它为一个端点的所有边。 在灯的总数最小的前提下,被两盏灯同时被照亮的边数应该尽量大。

D_Double's Journey 3098

MySQL常见面试题汇总(建议收藏!!!)

目录一、索引相关(1)什么是索引?(2)索引是个什么样的数据结构呢?(3)为什么使用索引?(4)Innodb为什么要用自增id作为主键?(5)Hash 索引和 B+ 树索引有什么区别或者说优劣呢?(6)什么是聚簇索引(6)非聚簇索引一定会回表查询吗?(6)聚簇索引和非聚簇索引的区别(6)MyISAM和InnoDB实现B+树索引方式的区别是什么?(6)MySQL中有四种索引类型,可以简单说说吗?(6)覆盖索引是什么?(6)联合索引是什么?为什么需要注意联合索引中的顺序?(6)创建的索引有没有被使用到?或者说怎

蔡政洁的博客 7万+

coze+飞书多维表格,批量分析小红书笔记,关键还能获取图片(附保姆级教程)

通过coze工作流,一键同步小红书账号和笔记链接到飞书多维表格,效率飞升~

qq_24403067的博客 4174

UVA 10859 Placing Lampposts--树形dp

原题链接:http://vjudge.net/problem/UVA-10859 题意: 给一个N个点M条边的无向无环图,每个节点都可以放灯。每盏灯将照亮以它为一个端点的所有边,在所有边都被照亮的前提下使得被两盏灯照亮的边的总数尽可能多,求灯的总数最小值,被两盏灯同时被照亮的边数和被一盏灯照亮的边数。 分析: 一个很有用的技巧:有两个所求的值要优化,比如让a尽量小,b也尽量

半壶老酒 652

原恒星尘埃生长的三维MHD模拟与湍流效应研究

星际尘埃演化是恒星形成过程中的关键环节,其动力学行为直接影响行星系统的构建。通过磁流体力学(MHD)模拟可以揭示尘埃颗粒从微米级到行星胚胎尺度的生长机制,其中湍流效应通过改变碰撞频率和密度结构发挥双重作用。最新研究采用COALA-RAMSES耦合框架,实现了包含自洽尘埃生长的三维非理想MHD模拟,量化了不同物理环境下尘埃尺寸分布的演化规律。这些发现不仅为解释ALMA观测数据提供理论依据,也对行星形成初期条件约束具有重要意义,特别是在湍流参数化与尘埃生长速率关系方面取得突破。

weixin_30988079的博客 382

uva 10859 放置街灯树形dp

首先,本题的优化目标有两个:放置的街灯a应该尽量少;被两灯同时照亮的边数b应该尽量大。为了统一起见,我们把后者替换为:恰好被一盏灯照亮的边数c应该尽量小,然后改用x = Ma+c作为优化目标,其中一个M为很大的正整数。当x取到最小值时,x/M的整数部分是放置街灯的最小值,x%M为恰好被一盏灯照亮的边数的最小值。 一般来说,如果有两个需要优化的目标v1和v2时,要求首先满足v1最小,在v1最小的情

fisty 682

机器人的“大脑”进化论:从专用控制器到高性能SoC的异构计算时代

摘要:随着AI与机器人技术融合,高性能芯片成为机器人智能化的关键。本文分析了机器人对芯片的核心需求,包括多模态数据处理、实时控制和智能决策能力。系统级芯片(SoC)因集成CPU、GPU/NPU等模块而成为主流选择。市场呈现分层格局:中低端设备(如扫地机器人)采用"MCU+轻量SoC"方案,满足基础功能;高端机器人则依赖"高性能SoC+独立GPU"处理复杂任务。除主控芯片外,完整的机器人系统还需传感器接口、驱动、通信等配套芯片。未来,芯片技术的进步将持续推动机器人智能化

致力于lidar应用开发 82

AutoSAR系列讲解(入门篇)4.6-BSW的Watchdog功能

BSW的看门狗功能

雪云飞星的博客 1万+

uva 10859 Placing Lampposts,树形dp

// uva 10859 Placing Lampposts // 树形dp // // 题目的意思是一个无向无环图中,有一些顶点和一些边 // 要在顶点上放置灯笼(灯笼可以照亮与它相邻接的点), // 使得所有的边都能被灯笼照亮,其中可能有一些边被两个灯笼 // 照亮,则要求使得所有边都被灯笼照亮所需灯笼的最小值, // 并且,此时边同时被两个灯笼照亮的数目应尽可能的多 // // 思路是 //

TIMELIMITE的专栏 782

【异常】Hermes Agent调用z.ai接口失败(余额不足)API call failed (attempt 1/3): RateLimitError [HTTP 429]

补充说明:同步尝试解析接口对应网页时,出现“网页解析失败,可能是不支持的网页类型,请检查网页或稍后重试”提示,该提示不影响核心报错排查,仅作为辅助信息。

奶爸的编程之路,也就一周冷个三天 1192

uva 10859 树形dp

题目:点我 又学到了一种得到最优解新的方法,设函数y=kx+b,如果要得到一个x最小时,b也最小的解,不妨设一个k,让 k至少要> (bMax-xMin),然后令dp[]=kx+b; 这样求得最优解ans后,最小x=ans/k,最小b=ans%k; 关于树形dp的这种问题,懒得多说。。。 不过我看题目时,无向无环图,始终没弄明白就是森林,唉,然后就想不出来了,可悲

便纵有千种风情 425

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Placing Lampposts UVA - 10859(树形dp)

题目链接 https://vjudge.net/problem/UVA-10859 题意 给你一个n个点m条边的无向无环图,在尽量上的结点上放灯,使得所有边都被照亮。每盏灯都会照亮以它为端点的所有边,要求灯尽量少且被俩盏灯照亮的边尽量多。 分析 这个题有两个最优化条件,灯数a尽量小,被两盏灯照亮的边b尽量大。先把条件转化为尽量小,被一盏灯照亮的边c尽量小;这样,我们就可以用一个变量x=M...

EnjoyingAC的博客 196

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

UVA10859 树形DP

https://vjudge.net/problem/UVA-10859和我之前做的一道BZOJ有一点像我感觉这道题的灵魂并不在于树形DP而是巧妙地将两个状态用一种表达方式合并成了一种状态因为灯数是主要部分,会起决定作用而尽量要让大街的被一次照亮的次数要少所以取一个大数M将状态表示成为a*M+b不断的DP这个状态就变得简单AC代码:#include&lt;bits/stdc++.h&gt; usi...

Gipsy 271

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

uva 10859 树形dp

有向无环图可以看做森林。对于每棵树,可以

gaokuilin1060083530的专栏 513

UVa 10859 Placing Lampposts (树形DP)

UVA 10859 Placing Lampposts题目大意:给一个n点m边的无向无环图,在尽量少的节点上放灯,使得所有边都被照亮,一个点上的灯可以照亮与该点相连的所有边,在灯最少的前提下,使得被两盏灯照亮的边尽可能多.输出所需灯个数,被两盏灯照亮的边个数,被一盏灯照亮的边个数.题目分析:无向无环图,显然就是一棵无根树.而m有可能小于n-1,那么就可能是多棵树,即森林. 显然这是树形DP,但是需

Continue 423

UVA 10859【树形dp】

题意:给你一个n个点m条边的无向无环图,每个节点都可以放灯。每盏灯将照亮以它为一个端点的所有边。 在所有边都被照亮的前提下,求灯的总数最小数,被两盏灯同时被照亮的边数应该尽量大的灯数。 分析:将问题转换成灯的总数(a)最小,被一盏灯照亮的边数(b)应该尽量小。 将这两个取小值合并成一个问题,引入一个大值M,x=a*M+b,这时x最小时,a=x/M最小,且b=x%M最小。 这时只要求最小的x

Fb_by 399

uva10859 (树形dp)

题意:给你一个n个点m条边的无向无环图,在尽量少的节点上放灯,使得所有边都被照亮。每盏灯将照亮以它为一个端点的所有边。在灯的总数最小的前提下,被两盏灯同时被照亮的边数应该尽量大。 分析:紫书P71,很详细。 代码: #include<bits/stdc++.h> using namespace std; vector<int> adj[1010]; // 森林是稀...

常胜将军的博客 292

Placing Lampposts ,UVa 10859 树形dp

UVa 10859日常刷白书,第三次刷dp刷到这题,竟然还是不会写.....这个题给定n个点m条边的无向无环图,有至多1000个节点,每个节点有两个状态,可以放灯或者不放灯,要求放最少的灯使得所有边被照亮且被两盏灯同时照亮的边数尽量大。这个题直接写无从下手,但是可以把问题转化一下,转化为求最少的灯数a且只被一盏灯照亮的边数b尽量小,可以把目标转换成求x=Ma+c的最小值,M可取2000,设i节点放...

ccsu_cat 290

UVA10859 Placing Lampposts --- 树形dp

题意: 给定n点m边无向无环图,n<1000,在点上放置灯,一条边的至少一个端点有灯,则称该边被一点覆盖, 要求在满足所有边被覆盖的前提下, 要求使用尽量少的灯, 在灯数量最少的情况下, 再要求被2点覆盖的边最多, 求此时的灯数量,被2点覆盖的边数,1点覆盖的边数 题解: 参考https://www.cnblogs.com/yohanlong/p/7764014.html...

。 327

uva 10859 Placing Lampposts 树形dp

#include #include #include #include #include #include #include #include using namespace std; #define clr(a, x) memset(a, x, sizeof(a)) #define rep(i, n) for (int i = 0; i < (int)(n); i++) #def

角落里的阳光 710

UVA10859 Placing Lampposts 树形DP

这个题目类似之前做过,方案是一个j

636

树形DP(放置街灯,uva 10859)

前面也做了一道很像的题,那道题只要求放置的数目最少,要求覆盖的是点。在这题中,要求覆盖的是边,不但要求放着的数目最少,更要求覆盖两次的边最多。因此贪心法不再适用,最少要多少个点可以贪心求出,但是同时要求覆盖两次的边要最多却不是贪心法能够解决的,无论如何都是逃不过动态规划的。所以一开始用贪心做,做到最后发现方法是错的。看了大白书才开始用动态规划。 大白书上的方法好奇怪,dp[i][j]代表

xl2015190026的博客 553

UVA - 10859 Placing Lampposts 树形dp 个人理解和做法

题目: https://vjudge.net/problem/UVA-10859 题意: 有n个点m条边的无向无环图,在尽量少的节点上放灯,使得所有边都被照亮(每个灯照亮以它为顶点的边),在灯的总数最小的前提下,被两盏灯同时照亮的边数应该更大。 其实我以前没做过类似的题,看到这道题我是莫得一点思路orz。。。 动态规划是无向无环图(可以看成是树)优化的很好的工具,本题要求的是放置的灯尽可能少...

forOnward的博客 214
上一篇: uva 11825 集合动态规划
下一篇: uva10529 概率dp+区间dp
labrother
博客等级 码龄11年 2粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值