【HDU 1735】字数统计(贪心,有缺陷的一道题)
生活随笔
收集整理的這篇文章主要介紹了
【HDU 1735】字数统计(贪心,有缺陷的一道题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目分析:
解題思路:
ans = 0的個數 - “好”的個數最多的m-1行的0的個數 - 2*m(m段) - 最后一行末尾0的個數。
備注
本人認為此題有一個漏洞,或者說本人未考慮清楚。如下:
若某行首行兩數字為0,其上一行全0,該怎么處理?
若有大佬知道,望指教一二。
【注】不知道hdu什么破爛機制,這題必須要寫成循環不然不給過。
Code(G++):
#include <bits\stdc++.h> using namespace std; typedef long long ll; char a[10005][110];//存矩陣 int main(){ios::sync_with_stdio(false);int n,m,l;//不知道hdu什么破爛機制,必須要寫成循環不然不給過 while(cin >> n >> l >> m){int ans = 0;//輸入矩陣,ans為0的個數 for(int i = 1;i <= n; ++i)for(int j = 1;j <= l; ++j)cin >> a[i][j];if(a[i][j] == '0') ans++;//當某行首部出現兩個0,num存上一行末尾0的個數 int num[10010] = {0};int k = 0;for(int i = 2;i <= n; ++i)if(a[i][2] == '0' && a[i][1] == '0'){for(int j = l;j >= 1; --j){if(a[i-1][j] == '1') break;num[k]++;}k++;}//選出末尾含0最多的m-1行 sort(num,num+k);int cnt = 0;for(int i = k-1;cnt < m-1&&i >= 1; i--){ans -= num[i];cnt++;}//減去最后一行末尾的0 for(int i = l; i >= 1; i--){if(a[n][i] == '1') break;ans--;}//還需要減m行首部的2個0,其中1個必定是第一行 cout << ans-2*m << endl;}return 0; }總結
以上是生活随笔為你收集整理的【HDU 1735】字数统计(贪心,有缺陷的一道题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【HDU 2507】【ACM-ICPC算
- 下一篇: 【hdu 1061】Rightmost