NOIP大纲整理:(六)字符串4:随机算法

97 篇文章 1 订阅
29 篇文章 1 订阅

随机算法

随机生成树

①随机生成一棵树:

for(int i=2;i<=n;i++)/*随机生成一棵树*/
{
    cout<<rand()%(i-1)+1<<' '<<i<<endl;
}//深度为lgn

②随机生成一棵长毛的链:

/*随机生成一棵长毛的链:1~n/2*/
for(int i=2;i<=n/2;i++) cout<<i-1<<''i<<endl;
for(int i=n/2+1;i<=n;i++) cout<<rand()%(i-1)+1<<''<<endl;

③给你一张图,生成一张图:

/*给你一张图,生成一张图,10万个点,20万条边 */
map<long long,int> mp;
for(int i=1;i<=200000;i++)
{
    int A=rand()%n+1;
    int B=rand()%n+1;
   while(A==B||mp[1ll*A*100005+B])
    {
        A=rand()%n+1;
        B=rand()%n+1;
    }
    mp[1ll*A*10005+B]=1;
    cout<<A<<''<<B<<endl;
}

④随机生成一个连通图: 

先生成一棵树,这棵树上的边是一定存在的,在随机其他的边。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值