博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P5952-[POI2018]水箱【最小生成树】
阅读量:2022 次
发布时间:2019-04-28

本文共 637 字,大约阅读时间需要 2 分钟。

正题

题目链接:


题目大意

n ∗ m n*m nm个格子,最外层有无限高的墙,然后每个格子之间有一睹给定高度的墙,然后求有多少种不同的水位情况。


解题思路

首先我们如果将墙看成边,那么会造成影响的一定是在最小生成树上的边,那么考虑一条边的影响,假设左边联通块墙最高为 h 1 h1 h1,右边为 h 2 h2 h2,左边水位都不高于 h 1 h1 h1时有 a n s 1 ans1 ans1种方案,右边水位都不高于 h 2 h2 h2时有 a n s 2 ans2 ans2中方案。该边的高度为 h h h,那么新联通块的答案为 ( a n s 1 + h − h 1 ) ∗ ( a n s 2 + h − h 2 ) (ans1+h-h1)*(ans2+h-h2) (ans1+hh1)(ans2+hh2)计算即可


c o d e code code

#include
#include
#include
#define ll long long#define p(x,y) ((x-1)*m+(y))using namespace std;const ll N=1e6+10,XJQ=1e9+7;struct node{
ll x,y,w;}a[N*4];ll n,m,H,tot,fa[N],ans[N],h[N];bool cmp(node x,node y){
return x.w

转载地址:http://gdwaf.baihongyu.com/

你可能感兴趣的文章
八大排序之插入排序(直接插入排序 & 希尔排序)
查看>>
LeetCode第五题:最长回文子串(C语言)
查看>>
深入理解Linux的权限
查看>>
C++之erase、remove 、remove_if的区别
查看>>
C++ Huffman树实现文件的压缩与解压
查看>>
C++ 异常
查看>>
02.django升级打怪学习记
查看>>
03.django升级打怪学习记
查看>>
04.django升级打怪学习记
查看>>
05.django升级打怪学习记
查看>>
06.django升级打怪学习记
查看>>
Devops学习笔记01
查看>>
Devops学习笔记02
查看>>
11.DDD与微服务设计模式笔记
查看>>
10.微服务所解决的问题领域分析,微服务是否适合你?笔记
查看>>
09.结构化数据库如何持续交付笔记
查看>>
08.持续交付中测试管理策略笔记
查看>>
07.持续交付流水线与敏捷开发笔记
查看>>
06.CI_CD流水线的设计原则笔记
查看>>
05.如何为团队设计简单高效的配置管理策略(分支策略)笔记
查看>>