【NOIP2012P】寻宝(于2018.2.12)

问题描述

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

每层第一个进入的房间内指示牌上的数字总和为打开宝箱的密钥”。

  算出这个打开宝箱的密钥。

输入格式

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

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

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

输出格式

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

数据规模和约定

  对于 50%数据,有 0<N≤1000,0<x≤10000;

  对于 100%数据,有 0<N≤10000,0<M≤100,0<x≤1,000,000。

解题历程:

简单模拟、

神题。

顺向思维即可

把指示数膜一下每层楼梯数这个优化应该都可以想到

int c=num[fl][begin];
    sum=(sum+c)%20123;
    int cnt=0;
    //cout<<sum<<endl;
    F(i,0,m-1)if(tong[fl][i])cnt++;
    c%=cnt;
    cnt=0;
    while(cnt<c)
    {
        begin++;
        if(begin>=m)begin-=m;
        if(tong[fl][begin])cnt++;
    }

以上、

连续五次WA我也是蛮惊的

主要是两个问题

1.膜后c=0时直接从当前位置上楼,不合题意

2.若当前位置可以上楼,则算作逆时针第一个(违反常理啊喂)

改了一下

代码:

int c=num[fl][begin];
    sum=(sum+c%20123)%20123;
    int cnt=0;
    //cout<<sum<<endl;
    F(i,0,m-1)if(tong[fl][i]==1)cnt++;
    c=(c-1)%cnt+1;
    cnt=0;
    begin--;
    while(cnt<c)
    {
        begin++;
        if(begin>=m)begin-=m;
        if(tong[fl][begin]==1)cnt++;
    }

以上、

TLE50

惊了

正常这种肉眼可见的优化应该不会有问题,

所以可能是惊人的数据量慢了(理论上2MN没什么问题)

所以加了个优化(改scanf太累,一般不想用):

std::ios::sync_with_stdio(false);

以上、

原理暂时没能力解释,具体看http://blog.csdn.net/yujuan_mao/article/details/8119529

AC

以上。

又及:好习惯,get了。

原文地址:https://www.cnblogs.com/qswx/p/8445476.html

时间: 2024-08-08 00:49:03

【NOIP2012P】寻宝(于2018.2.12)的相关文章

2018/11/12(python)

文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 f=open('实验文件.txt',encoding='gbk') data=f.read() print (data ) f.close() 读写都是字符串形式 读 f=open('实验文件.txt','r',encoding='gbk') print(f.readlines()) f.close() 写,会覆盖原文件 f=open('实验文件.txt','w',encoding='gbk')

2018年12月,华为HCNP大面积更新题目,军哥独家解题咯

2018年12月,华为HCNP大面积更新题目,乾颐堂军哥独家解题咯2018年是华为认证变动比较大的一年,华为认证走过这几年不得不说是有一定进步的,而且最近华为孟女侠确实让我也小小的骄傲了一把,所以当然希望华为认证能做的更好,更专业一点(我平时没少吐槽华为的认证).回顾2018年华为认证做出的改变,有这么几件大事:1.多个方向终于开始比较正式的升级大纲了.我来帮大家讲一讲历史,依稀记得2014年那其实是我第一次意识到华为开始做网络方面的职业认证(当然人家开始做认证要更早一丢丢),当时我已经有思科的

人们喜欢传播符合自己三观的新闻,不在乎真假:4星|《环球科学》2018年12月号

<环球科学>2018年12月号 有趣.可信的科普杂志.本期有趣的话题:1:最近,科学家可能已经成功制造出“薛定谔的细菌”:2:雾霾中的颗粒物(PM)浓度的增高会显著增加儿童患上自闭症的风险:3:如果你毕业后就不再学习会怎么样?这么做可能会让你变得落伍,但这正是大部分机器学习系统被训练的方式:4:也许在不久的未来,在睡梦中学习也会变成现实:5:在不同的群体内部,新闻的传播性并不取决于新闻本身的真实性,而取决于新闻与群体世界观的契合度. 总体评价4星,非常好. 以下是书中一些内容的摘抄,#号后面是

2018年12月总结

12月即将过了一半,2018年也快结束了,在过去的2018年,我做到了以下几点: 1.星级制拿了一个二星,一个三星(路局规定改了,没啥用了), 2.电力线路工中级工证书拿到手(其实大部分人都拿到手) 3.工作中,在网络设计结构这块得到了裨益 在接下来的2019年,我对自己提出以下要求: 1.关注"软考高级证书"有没有拿到手 2."CISSP"的备考(半年准备时间) 3.工作尽量往"安全"方向偏移 工作上,自己需要培养以下习惯: 1.量化指标,写一

阮一峰网络日志 第37期 2018年12月28日

http://www.ruanyifeng.com/blog/2018/12/weekly-issue-37.html 声明:链接及文章内容为原博主阮一峰原创. 原文地址:https://www.cnblogs.com/sanen/p/10242378.html

2016年12月25 至 2018年12月25,致未来

未来总是充满遐想,两年的时间给自己一个成长,多的是努力,今天又是一年圣诞,孤独感爆棚,这是必经之路吧:成功的路上总是充满孤独与落寞,看了一篇文章,这世界程序猿分为三等,天才型,理想型,庸才型:我想我要做第四种--勤奋型:给自己加油!两年很短,多一点努力吧! 2016/12/25  圣诞  合肥   雨 随感

2018.1.12 5周5次课

五周第五次课(1月12日) 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 8.10 shell特殊符号cut命令 1. 特殊符号 * 任意个任意字符 *代表零个或多个任意字符 ? 任意一个字符 ?只代表一个任意的字符 # 注释字符 表示注释说明,即#后面的内容都会被忽略 \ 脱义字符 这个字符会将后面的特殊符号 (如*) 还原为普通字符 | 管道符 这个字符前面曾多次出现过,它的作用是将前面

2018.2.12 省选模拟赛

题目大意 (题目很简洁了,不需要大意) 其实显而易见地可以发现,当被卡一次后后面的路程都是固定了的. 可以用类似动态规划的思想来进行预处理.现在的问题就是怎么知道在某个位置刚等完红灯然后出发会在哪个路口再次被卡. 尝试画一画图: 其中横轴表示位置,纵轴表示时间,长方体表示红灯时段.有用的部分长度只有$r + g$,所以在模意义下弄一下就可以减少很多重复和无用状态: 但是这样仍然不好处理上面提到的问题,考虑让线段横着走,第一个撞着的长方形就是答案.为了实现这个目标,就每个长方形向下移动一段(移动的

2018.3.12 12周1次课

十二周一次课(3月12日) 12.1 LNMP架构介绍 12.2 MySQL安装 12.3/12.4 PHP安装 12.5 Nginx介绍 12.1 LNMP架构介绍 和LAMP唯一不同的是,LNMP中的N指的是Nginx(类似于Apache的一种web服务软件 ).目前这种环境的应用也非常多.Nginx设计的初衷是提供一种快速.高效.多并发的web服务软件.在静态页面的处理上, Nginx较Apache更胜一筹:但在动态页面的处理上,Nginx并不比Apache有优势.但是目前还是有很多爱好者