POJ 3253

题意:一块木板,切成多个米板,每次切的加工费等于板的长度,如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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值