#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = 1000 + 10;
int n,m,t;
int vis[maxn];
int g = 0,ans = 0,cnt = 0;
int main()
{
int sum;
scanf("%d",&n);
memset(vis,0,sizeof(vis));
for(int i = 1;i <= n;i++)
{
scanf("%d%d",&m,&sum);
m -= 1;
while(m--)
{
scanf("%d",&t);
if(t > 0)
{
if(sum > t)
{
vis[i] = 1;
}
sum = t;
}
else if(t < 0)
{
sum = sum - abs(t);
}
}
if(vis[i]) cnt++;
ans += sum;
}
for(int i = 1;i <= n;i++)
{
if(i == 1)
{
if(vis[n] && vis[1] && vis[2])
g++;
}
else if(i == n)
{
if(vis[n] && vis[1] && vis[n - 1])
g++;
}
else if(vis[i - 1] && vis[i] && vis[i + 1])
g++;
}
printf("%d %d %d\n",ans,cnt,g);
return 0;
}
比赛那天脑子也不知道咋的了,可能是被数学建模荼毒了,也可能是脑子就是没转过来,求cnt的时候写错位置了,放到if(sum > t)语句里了,这样如果一颗果树发生多次苹果掉落最后求出来的cnt数目就会过大,应该是每棵树判断一次是否发生了苹果掉落。还有就是看清题目要求,在求组数的时候我当成不能重复了。也就是说假如一共有三棵果树,这三棵果树都发生了掉落,那么组数应该是3,而不是1,。
问题描述
试题编号: | 201909-2 |
试题名称: | 小明种苹果(续) |
时间限制: | 1.0s |
内存限制: | 512.0MB |
问题描述: | |