NOIP 2020 T1 排水系统
NOIP 帝国反击战
昨天才考完CSP-S 2021 的第二轮,人已经不行了。
差一点就爆零了。只有T1 暴力(都不配叫暴力)有20分。
下一轮等到11月20号的NOIP了。
**从现在开始,冲锋的号角吹响了!!**
兄弟们冲冲冲!!!
今天先来打一个NOIP2020 T1 的题解,考复赛前一天晚上用两个小时干出来了。
先分析题意:从每一个入度为零的节点灌水,然后看每一个出度为零的节点排出了多少的污水。一看到这题目,我们就明白要用拓扑排序来做。
但是又有一个分数计算的问题。接下来就讲解一下蒟蒻的解题思路。
1:首先是一个拓扑排序的模板套上去,统计入度为零的点依次进入队列,然后再一次减去与他们相连的点的入度。最后排序
2:分数的运算,开一个结构体,两个整数一个记录分子,一个记录分母。每次运算的时候分子分母分开处理,小学数学~~~重点是,在每次通分的时候,如果直接把分母相乘会爆long long 所以在找gcd的同时求出lcm,用lcm来通分就不会爆了。还有!!遍历到一个点时,如果这个点没有被访问过,不要运算,直接加上上一个节点的值除以该节点的出度。不然,RE了解一下。
放代码:
#include<bits/stdc++.h>
#define int __int128
using namespace std;
int n,m;
inline int read()
{
static char ch;
int res=0;
while((ch=getchar())<'0'||ch>'9'){
}
res=ch-'0';
while((ch=getchar())>='0'&&ch<='9'){
res=res*10+ch-'0';
}
return res;
}
const int N=200100;
struct node{
int p,q;
}c[N];
vector<int> e[N];
queue<int> q;
int out[N];
int vis[N];
int de[N];
int _gcd(int a,int b){
if(b==0){
return a;
}
return _gcd(b,a%b);
}
int lcm(int a,int b){
return a*b/_gcd(a,b);
}
void print(int n) {
if(n > 9) print(n / 10);
putchar(n % 10 + 48);
}
signed main()
{
n=read(),m=read();
for(int i=1;i<=n;i++){
int u=read();
for(int j=1;j<=u;j++){
int y=read();
e[i].push_back(y);
de[y]++;
out[i]++;
}
}
for(int i=1;i<=n;i++){
if(de[i]==0){
q.push(i);
c[i].p=1;
c[i].q=1;
}
}
int cnt=0;
while(!q.empty()){
int u=q.front();
q.pop();
for(int i=0;i<e[u].size();i++){
int v=e[u][i];
if(c[v].p==0){
c[v].p=c[u].p;
c[v].q=c[u].q*e[u].size();
}else{
node temp;
temp.p=c[u].p;
temp.q=c[u].q*e[u].size();
int tt=lcm(temp.q,c[v].q);
c[v].p=(c[v].p*(tt/c[v].q))+((tt/temp.q)*c[u].p);
c[v].q=lcm(temp.q,c[v].q);
}
--de[v];
if(!de[v]){
q.push(v);
}
}
}
for(int i=1;i<=n;i++){
if(out[i]==0) print(c[i].p/_gcd(c[i].p,c[i].q)),putchar(' '),print(c[i].q/_gcd(c[i].p,c[i].q)),putchar('\n');
}
return 0;
}
最后,祝大家NOIP RP++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】