HDU 1735 统计数字(贪心)
2016-08-16 20:04
246 查看
题意:告诉你,n行,l 列,m段
找出最少被涂掉的字的个数
题解:记录总共0的个数,减掉m*2 ,在两个0开头的上一行尾数 0的个数记下来,排个序,减掉越长的越好,一共减掉m-1个就可以了。
#include <stdio.h>
#include <string.h>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
int mp[10005][105];
int b[10005];//尾部
int n,l,m;
int hang[10005];//确定那几行
int a1,a0;
int main()
{
while(~scanf("%d%d%d",&n,&l,&m))
{
memset(hang,0,sizeof(hang));
memset(b,0,sizeof(b));
a1=0;a0=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=l;j++)
{
scanf("%d",&mp[i][j]);
if(mp[i][j]==0) a0++;
else a1++;
}
if(mp[i][1]==0 &&mp[i][2]==0 && i!=1)
hang[i]=1;
}
int cnt=1;//记录个数
for(int i=2;i<=n;i++)
{
if(hang[i]==1)
{
for(int j=l;j>=1;j--)
{
if(mp[i-1][j]==1)
break;
else {
b[cnt]++;
}
}
cnt++;
}
}
cnt--;
//最下面一层
for(int j=l;j>=1;j--)
{
if(mp
[j]==1)
break;
else {
a0--;
}
}
a0-=m*2;
sort(b+1,b+cnt+1);
for(int i=cnt;i>=0 &&m>1 ;i--,m--)
{
a0-=b[i];
}
printf("%d\n",a0);
}
return 0;
}
找出最少被涂掉的字的个数
题解:记录总共0的个数,减掉m*2 ,在两个0开头的上一行尾数 0的个数记下来,排个序,减掉越长的越好,一共减掉m-1个就可以了。
#include <stdio.h>
#include <string.h>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
int mp[10005][105];
int b[10005];//尾部
int n,l,m;
int hang[10005];//确定那几行
int a1,a0;
int main()
{
while(~scanf("%d%d%d",&n,&l,&m))
{
memset(hang,0,sizeof(hang));
memset(b,0,sizeof(b));
a1=0;a0=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=l;j++)
{
scanf("%d",&mp[i][j]);
if(mp[i][j]==0) a0++;
else a1++;
}
if(mp[i][1]==0 &&mp[i][2]==0 && i!=1)
hang[i]=1;
}
int cnt=1;//记录个数
for(int i=2;i<=n;i++)
{
if(hang[i]==1)
{
for(int j=l;j>=1;j--)
{
if(mp[i-1][j]==1)
break;
else {
b[cnt]++;
}
}
cnt++;
}
}
cnt--;
//最下面一层
for(int j=l;j>=1;j--)
{
if(mp
[j]==1)
break;
else {
a0--;
}
}
a0-=m*2;
sort(b+1,b+cnt+1);
for(int i=cnt;i>=0 &&m>1 ;i--,m--)
{
a0-=b[i];
}
printf("%d\n",a0);
}
return 0;
}
相关文章推荐
- hdu 1735(贪心)
- hdu 3943 统计出现了x次4与y次7的数字
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)
- HDU 6034(字符串相加 每个字母代表一个数字 算贡献度 贪心)
- HDU 1800 简单贪心 13.1.10用trie重做 ---其实是统计出现次数最多的单词
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)
- hdu 4352 统计数字数位上最长上升子序列长度为k的个数
- HDU 1735 字数统计
- hdoj 1735 字数统计 【贪心】
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)
- hdu 1735 文字统计
- hdu 3555 统计包含49的数字
- HDU1735 字数统计
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)
- HDU - 4726 Kia's Calculation (贪心 数字加和错误运算处理)
- HDU 3183 A Magic Lamp(贪心,删掉m个数字使剩下的数字字符串最小)
- hdu-oj 1735 字数统计
- HDU_2017——统计数字字符出现的个数
- HDU 1735 - 字数统计