Codeforces #101D: Castle 题解

Codeforces #713C: Sonya and Problem without a Legend 题解 如果做过cf 13C sequence应该马上就能发现这两道题惊人的相似 但是这题要求严格递增,怎么办呢? 于是有一个神奇的做法 对于a[i],将其减去i,得到新数组b,b数组中只要保证不下降,a就能保证严格递增 于是可以上dp代码了 (dp方程可以看13C sequence) #include #include #include #include #include #inc 阅读详情

尝试思考每棵子树应该按照什么样的顺序访问
要访问完一棵树的总时间肯定是这棵树内所有的边权之和×2,将这个值定义为T(x)T(x),其中xx表示子树的根,再定义sz(x)表示以xx为根的子树的节点数,考虑某个节点的两棵子树x,y,如果先访问xx比先访问y更优,那么应该满足如下条件:

T(x)+T(x)∗sz(y)+T(y)<T(y)∗T(y)∗sz(x)+T(x)T(x)+T(x)∗sz(y)+T(y)<T(y)∗T(y)∗sz(x)+T(x)

大概可以这样理解:如果先走xx,那么y中所有的节点都要多等一个T(x)T(x)的时间,反之亦然
两边约一下,得到T(x)∗sz(y)<T(y)∗sz(x)T(x)∗sz(y)<T(y)∗sz(x),按照这个规则确定子树的访问顺序,再搜一遍就好

*注意一下虽然T(x)T(x)是不爆long long的,但cmp函数中T(x)∗sz(y)T(x)∗sz(y)会爆long long,要小心

#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>
#include <utility>
#include <cctype>
#include <algorithm>
#include <bitset>
#include <set>
#include <map>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <cmath>
#define LL long long
#define LB long double
#define x first
#define y second
#define Pair pair<int,int>
#define pb push_back
#define pf push_front
#define mp make_pair
#define LOWBIT(x) x & (-x)
using namespace std;

const int MOD=100003;
const LL LINF=2e16;
const int INF=1e9;
const int magic=348;
const double eps=1e-10;
const double pi=acos(-1);

inline int getint()
{
    char ch;int res;bool f;
    while (!isdigit(ch=getchar()) && ch!='-') {}
    if (ch=='-') f=false,res=0; else f=true,res=ch-'0';
    while (isdigit(ch=getchar())) res=res*10+ch-'0';
    return f?res:-res;
}

int n;
vector<Pair> v[100048];
int sz[100048],edgelen[100048];

inline void dfs(int cur,int father)
{
    int i,y;sz[cur]=1;edgelen[cur]=0;
    for (i=0;i<int(v[cur].size());i++)
    {
        y=v[cur][i].x;
        if (y!=father)
        {
            dfs(y,cur);
            sz[cur]+=sz[y];
            edgelen[y]+=v[cur][i].y*2;edgelen[cur]+=edgelen[y];
        }
    }
}

inline bool cmp(Pair x,Pair y) {return (long long)edgelen[x.x]*sz[y.x]<(long long)edgelen[y.x]*sz[x.x];}

LL ans=0;
inline void Dfs(int cur,int father,int tm)
{
    int i,y;sort(v[cur].begin(),v[cur].end(),cmp);
    ans+=tm;int curtm=tm;
    for (i=0;i<int(v[cur].size());i++)
    {
        y=v[cur][i].x;
        if (y!=father) Dfs(y,cur,curtm+v[cur][i].y),curtm+=edgelen[y];
    }
}

int main ()
{
    int i,x,y,c;n=getint();
    for (i=1;i<=n-1;i++)
    {
        x=getint();y=getint();c=getint();
        v[x].pb(mp(y,c));v[y].pb(mp(x,c));
    }
    dfs(1,-1);
    Dfs(1,-1,0);
    double fans=ans;fans/=(n-1);
    printf("%.6lf\n",fans);
    return 0;
}
四边形不等式和完全单调性 四边形不等式 如果有一个矩阵MMM,对于任意a&lt;ba&lt;bac&lt;dc&lt;dcM(a,c)+M(b,d)≥M(a,d)+M(b,c)M(a,c)+M(b,d)≥M(a,d)+M(b,c)M(a,c)+M(b,d)\geq M(a,d)+M(b,c),我们称这个矩阵满足四边形不等式 我们考虑一个简单的问题:如何验证一个矩阵是否满足四边形不等式? 显然有O(n2m2)O(n2m... 阅读详情

相关推荐

告别Win11睡眠假死:深入解析Modern Standby S0与S3冲突及注册表修复方案

本文深入解析了Windows 11中Modern Standby(S0)与传统睡眠(S3)模式的冲突,该冲突是导致电脑睡眠后出现假死、断网等问题的根源。文章提供了通过修改注册表键值(PlatformAoAcOverride)强制启用稳定S3睡眠的终极修复方案,并附有详细诊断步骤与避坑指南,帮助用户彻底解决睡眠故障。

ol789012的博客 823

Codeforces 101D

树形dp,关于sort那里, 假如u的两个子树v1,v2相继访问,那么优先访问谁 假如此时已经过去时间t,假如先访问v1: dp[v]访问v树的最优花费,son[v]v树的节点个数,sumv*2 fv1=(t+(u,v1))*son[v1]+dp[v1] fv2=(t+sum[v1]+(u,v2))*son[v2]+dp[v2];假如先访问v2: f1v2=(t+(u,v2))*son[

wen_xp的专栏 331

AM驱动架构—优质Mini-LED显示技术解决方案

(VR)和增强现实(AR)设备:MiniLED背光驱动方案适用于虚拟现实和增强现实设备中的显示技术,通过高亮度和高对比度的显示效果,创造更逼真的虚拟体验此外,MiniLED背光还能够实现更快的响应速度,减少图像残影,使得用户的动作在虚拟环境中更加流畅自然。以其出色的性能和广泛的应用前景备受关注是实现MiniLED显示效果的重要环节。1)更高的亮度和对比度:尺寸更小,可以在同样面积的显示屏上配置更多的LED,并且通过独立控制每一个MiniLED,可以实现更高的亮度和更细致的对比度,使得显示画面更加鲜明清晰。

isweekDN的博客 2763

CodeForces 101D Castle (贪心)

#include #include #include #include #include #include using namespace std; #define N 400020 #define M 200020 int fst[N], nxt[M], vv[M], cost[M], e; void init() { memset(fst, -1, sizeof fs

yamiedie_ 661

SAP 实例解析分期付款配置及应用

SAP系统的付款条件支持分期付款功能,其奥妙之处就在于需要定义一个母条款和一个子条款,其中,母条款需要标识“分期付款”。 首先,定义分期付款的母条款OBB8:             然后,定义子条款(即分期付款的具体方式)OBB9:   由上图可以看出,分期付款的配置还是很强大的,针对每次付款,都可以进行第二层次付款条件的设置。   然后,我们做一笔发票,

heng0757的专栏 1万+

OpenCV-Python实战(1)——OpenCV简介与图像处理基础

OpenCV 是一个的跨平台计算机视觉库,可以运行在 Linux、Windows 和 Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时也提供了 Python 接口,实现了图像处理和计算机视觉方面的很多通用算法。在本文中,将介绍 OpenCV 库,包括它的主要模块和典型应用场景,同时使用 OpenCV-Python 实战讲解图像处理基础要点。

盼小辉丶的博客 27万+

CodeForces 101D

题意:一个城堡中有N个大厅,它们由N-1条长廊连成一个树状结构。在除了编号为1的大厅中的N-1个大厅里有一个宝物,宝物在这N-1个大厅中的概率相等。Gerald起始在1号大厅,他不知道宝物在哪个大厅。他要找出一条路径,使得他找到宝物所花时间的期望最小。 #include #i

RaceBug2010的专栏 747

2025年再论 SAP ABAP 系统经典的三层架构的理解

【摘要】本文基于作者19年SAP开发经验,深入解析SAP经典三层架构在S/4HANA时代的演进与实践。数据库层从多数据库支持转向HANA专属,通过SQLScript实现计算下推;应用层以ABAP平台为核心,融合OData和RAP等现代开发范式;表现层从SAP GUI过渡到Fiori Launchpad为主导。文章通过真实案例(如月末关账优化、ATP检查改造)展示三层协作如何提升性能,并探讨了本地/云/混合部署策略。全文贯穿SAP官方技术文档参考,为开发者提供体系化架构认知和实践指导。

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

CodeForces 101D Castle(树形dp)

题意:给出一棵树,每条边有一个权值,问到达所有节点的路程长度最小平均值是多少。 思路:对于一个结点i,假设它有son[I]棵子树,子树中所有边长两倍是T[I],到达所有节点的距离和的最小值为 dp[I],那么可以得到状态转移方程 dp[I] = sigma(dp[v]) + (son[I]-son[v1])*T[v1]+...+(son[vs])*T[vs-1] 也就是说现在要给子节点规定一

GODSPEED 921

22、云数据中心网络(DCN)部署最佳实践

本文详细介绍了云数据中心网络(DCN)部署的最佳实践,涵盖SDN设计、服务网络规划、管理网络规划等方面。通过合理的架构设计、路由规划和组件协同,提升数据中心的自动化水平、可靠性及安全性,以满足不断增长的业务需求。

d6e7f8的博客 187

ArcGIS与地理加权回归GWR【一】

因此,在实际问题研究中我们经常发现回归参数在不同地理位置上往往表现为不同,也就是说回归参数随地理位置变化,这时如果仍然采用全局空间回归模型(全局假设β是不会变得),得到的回归参数估计将是回归参数在整个研究区域内的平均值,如上所说某一个因素在ABC等不同的地理位置对房价的影响是不同的,假如采用全局空间回归模型,便忽略了数据的空间位置属性,只反映平均意义下因变量与自变量的相关关系,而不能有效反映回归关系的空间非平稳性的特征。当自变量为1个时,是一元线性回归,自变量为2个及以上时,称为多元线性回归。

JData_Engineer的博客 1375

codeforces #549 Looksery Cup 部分题解

掉Rating快乐~~A.Face Detection题目大意:给定一个n∗mn*m的矩阵,求有多少2∗22*2的子矩形满足单词“face”的每个字母在矩形中恰好出现一次签到题#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define M 55 using namespace std; i

世界 1420

大数据领域数据产品的团队激励与绩效管理

在大数据领域,数据产品的成功离不开高效协作的团队。团队激励与绩效管理的目的在于激发团队成员的工作热情和创造力,提高工作效率和质量,确保数据产品能够按时、高质量地交付。本文章的范围涵盖了大数据领域数据产品团队激励与绩效管理的各个方面,包括激励机制的设计、绩效评估的方法、团队沟通与协作等。本文将按照以下结构进行阐述:首先介绍核心概念与联系,明确相关概念的定义和相互关系;接着讲解核心算法原理和具体操作步骤,为团队激励与绩效管理提供理论支持和实践指导;然后分析数学模型和公式,帮助读者深入理解绩效评估的原理;

Java大师兄的博客 1018

Educational Codeforces Round 40 G. Castle Defense

题目要求最大化最小值,因此肯定要二分答案了; 那么二分了之后怎么检查呢?对于从左往右的第i个城堡,如果它的防御值不满足二分的x的话, 那么考虑到他左边的城堡都满足了这个x值,因此弓箭手肯定加在i+rad上最佳。 然后怎么扫,一开始以为要用线段树或者树状数组维护前缀和,然后都tle GG了 后来发现其实拿两个指针,一个指向左边,一个指向右边,维护这一段的和即可,每次检查复杂度大概是线性的,可...

HumveeA6的博客 312

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

CodeForces - 954G Castle Defense (二分+尺取法思想)

Castle Defensetime limit per test1.5 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputToday you are going to lead a group of elven archers to defend the castle that is ...

LP_Cong 1003

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Codeforces 101D. Castle (贪心)

题目: http://codeforces.com/problemset/problem/101/D 题意: 给定一颗树,和每次经过一条边的时间花费; 初始人物在点1处,他将走过所有的点; 每条边至多经过两次; 当走到点i时,ans+=当前时间; 最后输出最小的ans/(树上总点数-1)。 分析: 关键在于一个点有多颗子树时,如何选择走行顺序。 考虑点root有两颗子树s1和s2; 设f[s1]是...

OI -> ACM -> AI 453

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

codeforces 549H Degenerate Matrix(二分)

Description The determinant of a matrix 2 × 2 is defined as follows: A matrix is called degenerate if its determinant is equal to zero. The norm||A|| of a matrix A is defined as a maximum

hahahaha 285

【CodeForces】CodeForces Round #530 (Div. 1) 题解

【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Sum in the tree 【思路要点】 题目中给出的限制条件相当于限定了所有深度为奇数的点及其父亲的权值和,显然,将深度为偶数的非叶节点的权值设置得尽可能大有利于减少全局权值和。 时间复杂度 O(N)O(N)O(N) 。 【代码】 #include&amp;lt;bits/stdc++.h&amp;gt; usi...

cz_xuyixuan的博客 745

USACO 2018 January Contest Platinum A: Lifeguards 题解

将所有的区间按左端点从小到大排序 我们处理那些被完全包含的区间,这些区间即使删除也不会使答案变坏 这样先删一波,如果发现这种小区间的个数多于k,就可以直接算答案了 否则我们要dp 设dp[i][j]为考虑到第i个区间,已经删除了j个区间,且第i个区间没有被删除的情况下最大的覆盖长度 显然有状态转移方程dp[i][j]=max(dp[k][j-i-k-1]+第i个区间贡献的覆盖) 这个方

IcePrincess_1968's World 1923

Codeforces GYM 100753J: Souvenirs 题解

这题是显然的dp 设dp[i][j][k]为考虑到第i个商人(第i个商人已经处理完),当前有j个金币和k个银币时,最多能买到多少纪念品 1.不买第i个纪念品,dp[i][j][k]=max(dp[i][j][k],dp[i-1][j][k]) 2.用金币买第i个纪念品,dp[i][j][k]=max(dp[i][j][k],dp[i-1][j+1][k-get*pack[i]]+1) ge

IcePrincess_1968's World 930

TopCoder SRM477C: KingdomTour 题解

很难的dp题 如果不加shortcut,那么显然只有一种遍历方案,每条边都走了两遍 shortcut只能走一次,而树边可以走无数次,不统一不方便,考虑转化模型 可以想到每条树边最多走两次,一上一下,走更多的次数显然没有好处 可以把每条树边拆成两条边,规定每条边只能走一次,这样这些边的性质就和shortcut一样了 我们可以从欧拉图的角度来考虑这件事情,拆边以后,每个点的度数都是偶数,所以...

IcePrincess_1968's World 865

TopCoder SRM450C: RowGame 题解

看到k这么大,我的思维立刻就往什么dp+矩乘或者是倍增上走 dp+矩乘看上去挺靠谱的,但是题目要求任意时刻权值非负,那么就得再加一维来控制当前的权值,而当前权值的范围是很大的,这样会超时 于是考虑仔细观察此题的性质 我们可以设想:如果k→infk→infk\rightarrow inf 那么我一定会想办法走到这个序列的最长子串上然后来回摆动 然而并不是能一下子走到最长子串上的,如果中间有一...

IcePrincess_1968's World 848

AtCoder Regular Contest 097F: Monochrome Cat 题解

这道题的思路非常巧妙 首先我们可以把那些全部都是黑点的子树扔掉,他们是不会被遍历的 这时,剩下的树的所有的叶子都是白色的 我们先考虑终点和起点重合的情况 这时如果我们想把它全部变黑的话必须遍历整棵树 并且我们发现,无论以哪个点为起点,答案都是一样的,首先所有的边都要走两遍,第二,一个点被走过的次数等于它的度数,所以一个点是否需要停留一秒也是可以算出来的(显然的是,一个点最多停留一秒),这...

IcePrincess_1968's World 790

UOJ #275: 组合数问题 题解

非常好的题目,感觉这个lucas的应用算是常见套路了吧 题目要求CMN≡0(modk)CNM≡0(modk)C_N^M\equiv0(modk),因为k是质数,所以根据Lucas定理,CM/kN/k∗CMmodkNmodk≡0(modk)CN/kM/k∗CNmodkMmodk≡0(modk)C_{N/k}^{M/k}*C_{Nmodk}^{Mmodk}\equiv 0(modk) 我们发现这个...

IcePrincess_1968's World 769

Codeforces #995F: Cowmpany Cowmpensation 题解

非常好的dp题 首先可以参见topcoder randomapple的套路,就是我算这棵树的权值种数为i的方案数,最后乘CiDCDiC_D^i就好 考虑dp[i][j]表示以i为根的子树,i的权值不超过j的方案数 我们发现这样会重复计数,因为我们计算了一些本质相同的方案,比如全1和全2,他们各自在乘CiDCDiC_D^i的时候会把对方算进去 所以我们实际上要算的是本质不同的方案数 dp[...

IcePrincess_1968's World 730

Codeforces #39C: Moon Craters 题解

这道题一看就是dp,但感觉不知道怎样dp 刚开始想了一个dp[i]表示在前i个圆里面选互不重叠的最多能选几个,把圆先按右端点排序。但是圆的大小的任意性使得dp不正确 后来想了一个非常复杂的dp 先按圆的右端点从小到大排序,右端点相同的按半径大小从小到大排序,这样保证在考虑到第i个圆的时候,他不可能被前面的圆包含或是内切于前面的圆 对排序后的圆数组先做两个预处理: 1.对于圆i,记录右端点

IcePrincess_1968's World 686
上一篇: Codeforces #219D: Choosing Capital for Treeland 题解
下一篇: POJ1201: Intervals 题解
IcePrincess_1968
博客等级 码龄9年 13粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值