zoukankan      html  css  js  c++  java
  • hdu 1735(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1735

    思路:贪心,只要开头有两个0,则需要判断其上一行最后有多少个连续的0,按上一行最后处0的数量由大到小排序(特殊处理一下最后一行末尾0就可以了);

    View Code
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 #define MAXN 10000+10
     7 #define MAXL 100+10
     8 int map[MAXN][MAXL];
     9 int n,l,m,k,ans;
    10 int _count[MAXN];//(如果当前行前2个为0)记录上一行行尾0的个数
    11 
    12 int cmp(const int &p,const int &q){
    13     return p>q;
    14 }
    15 
    16 
    17 int main(){
    18     while(~scanf("%d%d%d",&n,&l,&m)){
    19         k=0,ans=0;
    20         for(int i=1;i<=n;i++){
    21             for(int j=1;j<=l;j++){
    22                 scanf("%d",&map[i][j]);
    23                 if(!map[i][j])ans++;
    24             }
    25         }
    26         //除去最后一行行尾0的个数
    27         for(int i=l;i>=1;i--){
    28             if(!map[n][i])ans--;
    29             else break;
    30         }
    31         ans-=2*m;//除去m行开始的2个0
    32         for(int i=2;i<=n;i++){
    33             int count=0;
    34             if(!map[i][1]&&!map[i][2]){
    35                 //记录上一行行尾0的个数
    36                 for(int j=l;j>=1;j--){
    37                     if(!map[i-1][j])count++;
    38                     else break;
    39                 }
    40                 _count[k++]=count;
    41             }
    42         }
    43         sort(_count,_count+k,cmp);
    44         //只需m-1行就行;
    45         for(int i=0;i<m-1;i++){
    46             ans-=_count[i];
    47         }
    48         printf("%d\n",ans);
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    实验6:Mapreduce实例——WordCount
    暑期生活10
    暑期生活9
    暑期生活8
    暑期生活7
    暑期生活6
    暑期生活5
    暑期生活4
    暑期生活3
    暑期生活2
  • 原文地址:https://www.cnblogs.com/wally/p/3052581.html
Copyright © 2011-2022 走看看