CF 109C: Lucky Tree

【信息科学与工程学】计算机科学与自动化——第十篇 芯片设计31 芯片中的参数01 研发领域 阅读详情

题目链接:

http://codeforces.com/contest/109/problem/C


题目大意:

在一棵树上,有一些边是幸运边,现要求出点组(i, j, k)的数量,使得i 到j 的路径上和i 到k 的路径上都至少有一条幸运边。


算法:

法一:

将点按照非幸运边缩联通块。

枚举做i 的点,那么以该点为i 的所有解,即是由i 点与任意两个不与它在同一个联通块内的点的组合。

法二:

对于每个点,记录下它的子树内有多少个点到它的路径上有幸运边,以及它的子树外有多少个点到它的路径上有幸运边。

然后枚举这个点做i 时,另两个点分别有0,1,2个在它子树内的情况。

注意这两个值一个只能由下到上更新,一个只能由下到上更新,所以要DFS两次。计算的方法就是分情况树形DP传递一下。


代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <string>
#include <climits>
#include <cmath>
#include <queue>
#include <vector>
#include <stack>
#include <set>
#include <map>
#define INF 0x3f3f3f3f
#define eps 1e-8
#define fi first
#define nd second
#define mp make_pair
using namespace std;

const int maxn = 110000;
vector<pair<int, bool> > edge[maxn];
long long cot0[maxn], cot1[maxn], cot2[maxn], cot3[maxn];
long long ans;

inline bool check(int x)
{
    if (! x)
    {
        return false;
    }
    while (x)
    {
        if ((x % 10 != 4) && (x % 10 != 7))
        {
            return false;
        }
        x /= 10;
    }
    return true;
}

void dfs0(int u, int p)
{
    for (int i = 0; i < edge[u].size(); i ++)
    {
        int v = edge[u][i].fi;
        if (v == p)
        {
            continue;
        }
        dfs0(v, u);
        if (edge[u][i].nd)
        {
            cot1[u] += cot0[v] + cot1[v] + 1;
        }
        else
        {
            cot0[u] += cot0[v] + 1;
            cot1[u] += cot1[v];
        }
    }
    ans += cot1[u] * (cot1[u] - 1);
}

void dfs1(int u, int p)
{
    for (int i = 0; i < edge[u].size(); i ++)
    {
        int v = edge[u][i].fi;
        if (v == p)
        {
            continue;
        }
        if (edge[u][i].nd)
        {
            cot3[v] = cot2[u] + cot3[u] + cot0[u] + cot1[u] - cot0[v] - cot1[v];
        }
        else
        {
            cot2[v] = cot2[u] + cot0[u] - cot0[v];
            cot3[v] = cot3[u] + cot1[u] - cot1[v];
        }
        ans += cot1[v] * cot3[v] * 2;
        ans += cot3[v] * (cot3[v] - 1);
        dfs1(v, u);
    }
}

int main()
{
    int n;
    while (scanf("%d", &n) == 1)
    {
        ans = 0LL;
        memset(cot0, 0, sizeof(cot0));
        memset(cot1, 0, sizeof(cot1));
        memset(cot2, 0, sizeof(cot2));
        memset(cot3, 0, sizeof(cot3));
        for (int i = 0; i <n; i ++)
        {
            edge[i].clear();
        }
        for (int i = 1; i < n; i ++)
        {
            int u, v, w;
            scanf("%d %d %d", &u, &v, &w);
            edge[u - 1].push_back(mp(v - 1, check(w)));
            edge[v - 1].push_back(mp(u - 1, check(w)));
        }
        dfs0(0, -1);
        dfs1(0, -1);
        printf("%I64d\n", ans);
    }
    return 0;
}


030、微透镜阵列与光场成像:从光场相机到深度感知的演进 文章摘要: 光场成像通过微透镜阵列(MLA)同时记录光线的位置与方向,实现单次曝光获取三维信息。其核心架构包括主镜头+MLA+传感器或相机阵列,各有分辨率与体积的权衡。光场支持先拍照后对焦和深度估计,但受限于微透镜基线短,精度较低。深度算法需结合多视角立体匹配与极平面图像分析,并处理噪声和温度漂移等实际问题。光场适用于短距离动态场景(如手势识别),而远距离高精度需求仍需激光雷达。建议初学者通过二手光场相机和开源工具入门,理解光场“角度域”与“空间域”的协同机制。 阅读详情

相关推荐

上下文理解的AI增强方案:AI应用架构师的架构洞察

本文将从AI应用架构师的视角,深入探讨“上下文理解”的技术本质、核心挑战,以及一套可落地的上下文增强架构方案。我们会拆解上下文理解的底层需求,分析架构设计中的关键决策,并通过具体案例展示如何构建一个能“记住过去、理解现在、预测未来”的AI系统。三个维度:上下文的内容范围(短期/中期/长期)、数据类型(文本/结构化/多模态)、技术挑战(窗口限制/信息过载/跨会话一致性);三种架构模式:分层上下文存储(热/冷数据分离)、上下文路由(按需筛选)、动态压缩(适配模型窗口);四个关键组件。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 220

【CF109C】Lucky Tree【并查集】【dfs】

题目大意: 题目链接:https://codeforces.com/problemset/problem/109/C 给出一棵树,定义树上一条边的边权若只由4和7两个数字构成,则这一条边为幸运边。求这棵树上有多少三元组(x,y,z)(x,y,z)(x,y,z)满足xxx到yyy的路径上和yyy到zzz的路径上都至少有一条幸运边。 思路: 最多绿题难度。结果洛谷给评了一个紫题。 考虑对于每一个点x...

stoorz 339

基于eBPF和LSM的强制文件访问控制系统架构设计和实现

本文介绍了一种基于 eBPF 与 Linux 安全模块(LSM)实现的强制文件访问控制系统。该系统利用 eBPF 的高性能和动态加载能力以及 LSM 的系统调用拦截功能,提供了灵活且强大的文件访问控制策略。文章详细描述了系统的设计思路、架构组成、关键代码实现及错误处理方式。通过用户空间程序与内核态 eBPF 程序的协作,实现了对文件操作的实时监控和控制,支持动态更新安全策略而无需重启系统。此外,文中还讨论了未来可能的扩展方向,如增加更多 hook 点、集成其他安全模块以及性能优化等。

Linux内核研究者 1839

Codeforces 109C Lucky Tree 组合计数+dfs

题目链接:点击打开链接 题意: 给定n个点的树,有边权。 定义lucky number:数字只有4或7组成 对于一个三元组(i, j, k) 若path(i,j) 路径上的数字存在lucky number && path(i,k) 路径上的数字存在lucky number 则三元组合法。 问有多少个合法的三元组。 ( (i,j,k) != (i,k,j) ) 用全集-补集。dfs

九野的博客 1788

汽车ECU开发必看:AUTOSAR存储管理模块NvM的5个实战技巧

本文聚焦汽车ECU开发中AUTOSAR存储管理模块NvM的实战应用,分享了五个源自量产项目的核心技巧。内容涵盖Class 3配置的精细调优、稳健冗余策略的构建、读写性能的毫秒级优化、典型工程问题的解决方案以及高效的集成测试方法,旨在帮助开发者规避常见陷阱,实现可靠、高效的存储方案。

weixin_29192211的博客 275

告别手动拖拽!PyQt5/PyQt6 QTableView列宽自适应窗口的三种实战方案(附性能对比)

本文详细介绍了PyQt5/PyQt6中QTableView列宽自适应窗口的三种实战方案,包括Stretch模式、resizeEvent手动计算和ResizeToContents模式,并附有性能对比。帮助开发者解决窗口大小变化时列宽不变的常见问题,提升用户体验和开发效率。

weixin_42538752的博客 233

CF109C Lucky Tree

知识点:思维,并查集。

m0_73035684的博客 117

低光照图像增强:从传统方法到深度学习

低光照图像增强:从传统方法到深度学习​ 人工智能,计算机视觉,大模型,AI,本文聚焦视觉模型的偏差与公平性问题,阐述了偏差在性别、种族、年龄等方面的表现及对医疗、司法、安防等领域的影响。分析了偏差源于数据采集与标注问题及算法局限。介绍了准确率差异等公平性评估指标、相关数据集和工具,还给出数据处理、算法改进、模型训练等避免歧视的策略,并附代码示例与实际案例,为提升视觉模型公平性提供多方面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 2万+

CF109 C. Lucky Tree 并查集

Petya loves lucky numbers. We all know that lucky numbers are the positive integers whose decimal representations contain only the lucky digits4and7. For example, numbers47,744,4are lucky and...

weixin_30952103的博客 209

Linux 4.19、Linux 5.10、Linux 6.1 三个版本详细分析

Linux 4.19发布日期:2018年10月22日LTS 状态:是长期支持版本,官方支持到2024年12月。Linux 5.10发布日期:2020年12月13日LTS 状态:LTS 版本,官方支持到2026年12月。Linux 6.1发布日期:2022年12月11日LTS 状态:不是官方的LTS版本,但通常社区会为新的版本提供一定时间的支持。定位:稳定性和长期支持,广泛应用于多种平台,尤其是嵌入式系统和服务器。主要优势:稳定性高,广泛的硬件支持,核心功能可靠。

小灰灰的博客 5957

影像技术实战02:FFmpeg 镜头切分误检、漏检问题排查与基于场景变化的稳定分镜方案

本文介绍了基于FFmpeg的镜头切分技术在实际应用中的常见问题及解决方案。文章首先指出单纯使用select='gt(scene,0.4)'命令进行镜头检测存在误检、漏检等问题,包括黑场、字幕变化被误判为镜头切换,以及相似场景切换被漏检等情况。随后提出了一套四层架构的稳定解决方案:1)用FFmpeg提取候选镜头变化点;2)解析变化点时间和分数;3)通过后处理过滤异常点;4)按时间点切割视频片段并生成报告。文中详细展示了Python实现代码,包括场景点检测、时间间隔过滤等功能模块,为视频剪辑、影视解说等场景提供

ai技术增长的博客 402

CodeForces 109C 树形DP Lucky Tree

赶脚官方题解写得挺清楚的说,=_= 注意数据范围用long long,否则会溢出。 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <vector> 6 usi...

weixin_30596023的博客 218

SAP UI5 用数据绑定导出:从 ExportTypeCSV 到 Spreadsheet 的完整实践与取舍

SAP UI5 数据绑定导出机制通过复用 Model、Binding Path 等配置,将控件视图转换为文件格式。早期方案使用 sap/ui/core/util/Export 生成 CSV,需自定义 ExportType 扩展格式;现代方案推荐 sap/ui/export/Spreadsheet 直接导出 XLSX,支持类型精度和智能表格集成。注意 CSV 方案已弃用但仍有业务价值,需根据项目需求选择合适方案。两种方式都基于数据绑定,避免重复定义列结构和格式化逻辑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 268

ZOJ 3734: LIKE vs CANDLE

题目链接: http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5069 题目大意: 若干微博账户形成了一个转发树(即一个有根树)。 每个账户有自己的价值,每个账户也有自己的态度(赞或蜡烛)。 如果一个账户的态度是“赞”,它的价值就会被加到“赞”的一边,反之亦然。 你可以从“赞”的一边拿出X 的价值

frog的小池塘 2622

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

HDOJ 4582: DFS spanning tree

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4582 题目大意: 给出一个有向图。 这个图的前n-1条边构成这个图的一个以节点1为根节点的DFS树。 T-Simple环的定义是:至多有一条边不在这棵DFS树上的环。 问,至少在图上选中多少条边。才使得每个T-simple环都至少有一条边被选中。 算法: 需注意的是,题目

frog的小池塘 2496

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

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

CF 341C: Iahub and Permutations

题目链接: http://codeforces.com/contest/341/problem/C 题目大意: 给定一个含有N个位置的序列,某些位置上的数字已经确定,某些位置上的数字没有确定。 求这个序列可能产生多少种错排(a[i] != i)。 算法: DP的方法有很多种。 也可以容斥。

frog的小池塘 2322

POJ 3123 Ticket to Ride

题目链接: http://poj.org/problem?id=3123 题意: 在n个城市间要建立四条铁路线,给定每条线路的起点和终点。 如果某两个城市之间可以建造铁路,那么建造这条铁路将有一定的花费。 求建立四条的最小总费用。 算法: 这道题还是斯坦纳树,以四条线路的起点和终点为关键点。 关键点中显然可能有重复的,不过不影响解题。 注意,最终要求的地图可能是由

frog的小池塘 2031

CF 7D: Palindrome Degree

题目链接:http://codeforces.com/contest/7/problem/D 题意: “等级”的定义是, 若一个长度为len的前缀是回文串, 且它的长度为floor(len/2)的前缀和后缀的“等级”为k, 则它的等级是k+1。 求一个字符串所有前缀的“等级”和。 算法: 我是用manacher算法求的回文串。 manacher算法的介绍很多,比如

frog的小池塘 2027

CF 314B: Sereja and Periods

由于CF可以看代码的缘故,一般不写CF题解。 但是觉得这道题确实比较巧妙,于是记录一下。 做这道题时参考了两位神犇的代码: http://codeforces.com/contest/314/submission/3832474 http://codeforces.com/contest/314/submission/3845338 谢谢! 题目链接:http:

frog的小池塘 1967

HDOJ 4689: Derangement

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4689 题目大意: 已知1 ~ N 的全排列。 给出第 i 位置上的数比i大还是小。 求可能的方法数。 算法: 这个DP有点儿绕。 由左向右依次处理,注意只能把已经处理的数填在已经处理的位置上。也就是处理到 i 时只能把数字1 ~ i 填到第1 ~ i 的位

frog的小池塘 1771

CF 379D: New Year Letter

题目链接: http://codeforces.com/contest/379/problem/D 题目大意: 给定一个长度为n的字符串s1和一个长度为m的字符串s2。 做k - 2次类似斐波那契的操作:sk = s(k-1) + s(k-2)。 已知sk中恰好含有k个"AC"子串,求是否存在符合条件的s1、s2 算法: 显然,

frog的小池塘 1482

SRM 552 - 500 FoxAndFlowerShopDivOne

题目链接: http://community.topcoder.com/stat?c=problem_statement&pm=11387 题目大意: 一个矩阵中种了两种花, 一个方格里最多种一支花,可以不种。 现在要在矩阵中选取两个不相交的子矩阵,使其中两种花数量之差不超过规定值,且两种花的总数最大。 算法: 这道题是很水的一道枚举题。 两个不相交子矩阵,要不就是

frog的小池塘 1466

BZOJ 2038: 小Z的袜子

题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2038 题目大意 算法: 很有趣的是,这道题我在两周前去成都赛区的时候就做出来了,一直忘了贴了。。

frog的小池塘 1391

SRM 610 - 550 AlbertoTheAviator

题目链接: 暂无 题目大意: 有n个任务需要完成,初始具有F的能量。 任务i开始之前至少要具有的能量duration[i],任务结束后可以得到refuel[i]的能量补充,refuel[i]严格小于duration[i]。 完成任务的顺序不限,问至多完成多少个任务。 算法: 先排序再背包。 排序的时候要先按照refuel[i]从大到小,再按照duration[i]从

frog的小池塘 1376

HDOJ 4670: Cube number on a tree

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4670 题目大意: 树的每个节点有一个点权,所有的点权都可以被给定的30个质数表示出来。 在树上找合法点对。 合法点对指的是,两点间路径上的所有点(含端点)的点权乘积是立方数的点对。 注意:点对中的两个点可以是相同的,这个坑了我好久,切~ 算法: 树的点分治。 每次处

frog的小池塘 1364

SOJ 3194: K-th

题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=3194 题目大意: 求区间第K大数。 X小于Y的定义是:X的各数字之和小于Y的个数字之和,或者X的各数字之和等于Y的个数字之和且X的数值小于Y。 算法: 很明显能看出来这是个数位DP。 但这题有点儿绕。 我的做法是,先写一个函数用记忆化搜索求[0,x]区间内各数字

frog的小池塘 1300
上一篇: SRM 610 - 550 AlbertoTheAviator
下一篇: SRM 553 - 500 TwoConvexShapes
frog1902
博客等级 码龄14年 152粉丝 107原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值