[BZOJ2151]聪聪可可(点分治)

BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐 【BZOJ修复计划 #16】BZOJ 2151 种树【国家集训队2011】 阅读详情

第一次♂点分治

由爸爸♂ljx在纸上画n个“点”,并用n-1条“边”把这n个“点”恰好连通(其实这就是一棵树)。并且每条“边”上都有一个数。接下来由聪聪和可可分别随即选一个点(当然他们选点时是看不到这棵树的),如果两个点之间所有边上数的和加起来恰好是3的倍数,则判聪聪赢,否则可可赢。聪聪非常爱思考问题,在每次游戏后都会仔细研究这棵树,希望知道对于这张图自己的获胜概率是多少。现请你帮忙求出这个值以验证聪聪的答案是否正确。

代码:

#include<iostream>
#include<cstdio>
using namespace std;
struct point
{
    int dis;
    int to;
    int next;
}e[100010];
int n,num,ans,root,sum;
int t[4],head[50010],son[50010],f[50010],d[50010];
bool vis[50010];
int gcd(int a,int b)
{
    if(!b) return a;
    else return gcd(b,a%b);
}
void add(int from,int to,int dis)
{
    e[++num].next=head[from];
    e[num].to=to;
    e[num].dis=dis;
    head[from]=num;
}
void getroot(int x,int fa)
{
    son[x]=1;
    f[x]=0;
    for(int i=head[x];i!=0;i=e[i].next)
    {
        int to=e[i].to;
        if(to==fa||vis[to]) continue;
        getroot(to,x);
        son[x]+=son[to];
        f[x]=max(f[x],son[to]);
    }
    f[x]=max(f[x],sum-son[x]);
    if(f[x]<f[root]) root=x;
}
void getdeep(int x,int fa)
{
    t[d[x]]++;
    for(int i=head[x];i!=0;i=e[i].next)
    {
        int to=e[i].to;
        if(to==fa||vis[to]) continue;
        d[to]=(d[x]+e[i].dis)%3;
        getdeep(to,x);
    }
}
int cal(int x,int cost)
{
    t[0]=t[1]=t[2]=0;
    d[x]=cost;
    getdeep(x,0);
    return t[1]*t[2]*2+t[0]*t[0];
}
void solve(int x)
{
    ans+=cal(x,0);
    vis[x]=true;
    for(int i=head[x];i!=0;i=e[i].next)
    {
        int to=e[i].to;
        if(vis[to]) continue;
        ans-=cal(to,e[i].dis);
        root=0;
        sum=son[to];
        getroot(to,0);
        solve(root);
    }
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n-1;i++)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        z%=3;
        add(x,y,z);
        add(y,x,z);
    }
    f[0]=sum=n;
    getroot(1,0);
    solve(root);
    int t=gcd(ans,n*n);
    printf("%d/%d\n",ans/t,n*n/t);
    return 0;
}
Conda报错急救指南:遇到Malformed version string ‘~‘怎么办?(附最新解决方案) 本文深度解析Conda报错`Malformed version string '~'`的根源与解决方案。该错误通常由版本字符串解析异常或Conda版本过旧引起。文章提供了从清理缓存、针对性升级到环境重建的完整修复流程,并强调了升级Conda至最新版本是解决此类`CondaValueError`问题的根本方法,帮助开发者高效恢复工作环境。 阅读详情

相关推荐

GIS坐标系转换以及空间校正和地理配准

许多小伙伴都对坐标系,投影这类问题迷迷糊糊,我之前也一样,现在总结一下。 坐标系的转换1.为什么要进行坐标系的转换?2. 不同坐标系的介绍1.地理坐标系我国常见的地理坐标(1).北京54坐标系(2).西安80坐标系(3).WGS-84坐标系(4).大地2000坐标系2.投影坐标系我国常用的投影坐标系(1) UTM投影(2) 高斯-克吕格投影(3) 兰伯特投影(4) 阿尔伯斯投影投影坐标系的选择3. 坐标系的转换1.已知坐标系之间的转换1.1 两坐标系的参考椭球相同1.2 两坐标系的参考椭球不一致,但是GIS

m0_47258611的博客 8913

BZOJ 2226: [Spoj 5971] LCMSum( 数论 )

∑lcm(i,n) = ∑ i*n/(i,n) = ∑d|n∑(x,n)=d x*n/d = ∑d|n∑(t,n/d)=1t*n = n∑d|nf(d). f(d)表示1~d中与d互质的数的和, 即f(d) = d*φ(d)/2(d>=2). 然后O(n)筛φ, 每次询问暴力算即可...最大是100w,sqrt(100w)=1000内的质数是168个, 所以复杂度是O(n + T*168),...

weixin_30758821的博客 153

Origin画图——获取论文图中数据

有时候需要已发表论文的图的数据,这里使用Origin软件取值,并且可以实现对图形再次画图。 Step 1. 打开origin软件,点击工具,图形数字化工具。 Step 2. 打开要获取数据的图片。拉动红蓝坐标,与图的坐标轴所贴合。 Step 3. 打开要获取数据的图片。拉动红蓝坐标,与图的坐标轴所贴合。 Step 3. 设置参数横轴起始坐标为300-900,纵轴为1.8-2.6. Step 4. 点击第五个手动取点,取出图中数据点。 Step 5. 依次对原图进行取点。点击项目资源查看图。

qq_42278015的博客 5183

BZOJ1415: [Noi2005]聪聪和可可

题目描述 在一个魔法森林里,住着一只聪明的小猫聪聪和一只可爱的小老鼠可可。虽 然灰姑娘非常喜欢她们俩,但是,聪聪终究是一只猫,而可可终究是一只老鼠, 同样不变的是,聪聪成天想着要吃掉可可。 一天,聪聪意外得到了一台非常有用的机器,据说是叫 GPS,对可可能准确 的定位。有了这台机器,聪聪要吃可可就易如反掌了。于是,聪聪准备马上出发, 去找可可。而可怜的可可还不知道大难即将临头,仍在森...

Unstoppable728的博客 261

Windows 环境下 OpenClaw 的安装与千问大模型配置

为了不占用 C 盘空间,重装系统也不丢失配置,本文详细记录了如何将 OpenClaw 安装在非系统盘,比如D 盘,并对接阿里云 通义千问大模型的全过程。主要是利用 NVM 和 npm 进行安装,方便后续一键升级,配置具有免费额度的Qwen API,这个只需要在阿里云百炼注册一个账号就能获得免费额度。

博客 6537

海思ISP调优实战:从实验室到真实场景的IPC相机图像质量优化指南

本文深入探讨海思ISP调优在IPC相机图像质量优化中的实战应用,从实验室标定到真实场景部署的全链路调优方法。重点解决光照动态范围、色温变化和噪声特性等核心问题,提供AE权重表配置、CCM标定、3DNR时域滤波等关键技术方案,帮助实现从理论到实践的图像质量提升。

s3t4u的博客 750

【BZOJ 2151】种树

算法标签:贪心+堆

forever_dreams的博客 420

基于阻抗控制的工业机器人轨迹跟踪系统 Simulink/Simscape 仿真

  本文是对文献 [1] 的复现。 关于阻抗控制   阻抗控制的提出可以追溯到 1984 年,Neville Hogan 在 American Control Conference 发表的 Impedance Control:An Approach to Manipulation ,次年,Hogan N. 又在 Journal of Dynamic Systems Measurement and Control-transactions of The Asme 发表了阻抗控制经典三部曲 —— Imped.

-贝塔- 的博客 2万+

bzoj2151: 种树(贪心+堆)

题目传送门 。 解法: 今天才学这种经典做法。。 如果选最大的然后删除两边很显然这种策略是错误的。 因为有可能两边加起来更优。 那么上面的做法是无法反悔的。。 给他一个反悔的机会。 那么就是: 假设选了i,那么删除i前后的两个点。 然后把i这个点的权值变为a[前]+a[后]-a[i]。 这样再选i的话就表示反悔了选了前后两个。 维护一下这个位置是否删除。这个位置的前一个未被...

Hanks_o的博客 864

Open3D 点云变换【2025最新版】

点云平移、旋转、缩放、欧式变换的python代码实现。博客长期更新,本文最近更新时间为:2025年1月16日。

点云侠的博客 37万+

突破Cloudflare 5秒盾!Python爬虫+GPT分析JS混淆实战(附完整代码)

这篇文章的核心观点其实不是“怎么过CF”,而是如何把LLM嵌入逆向工程的工作流。AI不会取代逆向工程师,但它正在重新定义逆向工程师的工作方式。过去我们80%的时间花在读懂混淆代码上,现在这部分可以外包给GPT,我们把精力集中在架构判断、异常处理和系统设计这些真正需要人类直觉的地方。技术会变,CF的防护会升级,GPT的能力也会迭代。但这种“人机协作拆解复杂问题”的方法论,比任何具体的绕过技巧都更有长期价值。参考资料Cloudflare Bot Management官方文档。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 535

[国家集训队] 聪聪可可 解题记录

看到题解区全是用容斥做的,但是我太蒻了不会,所以来水一发不用容斥的题解。

Li_Feiy的博客 618

Vue3 - Element Plus 日期选择器 el-date-picker,设置 type=week 变成周选择器后,将选择周时修改为 “周一至周日“ 为一组范围(详细示例代码,新手小白秒会)

vue3,element-plus,DatePicker日期选择器,el-date-picker,周,type=week,周选择器,日期选择器week怎么拿到具体的时间范围,如何取week周选择器的value值,format如何设置,时间选择器按周选择时展示具体日期范围,vue3elementPlus日期选择器选择一周7天的数据格式怎么拿到,el-date-picker设置type等于week后怎么设置format属性,format和value-format怎么设置,范围选择器周,一周,选择一周7天时间

🏆 前端领域优质创作者 1万+

bzoj 2151 种树——贪心+后悔

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2151 似乎是半年+前讲过的。(然而看到的时候却不会了) 考虑贪心,限制就是不能选两边的。如果选了最大的又要反悔,一定不可能是要只选旁边的一个,而是把两个都选了; 所以选了这个以后,把两边的打上标记表示不能选,往堆里加入一个值为 两边的值-自己的值 的元素表示反悔选择即可。 维护两边是...

weixin_33806914的博客 161

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VB摄像头监控

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

【BZOJ2151】种树,贪心+Splay乱搞

间接砍树胡乱种"树"毫无建树

xiaoyimi的博客 730

Camera2Demo

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

【NOI2005】聪聪与可可

P2432 - 【NOI2005】聪聪与可可 Description 在一个魔法森林里,住着一只聪明的小猫聪聪和一只可爱的小老鼠可可。虽然灰姑娘非常喜欢她们俩,但是,聪聪终究是一只猫,而可可终究是一只老鼠,同样不变的是,聪聪成天想着要吃掉可可。 一天,聪聪意外得到了一台非常有用的机器,据说是叫GPS,对可可能准确的定位。有了这台机器,聪聪要吃可可就易如反掌了。...

weixin_30265171的博客 196

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

[国家集训队]聪聪可可

题目描述 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃、两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已经玩儿腻了这种低智商的游戏。 他们的爸爸快被他们的争吵烦死了,所以他发明了一个新游戏:由爸爸在纸上画n个“点”,并用n-1条“边”把这n个“点”恰好连通(其实这就是一棵树)。并且每条“边”上都有一个数...

青烟绕指柔的博客 506

bzoj 2151 种树 —— 思路+链表

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2151 先都放进堆里取最大的,但选了一个就不能选它两边的,所以可能不是最优,要有“反悔”的措施; 可以取出一个后把它两边的位置 l,r 在链表中删除,然后再加入一个元素 a[x] = a[l] + a[r] - a[x],如果日后选了这个元素,就表示“反悔”了,当初不选 x 而是...

aodan5477的博客 201

bzoj 2151 种树 贪心+堆

题面 题目传送门 解法 堆用来撤销之前操作的经典应用 显然可以选择dp,但是复杂度好像不太对,应该是O(nm)O(nm)O(nm)的 一个比较显然的贪心是,每一次选择最大的那一个,然后一直这样取下去 很明显, 这个贪心是错误的:19 20 19 1 按照上面的贪心策略,我们会先选择20,然后再选择1。显然,这个方案没有19+19优 所以,我们现在要考虑如何“撤销”之前错误的选择方案 ...

mysterynoip的博客 285

[国家集训队2011]种树 解题报告

题目: http://cojs.tk/cogs/problem/problem.php?pid=1862 A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树。园林部门得到指令后,初步规划出n个种树的位置,顺时针编号1到n。并且每个位置都有一个美观度Ai,如果在这里种树就可以得到这Ai的美观度。但由于A城市土壤肥力欠佳,两棵树决不能种在相邻的位置(i号位置和i+

uKJLThHU$(eQ 1120

[国家集训队] 聪聪可可

算是点分治的模板吧,把每条边都模3归类就可以了。 模板我是学yyb dalao的。 计算calc函数的时候有一点改进就是不需要把所有的节点的枚举一遍了,可以直接通过相互关系计算得出qwq。 至于为什么前面不同的要乘以二呢?大家可以思考一下,原先我们要枚举每个点然后是一个平方的算法,然后自然是值不同的话会被计算两次,值相同的只有一次啦qwq(不理解的话可以模拟一下过程??) 代码如下: #...

weixin_30505751的博客 139

聪聪可可

聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃、两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已经玩儿腻了这种低智商的游戏。 他们的爸爸快被他们的争吵烦死了,所以他发明了一个新游戏:由爸爸在纸上画n个“点”,并用n-1条“边”把这n个“点”恰好连通(其实这就是一棵树)。并且每条“边”上都有一个数。接下来由

luoyuef的博客 328

bzoj 2152: 聪聪可可 树的点分治

2152: 聪聪可可 Time Limit:3 SecMemory Limit:259 MBSubmit:485Solved:251[Submit][Status] Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃、两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀...

alex151194310的博客 254

【bzoj2152】 聪聪可可

http://www.lydsy.com/JudgeOnline/problem.php?id=2152 (题目链接)题意:给出一棵n个节点的带权树,求有多少点对的距离是3的倍数。solution 点分治。对于每个重心统计出每棵子树到重心的距离%3=0/1/2的点的数量即可。求出ans后与n²进行下gcd出解。代码:// bzoj2152 #include<algorithm> #include<

MashiroSky的博客 572

BZOJ 2152: 聪聪可可(点分治/树形DP)

题目在这里题解这题有两种作法,一开始我想的是点分治,类似于POJ1741那题(点这里),我们按同样的方法搜索depdep并记录,不过这次记录的是dep%3=0,1,2dep\%3=0,1,2的数量,记作t[i]t[i]。那么根据乘法原理,ans1=t[1]∗t[2]∗2+t[0]∗t[0]ans_1=t[1]*t[2]*2+t[0]*t[0],然后再算出儿子的ans2ans_2,并减去即可。求出满足

Ab.Ever 709

BZOJ 2152 聪聪可可

title: ‘BZOJ 2152 聪聪可可’ categories: BZOJ date: 2016-1-7 21:50:00 tags: [树的重心,树的点分治]

Zero's World 541
上一篇: BZOJ 4530大融合
下一篇: BZOJ 2599 Race
Slr2002
博客等级 码龄9年 3粉丝 31原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值