---恢复内容开始---

这是2012noip普及组的一个模拟题,第一次得了50,看了题解后剪枝拿到100.

N层楼,m个房间,逆时针排序。每个房间有一个指示牌,也可能有楼梯,找到第(上楼的第一个房间指示牌)有楼梯的房间,上去,这些指示牌的数之和则为答案。所以先循环层数,再记录sum,并确定j=start和需要找几个有楼梯的,然后while房间数,找到了book++,如果绕了一圈,那么j=1。那么这里就有一个可以优化的地方了。当指示牌的要求大于这一层的房间数的时候,进行取余操作(a[i][start]-1)%f[i]+1,前面再计算每一层的数组即可。

1.数组一定要开满,编译没爆开就行。

2.细节错误的话,调试很重要,输出一定要完整。

3.时间复杂度高的话一定要有意识去优化暴力的方法,比如此处的取余。

代码:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<string>
  5. #include<cmath>
  6. #include<algorithm>
  7. using namespace std;
  8. int n,m;
  9. int flag[][];//0没有
  10. int a[][];
  11. int f[];
  12. long long sum=;
  13. int start;
  14. int main(){
  15. cin>>n>>m;
  16. for(int i=;i<=n;i++){
  17. for(int j=;j<=m;j++){
  18. cin>>flag[i][j]>>a[i][j];
  19. f[i]=f[i]+flag[i][j];
  20. }
  21. }
  22. cin>>start;
  23. start++;//从1开始
  24. for(int i=;i<=n;i++){
  25. sum+=a[i][start];
  26. int j=start;//上去的房间号
  27. int book=;
  28. a[i][start]=(a[i][start]-)%f[i]+;
  29. while(true){
  30. if(flag[i][j]==){
  31. book++;
  32. // cout<<i<<" "<<j<<" "<<book<<endl;
  33. }
  34. if(book==a[i][start]){//!
  35. start=j;
  36. break;
  37. }
  38. else{
  39. if(j<m) j++;
  40. else j=;
  41. }
  42. }
  43. }
  44. cout<<sum%;
  45. return ;
  46. }

P1076寻宝的更多相关文章

  1. 洛谷 P1076 寻宝 解题报告

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

  2. P1076 寻宝

    P1076 寻宝 题解 这道题真是感人啊,废了蒟蒻一天的时间 关键 1. a[ k ][ ] 数组记录第k层有楼梯房间的编号 a[ k ][ 0 ]  第k层有几个有楼梯的房间 a[ k ][ i ] ...

  3. 洛谷P1076 寻宝

    寻宝 模拟加优化,细节比较重要. 我们用ti[i]表示i这一层有楼梯的个数,然后我们把当前1号点的数据mod上ti[i],然后使该数不能等于0,就行了. #include <bits/stdc+ ...

  4. 洛谷 P1076 寻宝(模拟 && 剪枝)

    嗯... 题目链接:https://www.luogu.org/problem/P1076 这道题的题意首先太难理解...并且细节太多... 可以用b[i][j]记录每个指示牌上的数字,a[i][j] ...

  5. 洛谷 P1076 寻宝 题解

    今天又TM考试了...... 这是T1,然后我模拟20分滚粗. Analysis 在每层的时候用编号%这层可以上楼的房间个数就行了. #include<iostream> #include ...

  6. 【NOIP2012普及组】寻宝

    这道实际难度入门的题做得真™要麻烦死我,由于摸不到电脑,在大脑里调了3天都翻不转!! P1076 寻宝 思路:暴力模拟(这是基础,单纯暴力据说会全部TLE)+取模优化(这样时间复杂度骤降到O(NM)) ...

  7. 2019.7.12 sdfzoier做题统计

    lixf_lixf :9 P1981 表达式求值 P1076 寻宝 P1199 三国游戏 P1308 统计单词数 P1190 接水问题 P1158 导弹拦截 P1070 道路游戏 P1069 细胞分裂 ...

  8. [BZOJ3991][SDOI2015]寻宝游戏

    [BZOJ3991][SDOI2015]寻宝游戏 试题描述 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择 ...

  9. nyoj 82 迷宫寻宝(一)

    点击打开链接 迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫 ...

随机推荐

  1. spark2.1.0 自定义AccumulatorV2累加少值(线程不安全)?

    一.踩坑经历 自定义的accumulator是线程不安全的,会造成累加结果不正确.自定找了很久没想到是线程不安全行成的. 二.解决方法 创建一个线程安全的集合变量(我用的是Java的Concurren ...

  2. 【leetcode】1218. Longest Arithmetic Subsequence of Given Difference

    题目如下: Given an integer array arr and an integer difference, return the length of the longest subsequ ...

  3. mac安装指定版本的openjdk

    先安装SDKMAN,教程在https://sdkman.io/install 然后 sdk list java sdk install java 11.0.5.hs-adpt

  4. Redis实战(十二)Redis实现分布式锁

    序言 SET my_key my_value NX PX milliseconds 资料 如何优雅地用Redis实现分布式锁?

  5. cpp 面向对象初步探索

    需求 尝试定义一个complex(复数类) 简略实现 headers/complex.h #ifndef __COMPLEX__ #define __COMPLEX__ class complex { ...

  6. (57)Linux驱动开发之三Linux字符设备驱动

    1.一般情况下,对每一种设备驱动都会定义一个软件模块,这个工程模块包含.h和.c文件,前者定义该设备驱动的数据结构并声明外部函数,后者进行设备驱动的具体实现. 2.典型的无操作系统下的逻辑开发程序是: ...

  7. es6新的数据类型——generator

    todo 一.Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同. 语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态. 执行 ...

  8. ENGINE =MyISAM DEFAULT CHARACTER SET latin1 COLLATE latin1_general_cs AUTO_INCREMENT=0; 什么意思

    ENGINE =MyISAM //表类型为myisam插写比较快 DEFAULT CHARACTER  SET  latin1//默认字符为latin1 COLLATE  latin1_general ...

  9. Java字符串的不可变性

    声明一个字符串引用变量: String  s = "abcd"; s是一个引用变量,指向 堆内存中的字符串常量 "abcd" 再声明一个字符串引用变量: Str ...

  10. &&的运算顺序

    先判断“&&”左侧的表达式,左侧的表达式为真时,再运算右侧的表达式.如左侧为假,则不运算右侧.