【无标题】

子曰:“君子成人之美,

​不成人之恶;小人反是。”

君子成全别人的好事,而不​坏别人的事,小人则是相反的。

不过今天的第一题就是阻止向前跑的。

本文​讲述如何在概率问题中,运用代数变形,求解出具有递归性的问题。

我们的问题从一个大问题转换成了小问题。

对于每个概率,我们是容易计算出的。

#include<bits/stdc++.h>using namespace std;#define int long longconst int N=1000010,M=3*N;const int mod=998244353;int h[N],e[M],ne[M]; int idx;int f[N],sum[N],deg[N];void add(int a,int b){  e[idx]=b;  ne[idx]=h[a];  h[a]=idx++;}signed main(){  int id,n,m;  cin>>id>>n>>m;  memset(h,-1,sizeof h);  for(int i=1;i<=m;i++)  {    int x,y;    cin>>x>>y;    add(x,y);    ++deg[x];  }  for(int x=1;x<=n;x++)  {    f[x]=deg[x]+1;    for(int i=h[x];~i;i=ne[i])    {      int y=e[i];      f[x]=((f[x]+(sum[x-1]-sum[y-1])%mod)%mod+mod);    }    sum[x]=(sum[x-1]+f[x])%mod;  }  cout<<sum[n];}

https://ac.nowcoder.com/acm/contest/73760/F

这道题使用的代数变形手段,

在微积分中,我们也类似的问题。

#include<bits/stdc++.h>using namespace std;#define int long longint mod=1e9+7;int f[60][60][60][60];int vis[60][60][60][60];int quick(int a,int b){  int t=1;  while(b)  {    if(b&1)t=t*a%mod;    a=a*a %mod;    b=b/2;  }  return t;}int dfs(int a,int b,int c,int d){  if(vis[a][b][c][d])  {    return f[a][b][c][d];  }  vis[a][b][c][d]=1;  if(a+c==0||a+b==0||c+d==0||b+d==0)  {    return 0;  }  int sum=0;  int de1=quick(a+b,mod-2),de2=quick(c+d,mod-2);  if(a&&d)sum+=dfs(a-1,b,c,d)*a%mod*de1%mod*de2%mod*d%mod;  if(b&&c)sum+=dfs(a,b,c-1,d)*b%mod*de1%mod*de2%mod*c%mod;  sum=(sum+1)%mod;  int De=1-a*c%mod*de1%mod*de2%mod-b*d%mod*de1%mod*de2%mod;  De=(De+2*mod)%mod;  return f[a][b][c][d]=sum*quick(De,mod-2)%mod;}int a,b,c,d;signed main(){  int n,m;  cin>>n>>m;  for(int i=1;i<=n;i++)  {    int t;    cin>>t;    if(t==1)a++;    else b++;  }  for(int i=1;i<=m;i++)  {    int t;    cin>>t;    if(t==1)    c++;    else d++;  }  cout<<dfs(a,b,c,d);}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值