洛谷P3392 涂国旗
生活随笔
收集整理的這篇文章主要介紹了
洛谷P3392 涂国旗
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
P3392 涂國旗
-
- 107通過
- 507提交
- 題目提供者kkksc03
- 標簽
- 難度普及-
?提交??討論??題解??
最新討論
- 直接讀字符會wa
- WA?--
- 為什么不對。。。
- 跪求找錯
- 快點給錢
- 這不就是荷蘭國旗問題嗎
題目描述
某國法律規定,只要一個由N*M個小方塊組成的旗幟符合如下規則,就是合法的國旗。(毛熊:阿嚏——)
-
從最上方若干行(>=1)的格子全部是白色的。
-
接下來若干行(>=1)的格子全部是藍色的
- 剩下的行(>=1)全部是紅色的
現有一個棋盤狀的破布,分成了N行M列的格子,每個格子是白色藍色紅色之一,小a希望把這個布改成該國國旗,方法是在一些格子上涂顏料,蓋住之前的顏色。
小a很懶,希望涂最少的格子,使這塊破布成為一個合法的國旗。
輸入輸出格式
輸入格式:?
第一行是兩個整數,N,M
接下來N行是一個矩陣,矩陣的每一個小方塊是'W'(白),'B'(藍),'R'(紅)中的一個
?
輸出格式:?
一個整數,表示至少需要涂多少塊。
?
輸入輸出樣例
輸入樣例#1:4 5 WRWRW BWRWB WRWRW RWBWR 輸出樣例#1:
11
說明
樣例解釋:
目標狀態是
WWWWW BBBBB RRRRR RRRRR一共需要改11個格子
對于100%的數據,N,M<=50
分析:以為是dp,但是仔細一想,發現完全可以枚舉哪一行涂什么顏色,這樣的話只需要在預處理的時候將第i行涂第j種顏色需要的代價求出來即可.
#include <cstdio> #include <iostream> #include <cstring> #include <algorithm>using namespace std;int n, m,w[55],r[55],b[55],ans = 2510; char c[55][55];int main() {scanf("%d%d", &n, &m);for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++){cin >> c[i][j];if (c[i][j] == 'W'){r[i]++;b[i]++;}if (c[i][j] == 'R'){b[i]++;w[i]++;}if (c[i][j] == 'B'){w[i]++;r[i]++;}}//for (int i = 1; i <= n; i++)//printf("%d %d %d\n", w[i], b[i], r[i]);for (int i = 2; i < n; i++)for (int j = i + 1; j <= n; j++){int temp = 0;for (int k = 1; k <= n; k++){if (k < i){temp += w[k];//printf("1 %d\n", temp); }if (k >= i && k < j){temp += b[k];//printf("2 %d\n", temp); }if (k >= j){temp += r[k];//printf("3 %d\n", temp); }}ans = min(temp, ans);//printf("%d\n", temp); }printf("%d", ans);//while (1);return 0; }?
轉載于:https://www.cnblogs.com/zbtrs/p/5998066.html
總結
以上是生活随笔為你收集整理的洛谷P3392 涂国旗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习资料:8大行业,30个大数据实践案例
- 下一篇: 华为p40 pro原理图_4188起 华