10 条题解
-
1
简单的无限网格问题
题目大意
有一个无限大的网格,有一个点在 处。它可以向上、下、左、右四个方向移动,移动的格数不限。但对于每个第 次移动,格数的奇偶性必须与 相同。求移动到 的最少步数。
思路
妥妥的分类讨论题。首先,我们发现题目中提到了奇偶性这三个字,那么我们就优先从奇偶性来分析。
因为题中提到:,因此,不可能 步走到。考虑剩下的一种最优情况,即 步走到。此时正好走了一个奇数和一个偶数,而此时到了 ,说明 的奇偶性不同。
既然有奇偶性不同的情况,当然也得考虑奇偶性相同的情况。此时,很显然 步也是走不到的。这时,我们在分两个情况进行讨论。
-
均为奇数,此时我们可以先横向走到 ,再纵向走到 或 。接着又可以走奇数步,就把差的 格补上就好了。
-
均为偶数,此时我们可以先横向走到 或 ,再纵向走到 或 。接着又可以走奇数步,就把差的 格补上就好了。
综上所述,奇偶性不同时,需要 步走到;奇偶性相同时,需要 步走到。
复杂度
时间复杂度:
时间复杂度:
空间复杂度:
空间复杂度:
Code
#include <bits/stdc++.h> using namespace std; int main(){ int t,n,m; cin>>t; while(t--){ cin>>n>>m; if(n%2 != m%2) cout<<2<<endl;//奇偶性不同 else cout<<3<<endl;//奇偶性相同 } return 0; }
-
信息
- ID
- 7
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 346
- 已通过
- 242
- 上传者