【题意简述】:输入:树的数量n,卡车的长度L,接下来的一行是每棵树的高度。现在要伐木,要把树截成和卡车一样的长度,所以就有可能会造成截断后,树的长度比卡车的长度短,这部分的树就要扔掉,所以就是浪费的部分,又由于浪费的树木的数量与税收是成正比的,所以现在让我们求要等待几年再去伐树,所交的税最少,注:树一年长一米。
【分析】:题目看懂了,就很好做了,模拟一下就好。
看别人的博客有这样去求结果的,想法很好,积累!!
scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) scanf("%d", &f[i]); for (int i = 1; i <= n; i++) f[i] = f[i] % m; int ans = 0; for (int i = 1; i <= n; i++) if (f[i] != 0) ans = max(ans, m - f[i]); printf("%d\n", ans);我的代码:
//368K 16Ms
#include<iostream>
using namespace std;
#define N 30005
int main()
{
int n,L;
cin>>n>>L;
int tree[N];
int sum;
int Min = 30005;
int ans;
for(int i = 0;i<n;i++)
cin>>tree[i];
for(int i = 0;i<L;i++)
{
sum = 0;
for(int j = 0;j<n;j++)
{
sum += (tree[j]+i)%L;
}
if(sum<Min)
{
Min = sum;
ans = i;
}
}
cout<<ans<<endl;
return 0;
}