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