1 条题解
-
2
您也可以点我,去博客园观看。
我们可以看到出题人在卡常......
大体思路:
正解很简单,爆搜肯定过不了。
这里直接放标程,自己体会去吧。首先我们可以看到:
(注:吕西安可多次拿走同一位置的棋子。)
那就很显然了,我们只要让吕西安每次都拿走初始位置上的棋子,那他就和不存在一样!(吕西安:原来我就是个配角......)
那么题目就转换为了:
小明在第一分钟时会摆上一个方块。此后每分钟,小明都会在上次摆放的方块的四面(上下左右)八方(斜边)各摆放一个方块。小明想知道自己需要用多长时间才能摆满一个 n×m 的方框。
嘿!不就是类似病毒扩散吗!答案就是初始位置距离四条边的最大值。
换句话说,从初始位置扩散到距离初始位置最远的那条边所用的时长,就是答案!
代码:
#include<iostream> #include<cstring> #include<cstdio> #include<bits/stdc++.h> using namespace std; int main(){ int n,m,f=0; int x; ios::sync_with_stdio(false); //加速,您也可以不使用 cin、cout,那样会快一些,不然会被卡常。 cin>>n>>m; int ans=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>x; if(x==1){ //找到了初始位置。 ans=max(max(max(i,j),n-i+1),m-j+1); //求距离最远的那条边。 f=1; break; //找到答案后直接结束。 } } if(f==1) break; } cout<<ans<<endl; return 0; }
总结:
这只是道签到题而已......别被吕西安所诱惑!
信息
- ID
- 254
- 时间
- 200ms
- 内存
- 5MiB
- 难度
- 8
- 标签
- 递交数
- 45
- 已通过
- 7
- 上传者