当前位置: 首页 > news >正文

LGP7113 [NOIP 2020] 排水系统 学习笔记

LGP7113 [NOIP 2020] 排水系统 学习笔记

Luogu Link

题意简述

给定一个 \(n\) 个点的 \(\texttt{DAG}\)。我们认为它是一个排水系统。

节点 \(u\)\(d_u\) 条输出管道,污水会被平分成 \(d_u\) 份流向下家节点。特别的,\(d_u=0\) 时认为这个节点直通污水厂,是一个最终排水口。

对于其中 \(1\sim m\) 这些点,它们会接收到 \(1\) 吨污水。保证他们不被任何节点指向。问每个最终排水口会排出多少污水。答案请用最简分数表示。

\(0\le d_u\le 5\)\(n\le 10^5\)\(m\le 10\)。保证没有任何一滴水会经过 \(10\) 个以上的中间节点(接收节点和最终排水口不算在内)。

做法解析

拓扑排序即可。

但是这题的数据范围?分母理论上来说可以干到 \(2^{11}\times 3^{11}\times 5^{11}\) 附近。因为水量的绝对数值最多是 \(m=10\),所以分子理论最高就是 \(30\times 10^{11}\times 10=3\times 10^13\)。按理来说这些还在 long long 范围内啊。但是一般而言,通分的过程是 \(\frac{a}{c}+\frac{b}{d}=\frac{ad+bc}{cd}\)。这一步就爆 long long 了。最简单的解决方法是直接用 __int128,毕竟 long long 范围的两倍就是 __int128 范围。另外实际上由于分母只有若干 \(2,3,5\) 组成,所以你不妨去维护一下分子和分母 \(2,3,5\) 的含量。不过有现成的 __int128 为什么不用呢?

代码实现

#include <bits/stdc++.h>
using namespace std;
using namespace obasic;
const int MaxN=1e5+5;
int N,M,X;
vector<int> Gr[MaxN];
int ind[MaxN],oud[MaxN];
void addedge(int u,int v){Gr[u].push_back(v),ind[v]++;}
molo fz[MaxN],fm[MaxN];queue<int> q;
molo agcd(molo x,molo y){return y?agcd(y,x%y):x;}
void solve(){for(int i=1;i<=N;i++)fm[i]=1;for(int i=1;i<=M;i++)fz[i]=1,q.push(i);while(q.size()){int u=q.front();q.pop();if(!oud[u])continue;fm[u]*=oud[u];for(int v : Gr[u]){ind[v]--;fz[v]=fz[u]*fm[v]+fz[v]*fm[u],fm[v]*=fm[u];molo cg=agcd(fz[v],fm[v]);fz[v]/=cg,fm[v]/=cg;if(!ind[v])q.push(v);}}
}
int main(){readis(N,M);for(int i=1;i<=N;i++){readi(oud[i]);for(int j=1;j<=oud[i];j++)readi(X),addedge(i,X);}solve();for(int i=1;i<=N;i++)if(!oud[i])writip(fz[i]),writil(fm[i]);return 0;
}

反思总结

__int128 还是太伟大了。除了在你对它直接套 abs() 的时候。

http://www.zskr.cn/news/3109.html

相关文章:

  • SQL Server 2022 RTM 累积更新 #21 发布
  • 微算法科技(NASDAQ: MLGO)开发Rollup技术,探索区块链扩展性解决方案
  • Docker:龙晰系统(Anolis)更新yum源下载docker
  • 针对单输入单输出、多输入多输出及三阶系统带约束的模型预测控制的实现
  • 读书笔记:数据库索引的智能优化:反向键与降序索引
  • 故障处理:access$表在数据库丢失的恢复
  • C++ - STL - 迭代器
  • 在GA中添加Tag-GetDynamicSpecSourceTags().AddTag(NewTag)
  • 296、贾生
  • LLM 应用开发中的常见模式
  • 可爱的二维数据结构们
  • 202005_CTFHUB_Redis流量
  • langchain学习之路
  • 通义灵码产品演示: 数据库设计与数据分析
  • ubuntu 24编译安装libssl.so.1.0.0
  • Task2:利用 Basnet 将Task1中的所有图片转化为显著性图片
  • 让天下没有难查的故障:2025 阿里云 AI 原生编程挑战赛正式启动
  • kuka机器人程序备份
  • AI 测试工具20款
  • VMware安装NOI linux系统教程
  • 近期理工类学术会议推荐 | 人工智能、工业设计、电气工程、传感器技术、环境工程等EI会议合集
  • 史上最薄iPhone 17 Air登场!极致轻薄背后藏有哪些妥协?
  • 网页转小程序封装机系统介绍
  • P12021 面包题
  • 彻底解决docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled 报错
  • 7. Job与CronJob
  • drawio
  • bootstrap-select插件在webpack中点击无响应
  • 重复从网页复制文字到编辑器的Autohotkey自动化代码
  • 202404_古剑山杯_数独