[COCI2022-2023#1] Desni klik
题目背景
NFP 即未来!当谈到金融话题时,Noa 的朋友们都希望听到他说这句话。
题目描述
NFP 是一种加密货币。一枚 NFP 在
s
s
s 天内的价值可以用一个仅包含字符.
与#
的
r
r
r 行
s
s
s 列字符矩阵表示。第
i
i
i 列中自底向上第
j
j
j 行的#
表示第
i
i
i 天该 NFP 的价值为
j
j
j。
NFP 的“不安全度”定义为在 s s s 天之内其价值到达的最大值与最小值之差。
....##.
#..#...
.##....
......#
如上,这枚 NFP 在 7 7 7 天内的价值依次为: 3 , 2 , 2 , 3 , 4 , 4 , 1 3,2,2,3,4,4,1 3,2,2,3,4,4,1。它的“不安全度”是3。
现在 Noa 想让你帮他确定他手中 n n n 枚 NFP 的不安全度。
输入格式
第一行包含三个整数 n , r , s n,r,s n,r,s,分别表示 NFP 的数量,矩阵的行数和列数。
接下来 n n n 个 r r r 行 s s s 列的矩阵,描述每枚 NFP 的在 s s s 天内的价值。
保证每枚 NFP 的价值矩阵的每一列都包含且仅包含一个字符#
。
输出格式
输出 n n n 行,表示每枚 NFP 的不安全度。
样例 #1
样例输入 #1
4 2 2
##
..
..
##
#.
.#
.#
#.
样例输出 #1
0
0
1
1
样例 #2
样例输入 #2
1 5 8
.....#.#
...#..#.
..#.#...
.#......
#.......
样例输出 #2
4
样例 #3
样例输入 #3
2 3 3
...
##.
..#
.#.
#..
..#
样例输出 #3
1
2
提示说明
子任务 | 分值 | 特殊性质 |
---|---|---|
1 1 1 | 5 5 5 | r = s = 2 r=s=2 r=s=2 |
2 2 2 | 15 15 15 | n = 1 n=1 n=1 |
3 3 3 | 30 30 30 | 无特殊性质 |
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 20 , 2 ≤ r , s ≤ 50 1\leq n \leq 20,2\leq r,s \leq50 1≤n≤20,2≤r,s≤50。
本题满分 50 50 50 分。
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e3+10;
char a[N][N];
signed main()
{
ll t,n,m;
cin>>t>>n>>m;
while(t--)
{
ll mx=0,mn=1e9;
for(ll i=1;i<=n;i++)
for(ll j=1;j<=m;j++)
cin>>a[i][j];
for(ll j=1;j<=m;j++)
{
ll x=0;
for(ll i=1;i<=n;i++)
{
if(a[i][j]=='#')
{
x=n-i+1;
break;
}
}
mx=max(mx,x);
mn=min(mn,x);
}
cout<<mx-mn<<endl;
}
return 0;
}