hunnu--11548--找啊找啊找朋友

找啊找啊找朋友
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB
Total submit users: 14, Accepted users: 11
Problem 11548 : No special judgement
Problem description
  小明和小红是一对好朋友,小明一有空就去找小红玩。但是小红飘忽的行踪让小明很是伤脑筋。

小红居住的小区的地下有当年抗战时期留下的地道,小红平时总是喜欢在这些地道里走来走去。

小红所在的小区有N个地道出入口,依次标记为0到N-1,小明想知道当他到小区的时候小红会在那个地道出入口,这样他就不会走冤枉路了。

小红初始的时候会在D号出入口,小明会在T个单位之间之后到达,小红每个单位时间一定会从她当前所在的出入口通过地道走到与之相邻的出入口,如果有多个出入口与之相邻,那么她会等概率随机选择一个进行移动,即如果有3个,那么走到任何一个的概率都是1/3,4个的话就是1/4。

现在给你整个小区地道的布局,请你告诉小明T个单位时间之后,小红在各个出入口的概率是多少。

Input
  多组样例,请处理到文件结束。

每组样例第一行包括3个整数,N (2 <= N <= 50), D(0 <= D < N), T(1 <= T <= 10^9).

接下来包含一个N * N的矩阵,每个元素只可能是0或者1,第i行第j列是1表示i号出入口与j号出入口有通道相连.数据保证各出入口都是联通的,而且矩阵一定是对称矩阵,当i==j时,元素的值一定是0.

Output
  对每组样例,首先输出一行Case #k:,k从1开始. 接着输出N个数,表示在出入口0到N-1的概率,保留2位小数,数字之间用一个空格隔开
Sample Input
2 0 2
0 1
1 0
3 1 1
0 1 1
1 0 1
1 1 0
Sample Output
Case #1:
1.00 0.00
Case #2:
0.50 0.00 0.50
Problem Source
  HNU Contest 

解析:我好像是用的矩阵做的,用到矩阵的快速幂

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#define MAX(a,b) a>b?a:b
#define MIN(a,b) a<b?a:b
#define Max 1000000000
using namespace std;
int n,d,t;
double s[55][55],sum[55][55];
void cmp(double (*a)[55],double (*b)[55])//求矩阵a乘以矩阵b再存储在a中
{//跟度娘问候了半天,也没找到一个优化的计算法,只有这个n^3的,还是抱着看看是否超时的想法来提交的。。
    int i,j,k,l;
    double c[55][55]={0};
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    if(a[i][j]>0)//这个也算剪枝吧
    {
        for(k=0;k<n;k++)
        c[i][k]+=a[i][j]*b[j][k];
    }
    for(i=0;i<n;i++)//把结果存到a里面去
    for(j=0;j<n;j++)
    a[i][j]=c[i][j];
}
void ksm()//标准快速幂,喜欢的带回家
{
    int i,j,k,l;
    memset(sum,0,sizeof(sum));
    sum[d][d]=1;//起点在d,那么就记录在sum[d][d]
    while(t>0)
    {
        if(t%2==1)cmp(sum,s);
        t/=2;
        cmp(s,s);
    }
}
int main(void)
{
    int i,j,k,l,cas=1;
    double c;
    while(scanf("%d%d%d",&n,&d,&t)!=EOF)
    {
        for(i=0;i<n;i++)
        {
            c=0;
            for(j=0;j<n;j++)
            {
                scanf("%lf",&s[i][j]);
                c+=s[i][j];
            }
            if(c)
            for(j=0;j<n;j++)
            s[i][j]/=c;
        }
        ksm();
        printf("Case #%d:\n",cas++);
        for(i=0;i<n;i++)//我也不知道咋滴,全部打出来结果只有第d行才有数据,应该是矩阵的特性吧。
        printf("%.2lf%c",sum[d][i],i==n-1?‘\n‘:‘ ‘);
    }
    return 0;
}
时间: 2024-10-15 16:55:24

hunnu--11548--找啊找啊找朋友的相关文章

hunnu - 11545 小明的烦恼——找路径 (最大流)

http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11545 只是要求不经过相同的边,那么每次找出一条增广路T--,判断T<=0即可. 在加边的时候注意要c<=C的时候才需要加边. 邻接表: 1 # include <cstdio> 2 # include <cstring> 3 # include <algorithm> 4 # include <iostream&

hunnu 11545小明的烦恼——找路径 (最大流)

小明的烦恼--找路径  Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:32768KB Total submit users: 45, Accepted users: 37 Problem 11545 : No special judgement Problem description   小明真的是个很厉害的人,每当老师有什么事时,总是会找到小明,二小明也总能解决,所以老师决定给小明一个奖励,给他额外的假期.小明当然很高兴

快 三 输 了 想 要 回 血 找 谁,找 我 包 回 血 计 划

[寇:573.03.287]邀请[2796_9999]网hct97.c0m最重要还是要找对一个能引领你的人!我是这么认为的:心态只能让我们锦上添花,但是并不能给我们雪中送炭,一个玩家光有心态,肯定是赚不到钱的,只不过良好的心态可能让你亏损的比较少而已,但是你也是在亏,因为心态根本解决不了概率的问题,概率问题是只有技术才能解决举个例子,一个玩家如果技术够好,那么他挂的可 能性就比较小,一个玩家之所以心态不好,很多时候是因为连挂,所以技术如果足够好,很多时候可以弥补我们心态的一些缺陷,所以技术远远要

找工作-第一篇找工作杂谈

1.找工作前的准备工作 1>要对自己的一个长远的规划. 比如我现在的状态是什么样子,工作多久之后我又要变成什么样子,技术要提升到什么程度,技术最新发展方向是什么样子的,几年之后,现在我不关心的技术会不会成为我到时候找工作的绊脚石. 2>决定找工作了,要做足准备.起嘛你要回想起你上一份工作做了什么实在的内容,有哪些实在的干货可以拿出来晾晒. 还有就是了解自己将要投递哪些公司.哪些职位.一般公司为了让人投递简历,除了基本的要求写在了招聘信息上之外,往往还需要应聘者去了解它可能还需要哪些技能知识储备

免费兼职找我免费兼职找我免费兼职找我

免费兼职找我不需要任何会费一单一结 原文地址:https://www.cnblogs.com/qq97889181/p/12438838.html

pycharm社区版找不到工具栏找不到Database的解决办法

现象: 解决办法:安装插件Database Navigator后重启pycharm即可 解决后: 原文地址:https://www.cnblogs.com/wang-mengmeng/p/12146185.html

那年,我们毕业了(纪念找工作的那些日子)

日起日落,过往的一切好像都没有发生似的.只知道,那晚我喝了好多酒,但是没醉:吃了好多菜,但是没饱:说了好多话,但是没哭.就在那种发生而又没有发生的感觉中,我们毕业了,离开了校园,开始了新的生活. 时间倒回2014年的 2月12日,每个人都还沉浸在新年的气氛中时,自己却只身一人提前来到了北京,开始了找工作的旅程.这次旅程,不仅蜕变了自己,也让我明白一个道理:人,都是一样的!(你的想法有时比他人的想法更有价值,相信自己,敢于表达自己.) 与很多毕业生一样,突然从学校走到社会,感觉无从下手,不知道该去

揭秘百度贴吧推荐找富婆流量统计指标

引导语:网站流量统计对站长来说不可或缺的工具,一般站长常用的流量统计工具有cnzz,51la.百度.Google Analytics等,确切的说大部分站长都在使用CNZZ,51la等容易上手的平台,百度.Google Analytics等网站流量统计平台用的站长并不多,究其原因是上手稍微难,尤其是Google Analytics. 现在流量统计平台分两类,网站流量"数据统计平台",只是简单提供数据统计,数据分析挖掘服务没提供,比如CNZZ,51la等平台:网站流量"数据挖掘平

都市白领租房APP定制解决了哪些找房的痛点

现在的都市白领主要是以租房为主,传统找房子存在很多的痛点,要么是朋友介绍,要么就是自己去找.自己找的话,需要专门空一天时间来找,一般都是很盲目地去找的,在想住的地区看到有挂着房东电话号码以及粗略的住房信息的牌子,然后打电话过去咨询,有合适的再去看房,没合适的就接着打下一个电话,这是找城中村房子的方式.还有一种是找小区房子,一般不会在外贴住房信息的,你需要找到房地产中介,让中介帮你找,找到后要给中介付房租一般的中介费用,想想都肉疼.但是互联网APP出现之后,找房子直接线上找,下载一个租房APP就可

找创业合伙人的六个渠道

1.与朋友.同学联合创业.该途径较为放心,因为知根知底,彼此建立在信任的基础上,比较容易相互沟通.缺点是创业搭伙的过程中极易以兄弟进入以仇人反目. 2.通过熟人介绍.建立在熟人基础上的创业合伙人是比较能够迅速组建团队的,但是一定要建立在充分尊重的基础上,因为友谊基础比较薄弱,很容易产生一些误会.在相处的过程中要本着尊重的态度互相磨合.此途径的缺点是这个中间人可能无法知道所有朋友是否有创业的意愿,找寻起来还是比较麻烦的.3.先雇佣后合伙.此种途径在找寻合伙过程中十分普遍.要想让人家跟着你干,很多时