Far Relative’s Birthday Cake 题解

本文最后更新于:8 个月前

题目

Far Relative’s Birthday Cake

描述

门的家人要庆祝门的生日聚会。他们很喜欢Famil Door,所以他们打算为他做一个奇怪的生日蛋糕。
蛋糕是一个n×n的正方形,由边长为1的相等的方块组成,每个方块不是空的就是由一块巧克力组成。他们买了蛋糕,随机开始把巧克力放在蛋糕上。Famil Door的幸福值将等于有巧克力的单元格在蛋糕的同一行或同一列的对数。法米尔门的家人在想,法米尔的幸福值会是多少?
请注意,任何一对都不能超过一次,因为两个不同的单元格不能同时在同一行和同一列中。

输入

在输入的第一行,你会得到一个整数n(1≤n≤100)–蛋糕边的长度。
然后是n行,每行包含n个字符。空的单元格用’.’表示,而含有巧克力的单元格用’C’表示。

输出

打印Famil Door的幸福值,即共享同一行或同一列的巧克力块的数量。

样例

输入

3
.CC
C..
C.C

输出

4

输入

4
CC..
C..C
.CC.
.CC.

输出

9

提示

如果我们从上到下对行进行编号,从左到右对列进行编号,那么,在第一个样本中共享同一行的作品是。

(1,2) and (1,3)
(3,1) and (3,3)
共享同一列的作品有:
(2,1) and (3,1)
(1,3) and (3,3)

补充

时间限制 2 秒
内存限制 256 MB
来源 FYOJ

题解

骗分过样例
暴力出奇迹
暴搜挂着机
打标进省一

咳咳咳,不装了
数据只有100
考虑暴力!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <bits/stdc++.h>
using namespace std;
int n;
char a[110][110];
string s;
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
cin >> n;
int ans = 0;
for (int i = 1; i <= n; i++){
cin >> s;
for (int j = 1; j <= n; j++){
a[i][j] = s[j-1];
}
}
for (int i = 1; i <= n; i++){
int sum = 0;
for (int j = 1; j <= n; j++){
if (a[i][j] == 'C'){
sum++;
}
}
ans += sum*(sum-1)/2;
}
for (int i = 1; i <= n; i++){
int sum1 = 0;
for (int j = 1; j <= n; j++){
if (a[j][i] == 'C'){
sum1++;
}
}
ans += sum1*(sum1-1)/2;
}
cout << ans << "\n";
return 0;
}

测评结果 通过
分数 100
时间 1 MS
内存 720 KB
语言 C++
代码长度 655


Far Relative’s Birthday Cake 题解
https://seth-blog.ml/posts/180282341/
作者
Seth
发布于
2022年5月12日
更新于
2022年5月12日
许可协议