问题标题: 酷町堂:1267

0
0
施巧稚
施巧稚
初级守护
初级守护
#include<iostream>
#include<algorithm>
using namespace std;
struct tree{
    int dj,js;
}a[110000];
bool cmp(tree a,tree b){
    if(a.dj!=b.dj) return a.dj<b.dj;
}
int main()
{
	int w,n,ans=0;
    cin>>w>>n;
    for(int i=1;i<=n;i++)
    {
       cin>>a[i].dj;
    }
    for(int i=1;i<=n;i++)
    {
       cin>>a[i].js;
    }
    sort(a+1,a+1+w,cmp);
    for(int i=1;i<=n;i++)
    {
    	w-=a[i].dj*a[i].js;
    	if(w>0)//可以直接购买 
    	{
    		ans++;
    		ans+=a[i].dj*a[i].js;//直接购买 
    	}
    	if(w<=0)
		{
    		ans+=a[i].dj*a[i].js;
    		n-=a[i].js;//如果不够,先算出最大可以供给的,再减去所需要的。 
    	}
    }
    cout<<ans;
    return 0;
}

这个输出不对啊,求大佬改代码

施巧稚在2020-06-14 11:55:23追加了内容

再求助一下4186,我的输出是20

#include<bits/stdc++.h>
using namespace std;
int a[1000],c[1000];
int main()
{
   int n,rs;
   cin>>n>>rs;	
   int sum=0;
   for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
    sort(a+1,a+1+n);  
for(int i=1;i<=rs;i++)   
	c[i]=a[i];
for(int i=rs+1;i<=n;i++)   //第rs+1个人所需的时间就是打水+排队时间 
	c[i]=c[i-rs]+a[i];
for(int i=1;i<=n;i++)    
	sum+=+c[i]; //存  
cout<<sum<<endl;  
  return 0;
}

 


0
0
0
0
0
潮文馨
潮文馨
新手光能
新手光能

一年前的题都顶到第二了

0
蔡乐毅
蔡乐毅
高级光能
高级光能
  • for(int i=1;i<=w;i++){
    • if(n>a[i].js){
      • ans+=a[i].dj*a[i].js;
      • n-=a[i].js;
    • }
    • else{
      • ans+=n*s[i].dj;
      • break;
    • }
  • }

把23~36行改成这样

就AC了

蔡乐毅在2020-10-12 09:14:55追加了内容

1267

 

0
蔡乐毅
蔡乐毅
高级光能
高级光能

4186

把16~17行换成

 

  • for(int i=m+1;i<=n;i++){
    • minn=0x3f3f3f;
    • for(int j=1;j<=m;j++){
      • if(f[j]<minn){
        • minn=f[j];
        • pos=j;
      • }
    • }
    • sum+=f[pos];
    • f[pos]+=a[i];
  • }
  • f数组就是c数组
0
0
0
施巧稚
施巧稚
初级守护
初级守护

大佬们,就解答第一题

0
被禁言 张皓轩
张皓轩
中级光能
中级光能
核心:
struct p{
    int dj,js;
}a[100001];
bool cmp(p x,p y){
    return x.dj<y.dj;
}
int w,n,ans;
int main(){
    cin>>w>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].dj;
    }
    for(int i=1;i<=n;i++){
        cin>>a[i].js;
    }
    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=n;i++){
        if(w-a[i].js>=0){
            w-=a[i].js;
            ans+=a[i].dj*a[i].js;
        }else{
            ans+=w*a[i].dj;
            break;
        }
    }
    cout<<ans;
    return 0;
}

 

0
施巧稚
施巧稚
初级守护
初级守护

有大佬解答一下第一题吗

 

0
0
我要回答