0
已解决
1416 87分:
#include<iostream>
using namespace std;
int main()
{
int a[1000],n1,n,sum=0;
cin>>n1;
n=n1*n1;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n-i;j++)
{
if(a[j]<a[j+1])
swap(a[j],a[j+1]);
}
}
for(int i=1;i<=n1;i++)
sum+=a[i];
cout<<sum;
return 0;
}
1267 90分:
#include<iostream>
#include<algorithm>
using namespace std;
struct gys{
int p,s;
}sj[110000];
bool cmp(gys a,gys b){
if(a.p!=b.p)
return a.p<b.p;
}
int a[110000],m,n,s,t;
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
cin>>sj[i].p;
for(int i=1;i<=m;i++)
cin>>sj[i].s;
sort(sj+1,sj+1+n,cmp);
while(n>0)
{
s++;
n=n-sj[s].s;
t+=sj[s].s*sj[s].p;
}
t+=n*sj[s].p;
cout<<t;
return 0;
}
0
已采纳
for(int i=0;i<n;i++)
{
if(w>0)
{
w-=s[i].kg;
sum+=s[i].money*s[i].kg;
if(w<=0)
{
w+=s[i].kg;
sum-=s[i].money*s[i].kg;
sum+=w*s[i].money;
break;
}
}
else
{
break;
}
}
核心代码
0
0
0
核心
for(int i=1;i<=m;i++)
{
if(sj[i].s>=n)
{
ans+=n*sj[i].p;//当提供数量可一次性购买
cout<<ans;//直接输出
return 0;//递归思路,这里return 0 即为归
}
if(sj[i].s<n)
{
ans+=(sj[i].s*sj[i].p);//当无法一次性购买,乘上可供购买的
n-=sj[i].s;//减去需要的,即递
}
}
//这是我帮你改的,判断输出这么写
//同时,判断函数,我是这么写的
bool cmp(gys a,gys b){
if(a.p!=b.p)
return a.p<b.p;
return a.s<b.s;
}//这可以自己想
完颜傲伦在2018-07-26 12:16:39追加了内容
吧 while() 和 cout<<t 替换成这个
完颜傲伦在2018-07-26 12:28:09追加了内容
顺便问一下,我1416为什么是87分,@杨子逸,你怎么改的
0

