#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 |
| 问题描述: |
|
本文解析了一道名为“小明种苹果(续)”的编程题,通过C++代码详细展示了如何处理苹果掉落的问题,包括苹果掉落次数的正确计算方法及组数的求解技巧。



1620

被折叠的 条评论
为什么被折叠?



