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

    今天又TM考试了......

    这是T1,然后我模拟20分滚粗。

    Analysis

    在每层的时候用编号%这层可以上楼的房间个数就行了。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #define mod 20123
     6 #define maxn 10010
     7 #define maxm 110
     8 using namespace std;
     9 inline int read()
    10 {
    11     int x=0;
    12     bool f=1;
    13     char c=getchar();
    14     for(; !isdigit(c); c=getchar()) if(c=='-') f=0;
    15     for(; isdigit(c); c=getchar()) x=(x<<3)+(x<<1)+c-'0';
    16     if(f) return x;
    17     return 0-x;
    18 }
    19 inline void write(int x)
    20 {
    21     if(x<0){putchar('-');x=-x;}
    22     if(x>9)write(x/10);
    23     putchar(x%10+'0');
    24 }
    25 int n,m,st,ans;
    26 int map[maxn][maxm],map_s[maxn][maxm],num[maxn];
    27 int main()
    28 {
    29 //    freopen("treasure.in","r",stdin);
    30 //    freopen("treasure.out","w",stdout);
    31     n=read();m=read();
    32     int cnt=0,c=1;
    33     for(int i=1;i<=n*m;i++)
    34     {
    35         int x,y;
    36         
    37         x=read();y=read();
    38         map_s[c][cnt]=x;
    39         if(x==1)num[c]++;
    40         map[c][cnt]=y;
    41         if(cnt==m-1)
    42         {
    43             cnt=0;
    44             c++;
    45         }
    46         else cnt++;
    47     }
    48     st=read();
    49     for(int i=1;i<=n;i++)
    50     {
    51         if(map_s[i][st]==0)
    52         {
    53             int xb=map[i][st];
    54             xb%=num[i];
    55             if(xb==0)xb+=num[i];
    56             ans+=map[i][st];
    57             ans%=mod;
    58             while(xb>0)
    59             {
    60                 if(st==m-1)st=0;
    61                 else st++;
    62                 if(map_s[i][st]==1)xb--;
    63             }
    64         }
    65         else if(map_s[i][st]==1)
    66         {
    67             int xb=map[i][st]-1;
    68             xb%=num[i];
    69             if(xb==0)xb+=num[i];
    70             ans+=map[i][st];
    71             ans%=mod; 
    72             while(xb>0)
    73             {
    74                 if(st==m-1)st=0;
    75                 else st++;
    76                 if(map_s[i][st]==1)xb--;
    77             }
    78         }
    79     }
    80     write(ans);
    81     return 0;
    82 }
    请各位大佬斧正(反正我不认识斧正是什么意思)
  • 相关阅读:
    Spring用代码来读取properties文件
    单链表与双链表的区别
    为什么有些IP无法PING通但又能访问
    使用iperf3调试网络
    arm linux 移植 iperf3
    ZYNQ:PetaLinux工程更新HDF文件的脚本
    ZYNQ:使用PetaLinux打包 BOOT.BIN、image.ub
    ZYNQ:提取PetaLinux中Linux和UBoot配置、源码
    ZYNQ:使用 PetaLinux 构建Linux项目
    ZYNQ:使用SDK打包BOOT.BIN、烧录BOOT.BIN到QSPI-FLASH
  • 原文地址:https://www.cnblogs.com/handsome-zyc/p/11288073.html
Copyright © 2011-2022 走看看