P1076寻宝
---恢复内容开始---
这是2012noip普及组的一个模拟题,第一次得了50,看了题解后剪枝拿到100.
N层楼,m个房间,逆时针排序。每个房间有一个指示牌,也可能有楼梯,找到第(上楼的第一个房间指示牌)有楼梯的房间,上去,这些指示牌的数之和则为答案。所以先循环层数,再记录sum,并确定j=start和需要找几个有楼梯的,然后while房间数,找到了book++,如果绕了一圈,那么j=1。那么这里就有一个可以优化的地方了。当指示牌的要求大于这一层的房间数的时候,进行取余操作(a[i][start]-1)%f[i]+1,前面再计算每一层的数组即可。
1.数组一定要开满,编译没爆开就行。
2.细节错误的话,调试很重要,输出一定要完整。
3.时间复杂度高的话一定要有意识去优化暴力的方法,比如此处的取余。
代码:
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<string>
- #include<cmath>
- #include<algorithm>
- using namespace std;
- int n,m;
- int flag[][];//0没有
- int a[][];
- int f[];
- long long sum=;
- int start;
- int main(){
- cin>>n>>m;
- for(int i=;i<=n;i++){
- for(int j=;j<=m;j++){
- cin>>flag[i][j]>>a[i][j];
- f[i]=f[i]+flag[i][j];
- }
- }
- cin>>start;
- start++;//从1开始
- for(int i=;i<=n;i++){
- sum+=a[i][start];
- int j=start;//上去的房间号
- int book=;
- a[i][start]=(a[i][start]-)%f[i]+;
- while(true){
- if(flag[i][j]==){
- book++;
- // cout<<i<<" "<<j<<" "<<book<<endl;
- }
- if(book==a[i][start]){//!
- start=j;
- break;
- }
- else{
- if(j<m) j++;
- else j=;
- }
- }
- }
- cout<<sum%;
- return ;
- }
P1076寻宝的更多相关文章
- 洛谷 P1076 寻宝 解题报告
P1076 寻宝 题目描述 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书.说明书的内容如下: 藏宝楼共有\( ...
- P1076 寻宝
P1076 寻宝 题解 这道题真是感人啊,废了蒟蒻一天的时间 关键 1. a[ k ][ ] 数组记录第k层有楼梯房间的编号 a[ k ][ 0 ] 第k层有几个有楼梯的房间 a[ k ][ i ] ...
- 洛谷P1076 寻宝
寻宝 模拟加优化,细节比较重要. 我们用ti[i]表示i这一层有楼梯的个数,然后我们把当前1号点的数据mod上ti[i],然后使该数不能等于0,就行了. #include <bits/stdc+ ...
- 洛谷 P1076 寻宝(模拟 && 剪枝)
嗯... 题目链接:https://www.luogu.org/problem/P1076 这道题的题意首先太难理解...并且细节太多... 可以用b[i][j]记录每个指示牌上的数字,a[i][j] ...
- 洛谷 P1076 寻宝 题解
今天又TM考试了...... 这是T1,然后我模拟20分滚粗. Analysis 在每层的时候用编号%这层可以上楼的房间个数就行了. #include<iostream> #include ...
- 【NOIP2012普及组】寻宝
这道实际难度入门的题做得真™要麻烦死我,由于摸不到电脑,在大脑里调了3天都翻不转!! P1076 寻宝 思路:暴力模拟(这是基础,单纯暴力据说会全部TLE)+取模优化(这样时间复杂度骤降到O(NM)) ...
- 2019.7.12 sdfzoier做题统计
lixf_lixf :9 P1981 表达式求值 P1076 寻宝 P1199 三国游戏 P1308 统计单词数 P1190 接水问题 P1158 导弹拦截 P1070 道路游戏 P1069 细胞分裂 ...
- [BZOJ3991][SDOI2015]寻宝游戏
[BZOJ3991][SDOI2015]寻宝游戏 试题描述 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择 ...
- nyoj 82 迷宫寻宝(一)
点击打开链接 迷宫寻宝(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫 ...
随机推荐
- spark2.1.0 自定义AccumulatorV2累加少值(线程不安全)?
一.踩坑经历 自定义的accumulator是线程不安全的,会造成累加结果不正确.自定找了很久没想到是线程不安全行成的. 二.解决方法 创建一个线程安全的集合变量(我用的是Java的Concurren ...
- 【leetcode】1218. Longest Arithmetic Subsequence of Given Difference
题目如下: Given an integer array arr and an integer difference, return the length of the longest subsequ ...
- mac安装指定版本的openjdk
先安装SDKMAN,教程在https://sdkman.io/install 然后 sdk list java sdk install java 11.0.5.hs-adpt
- Redis实战(十二)Redis实现分布式锁
序言 SET my_key my_value NX PX milliseconds 资料 如何优雅地用Redis实现分布式锁?
- cpp 面向对象初步探索
需求 尝试定义一个complex(复数类) 简略实现 headers/complex.h #ifndef __COMPLEX__ #define __COMPLEX__ class complex { ...
- (57)Linux驱动开发之三Linux字符设备驱动
1.一般情况下,对每一种设备驱动都会定义一个软件模块,这个工程模块包含.h和.c文件,前者定义该设备驱动的数据结构并声明外部函数,后者进行设备驱动的具体实现. 2.典型的无操作系统下的逻辑开发程序是: ...
- es6新的数据类型——generator
todo 一.Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同. 语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态. 执行 ...
- ENGINE =MyISAM DEFAULT CHARACTER SET latin1 COLLATE latin1_general_cs AUTO_INCREMENT=0; 什么意思
ENGINE =MyISAM //表类型为myisam插写比较快 DEFAULT CHARACTER SET latin1//默认字符为latin1 COLLATE latin1_general ...
- Java字符串的不可变性
声明一个字符串引用变量: String s = "abcd"; s是一个引用变量,指向 堆内存中的字符串常量 "abcd" 再声明一个字符串引用变量: Str ...
- &&的运算顺序
先判断“&&”左侧的表达式,左侧的表达式为真时,再运算右侧的表达式.如左侧为假,则不运算右侧.