寻宝

摘要:
第二个问题是寻宝#includeusingspacestd;整数,qqq,q11,kk,k,n,m,a[1001][10001],s[1001][1000-1],w[1001];intmain(){cin˃˃n˃˃m;对于{cin˃˃a[i][j]˃˃s[i][j];}cin˃˃k;用于{ifw[i]++;}对于{intk1=0;kk=s[i][k];sum+=kk,sum%=20123;kk%=w[i];如果{kk=w[i;}对于{如果{k1++;如果{k=j;break;}}如果{j=-1;}}}cout˂˂sum;return0;}起初,我看完这个问题后,没有心情做这个问题。单词太多了,我一眼就做不到!!!!!然后提交代码,超时,显然需要优化。输入数组时,可以直接计算每层的楼梯数,该数组由w数组表示。直接kk%w[i],节省了重复搜索的大部分时间。注意,如果kk是w[i]的倍数,则需要使kk=w[i],否则kk=0,如何找到它?

第二题 寻宝

#include<bits/stdc++.h>

using namespace std;

int sum,qqq,q11,kk,k,n,m,a[10001][10001],s[10001][10001],w[10001];

int main(){

cin>>n>>m;

for(int i=1;i<=n;i++)

for(int j=0;j<=m-1;j++)

{

cin>>a[i][j]>>s[i][j];

}

cin>>k;

for(int i=1;i<=n;i++)

for(int j=0;j<=m-1;j++)

{

if(a[i][j]==1)

w[i]++;

}

for(int i=1;i<=n;i++)

{

int k1=0;

kk=s[i][k];

sum+=kk,sum%=20123;

kk%=w[i];

if(kk==0)

{

kk=w[i];

}

for(int j=k;j<=m-1;j++)

{

if(a[i][j]==1)

{

k1++;

if(k1==kk)

{

k=j;

break;

}

}

if(j==m-1)

{

j=-1;

}

}

}

cout<<sum;

return 0;

}

本来我看了这道题是完全没有心情去做的,字太多了,一看就不会做!!!!!

其实它是非常简单的,不涉及什么复杂的算法,只需要简单的模拟一下过程,再优化一下就行了。

模拟过程如下:

首先输入,

a数组存每个房间是否有阶梯的判断,s数组存每个房间的指示数

用k记录每次到达的那个房间的编号。

用kk记录其指示数,

从第一层开始往上爬,到达第i层,sum+其指示数,从第k号开始遍历,数kk个楼梯房,第kk个就是我们所要找的,此时就可以记录第几号房间停留的,用k更新,再用break停止循环,我们需要考虑到从第k个数到m-1个或许还不够kk个楼梯房,那么我们需要去他的下一个房间也就是第0号房间数个数。

if(j==m-1)

{

j=-1;

}

这个是我的代码实现,用以构成环,因为你想要数第0个,就想办法使j在第m-1个之后变成第0个,我们的循环是j++,使j在下一次成为零,那就使其在这一次成为-1,下一次自然就为0了。

然后提交代码,超时,显然需要优化。

可以在输入数组时直接把每一层有楼梯的个数给数出来,用w数组表示。

直接kk%w[i],省去大部分时间重复寻找,注意如果kk是w[i]的倍数,需要使kk=w[i],否则kk=0,它怎么找?

然后就没有然后了。

免责声明:文章转载自《寻宝》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Windows下Critical Section、Event、Mutex、Semaphores区别实战二(上):程序出错该返回啥?NULL、异常、错误码、空对象?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Linux查看机器和硬盘的SN

查看硬件RAID中硬盘的SN#sas端口:[root@~]$smartctl-a/dev/sda dmegaraid,n***序列号:6RJ974SR***#sat端口[root@~]$smarttl-a/dev/sda-dsat+megaraid,n***序列号:6BRJ974SR***查看机器SN[root@~~]$dmidcode-t1**序列号...

TortoiseGit安装、配置(Git 小乌龟安装)

然后关闭5ToroiseGit。以克隆验证中心项目为例,验证TortoiseGit配置是否正确。注意:在克隆代码之前,请确保您具有相关的项目代码权限。如果您没有权限,请具有主权限的同事帮助您分配登录gitlab的权限,在本地目标下载目录中获取SSH链接地址,右键单击--˃TortoiseGit--˃克隆,然后将SSH链接地址粘贴到URL,单击“确定”确认项目...

PLSQL操作Oracle创建用户和表(含创建用户名和密码)

1》 打开PLSQL,填写用户名和密码,为数据库选择ORCL2,成功登录后可以在界面顶部看到以下信息system@ORCL这意味着用户系统处于登录状态。菜单栏中的会话可以登录和注销。...

Oracle11g温习-第七章:redo日志

thread:线程,在单实例的环境下,thread#永远是1sequence:日志序列号。在日志切换时会递增。FIRST_CHANGE#:在当前日志中记录的首个数据块的scn。...

android动态申请权限

申请权限对于安卓开发很重要,从Android6.0开始,Android系统提供动态申请权限的机制,APP在使用危险权限时,需要用户的授权才可进一步操作。...

MongoDB 查看集合的统计信息

--1查看集合的统计信息srs0:“size”:“ok”:可以理解为集合名称计数:集合中的文档总数大小:连续分配的数据块索引:最近分配的块的大小paddingFactor:所有索引索引的总大小大小:--2显示rs0:db。东西。stats(1024)(KB);{“ns”:“count”:“size”:“indexSize”:...