hdu 1735(贪心) 统计字数

戳我穿越:http://acm.hdu.edu.cn/showproblem.php?pid=1735

对于贪心,二分,枚举等基础一定要掌握的很牢,要一步一个脚印走踏实

这是道贪心的题目,要有贪心的意识。

首先将所有为0的地方统计,因为是求最小的字数,所有最后一行后面的0可以看为空格直接减掉,

因为有m段(一定包括第一行),再减去m*2,最后枚举每行,将至少前两个为0的上一行的最后有多少

的0统计起来排序,再依次减去前m-1个大的,这样就保证了得到的答案是符合条件中最小的

code

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 int yj[10001][101],lsy[10001];
 5 bool cmp(int x,int y){return x>y;}
 6 int main()
 7 {
 8     int n,m,x,sum,ans,i,j,k,flag;
 9     while (~scanf("%d %d %d",&n,&m,&x))
10     {
11         sum=0;
12         for (i=1;i<=n;i++)
13         {
14             for (j=1;j<=m;j++)
15             {
16                scanf("%d",&yj[i][j]);
17                if (!yj[i][j])
18                   sum++;
19             }
20         }
21         //printf("%d\n",sum);
22         for (i=m;i>=1;i--)
23         {
24             if (!yj[n][i]) sum--;
25             else break;
26         }
27         //printf("%d\n",sum);
28         k=1;
29         for (i=2;i<=n;i++)
30         {
31             ans=0;flag=0;
32             if (!yj[i][1]&&!yj[i][2])
33             {
34                 flag=1;
35                 for (j=m;j>=1;j--)
36                 {
37                     if (!yj[i-1][j])
38                         ans++;
39                     else
40                         break;
41                 }
42             }
43             if (flag)
44                lsy[k++]=ans;
45         }
46         sum-=2*x;x--;
47         /*for (i=1;i<k;i++)
48             printf("%d ",lsy[i]);
49         printf("\n");*/
50         sort(lsy+1,lsy+k,cmp);
51         for (i=1;i<=x;i++)
52             sum-=lsy[i];
53         printf("%d\n",sum);
54     }
55     return 0;
56 }

 

转载于:https://www.cnblogs.com/JJCHEHEDA/p/4682880.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值