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

9.29总结

这星期学了概率和组合数学

这是我觉得的一个有趣的题目,每个人身上都有n-1根绳子,如果组不成稳定三角,那么肯定有两个人相邻两根绳子颜色不一样,那么每两个这样的人就会贡献一个不稳定三角形,所以只要所有三角形减去每个人红绳乘黑绳的数量的和除二就是答案

这个也蛮有意思的,求出所有路径的长度和/所有路径的条数即是答案

通过代码:

#include<bits/stdc++.h>
#include <iomanip>
#define ll long long
#define max_int 2147483647
#define max_ll 9223372036854775807
using namespace std;
int M=998244353;
ll ksm(ll a, ll b){ll res = 1;while(b) {if(b & 1) //判断b的二进制在此位是否为1res = res * a % M;a = a * a % M; //下一位的a的值b >>= 1;}return res;
}
ll mod(ll a,ll b){return a * ksm(b, M - 2) % M;
}
vector<int>graph[100005];
int main() {ll n,m,sum=0;cin>>n>>m;vector<int>longth(n+1);vector<int>fananshu(n+1,1);vector<int>in(n+1);for(int i=0,u,v;i<m;++i){cin>>u>>v;graph[u].push_back(v);in[v]++;}queue<int>q;for(int i=1;i<=n;++i) if(!in[i]){q.push(i);}while(!q.empty()){int u=q.front();q.pop();for(int v:graph[u]){longth[v]+=(longth[u]+fananshu[u])%M;longth[v]%=M;fananshu[v]+=fananshu[u]%M;fananshu[v]%=M;in[v]--;if(!in[v])q.push(v);}}ll f=0,l=0;for(int i=1;i<=n;++i){f+=fananshu[i];f%=M;l+=longth[i];l%=M;//cout<<fananshu[i]<<' '<<longth[i]<<endl;}//cout<<l<<' '<<f<<endl;cout<<mod(l,f)<<endl;return 0;
}


http://www.mrgr.cn/news/39330.html

相关文章:

  • 1688客服代码怎么做生成悬浮客服代码阿里巴巴国内站1688平台悬浮特效悬浮代码悬浮客服 1688客服代码怎么做生成器软件代码工具制作客服代码阿里巴巴
  • 【muduo源码分析】「阻塞」「非阻塞」「同步」「异步」
  • 专深与广博的平衡艺术
  • 9.29学习
  • 兼容React的刮刮乐完整代码实现
  • Activity的生命周期分析
  • container_of 函数的分析
  • yolov8/9/10模型在安全帽、安全衣检测中的应用【代码+数据集+python环境+GUI系统】
  • UnityComputeShader Challenge1
  • 算法题题解:分隔链表
  • Java方法+数组介绍
  • WIFI密码默认显示
  • 猫咪掉毛太严重,有什么好办法?不踩雷宠物空气净化器选购、测评指南
  • fastadmin搜索刷新列表,怎么限制用户频繁点击?
  • 电脑使用adb工具连接手机,全文完整教程
  • pdf页面尺寸裁减
  • One2many(一对多)关联场景中,如何从模型(一)关联到模型(多)的某个字段
  • 【JavaEE初阶】文件IO(下)
  • 算法打卡:第十一章 图论part10
  • CSS给一行按钮统一设置间隔