NOIP2012普及组-寻宝

来源:互联网 发布:淘宝卖家祝福语范文 编辑:程序博客网 时间:2024/05/20 20:58



题目描述:点击打开链接



/*    思路:可以看成是一个多层的约瑟夫环问题*/#include <stdio.h>#define N 10005#define M 105  int stairs[N][M];   //是否有楼梯口(0/1)int sign[N][M];     //房间指示牌(走的步数)int f[N];           //每层楼梯口总数(记录每层楼梯口数量)int main(void){    //1.对数据进行输入,并记录每层楼梯口的数量    int n,m;    scanf("%d%d",&n,&m);                                   for(int i=0;i<n;++i)        for(int j=0;j<m;++j)        {            scanf("%d%d",&stairs[i][j],&sign[i][j]);                f[i]+=stairs[i][j];        }        /*        2.累计每层走的步数,累计的结果可能较大,对其进行取模        而每层走的步数可能大于每层楼梯口的总数(意味着可能会绕几圈,所以对其取模,要考虑等于0的情况)    */    int num,tol=0;    scanf("%d",&num);           for(int i=0;i<n;++i)    {        tol = (tol+sign[i][num])%20123;            int len = sign[i][num] % f[i];        if(len==0)len = f[i];                //3.约瑟夫环        while(len)        {            len-=stairs[i][num];            if(len==0)break;            num = (num+1)%m;        }    }    printf("%d\n",tol);    return 0;}


原创粉丝点击