zoukankan      html  css  js  c++  java
  • 洛谷P1076 寻宝

    题目描述

    传说很遥远的藏宝楼顶层藏着诱人的宝藏。小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书。说明书的内容如下:

    藏宝楼共有N+1层,最上面一层是顶层,顶层有一个房间里面藏着宝藏。除了顶层外,藏宝楼另0有N层,每层M个房间,这M个房间围成一圈并按逆时针方向依次编号为0——M−1。其中一些房间有通往上一层的楼梯,每层楼的楼梯设计可能不同。每个房间里有一个指示牌,指示牌上有一个数字x,表示从这个房间开始按逆时针方向选择第x个有楼梯的房间(假定该房间的编号为k),从该房间上楼,上楼后到达上一层的kkk号房间。比如当前房间的指示牌上写着2,则按逆时针方向开始尝试,找到第2个有楼梯的房间,从该房间上楼。如果当前房间本身就有楼梯通向上层,该房间作为第一个有楼梯的房间。

    寻宝说明书的最后用红色大号字体写着:“寻宝须知:帮助你找到每层上楼房间的指示牌上的数字(即每层第一个进入的房间内指示牌上的数字)总和为打开宝箱的密钥”。

    请帮助小明算出这个打开宝箱的密钥。
    输入输出格式
    输入格式:

    第一行2个整数N和M,之间用一个空格隔开。N表示除了顶层外藏宝楼共N层楼,M表示除顶层外每层楼有M个房间。

    接下来N×M行,每行两个整数,之间用一个空格隔开,每行描述一个房间内的情况,其中第(i−1)×M+j(i-1)行表示第i层j−1号房间的情况(i=1,2,…,Ni=1,2,…,Ni=1,2,…,N;j=1,2,…,Mj=1,2,…,Mj=1,2,…,M)。第一个整数表示该房间是否有楼梯通往上一层(0表示没有,1表示有),第二个整数表示指示牌上的数字。注意,从j号房间的楼梯爬到上一层到达的房间一定也是j号房间。

    最后一行,一个整数,表示小明从藏宝楼底层的几号房间进入开始寻宝(注:房间编号从0开始)。

    输出格式:

    一个整数,表示打开宝箱的密钥,这个数可能会很大,请输出对20123取模的结果即可。

    输入输出样例
    输入样例#1:

    2 3
    1 2
    0 3
    1 4
    0 1
    1 5
    1 2
    1

    输出样例#1

    5

    说明

    【数据范围】

    对于50%数据,有0<N≤1000,0<x≤100000
    对于100%数据,有有0<N≤10000,0<M≤100,0<x≤1,000,0000

    NOIP 2012 普及组 第二题

    这道题的总体思想是模拟。开一个数,循环找一个房间的门。到达一个门就统计一下。不断累积门的个数,有门为1,否则是0,sum[i]统计个数。因为题目中说了顶层除外,就不用i<=n,直接用i<n作为结束条件。i++模拟上楼。还要判断是不是一个环

    #include<bits/stdc++.h>
    using namespace std;
    int sum=0;
    int n,m;
    int a[10100][1010],b[10010][1010];
    int c[100100];
    int tre;
    int main(){
    cin >> n >> m;
    for(int i=1;i<=n;i++)//读入
        for(int j=0;j<m;j++){
            cin >> a[i][j] >> b[i][j];
            if(a[i][j]==1){
                c[i]++;//统计门数
            }
        }
    
    cin >> tre;
    int ans=b[1][tre];
    int j=tre;
    int i=1;//预处理
    while(i<n){//while循环结束条件
        int x,y=false;
        x=b[i][j]%c[i];
        if (x==0){
        	x=c[i];
        } 
        while(y+a[i][j]<x){//模拟题意
        	y=y+a[i][j];
        	j++;
        	if(j==m){
            j=0;
        }
        
        }
            i++;有楼梯,上楼
        	ans=ans+b[i][j];//加上指示牌数字
        	ans%=20123;//边走边模
    }
    cout << ans%20123;
    return 0;
    }
    
  • 相关阅读:
    Go 语言简介(下)— 特性
    Array.length vs Array.prototype.length
    【转】javascript Object使用Array的方法
    【转】大话程序猿眼里的高并发架构
    【转】The magic behind array length property
    【转】Build Your own Simplified AngularJS in 200 Lines of JavaScript
    【转】在 2016 年做 PHP 开发是一种什么样的体验?(一)
    【转】大话程序猿眼里的高并发
    php通过token验证表单重复提交
    windows 杀进程软件
  • 原文地址:https://www.cnblogs.com/A-Konnyaku/p/10993485.html
Copyright © 2011-2022 走看看