题意:一块木板,切成多个米板,每次切的加工费等于板的长度,如21的木板切成5,8,8的,那么就要先两次,第一次切成(5+8)=13和一块8的,第二次把5+8的切开,第一次花费(13+8)=21元,第二次花费5+8=13元。
POJ中因为结果要求long long int,但是不知道为什么总是WA(wrong answer)了。本着不浪费时间(多刷题)原则,就不提交了,直接贴代码。
#include <stdio.h>
typedef long long ll;
int main()
{
int i,n,l[50000],temp;
ll ans=0;
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&l[i]);
while(n>1){
int mii1=0,mii2=1;
if(l[mii1]>l[mii2]){
temp=l[mii2];
l[mii2]=l[mii1];
l[mii1]=temp;
}
for(i=0;i<n;i++){
if(l[i]<l[mii1]){
mii2=mii1;
mii1=i;
}else if(l[i]<l[mii2]){}
mii2=i;
}
int t=l[mii1]+l[mii2];
ans+=t;
if(mii1==n-1){
temp=l[mii2];
l[mii2]=l[mii1];
l[mii1]=temp;
}
l[mii1]=t;
l[mii2]=l[n-1];
n–;
}
printf("%I64d\n",ans);
return 0;
}
POJ 3253
最新推荐文章于 2024-09-21 21:13:24 发布