2 条题解

  • 0
    @ 2022-11-20 17:35:37
    #include
    using namespace std;
    struct game{
    	int time,money;
    }; 
    game a[1001];
    bool f[501];
    int _compare(const game &a,const game &b)
    {
    	return a.money>b.money;
    }
    int main()
    {
    	int n,m,sum1=0;
    	cin>>m;
    	cin>>n;
    	sum1=m;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a[i].time;
    	}
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a[i].money;
    		sum1-=a[i].money;
    	}
    	sort(a+1,a+n+1,_compare);
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=a[i].time;j>=1;j--)
    		{
    			if(!f[j])
    			{
    				f[j]=true;
    				sum1+=a[i].money;
    				break;
    			}
    		}
    	}
    	cout<<sum1;
    	return 0;
    }
    

    老样子先排序 然后让第i个在第i段时间完成

    • -2
      @ 2024-12-11 22:53:25

      班门弄斧一下,没用结构体

      #include<bits/stdc++.h>
      using namespace std;
      bool vis[501];
      int m,n,t[501],w[501];
      int main(){
      	freopen("riddle.in","r",stdin);
      	freopen("riddle.out","w",stdout);
      	cin >> m >> n;
      	for (int i=1;i<=n;i++) cin >> t[i];
      	for (int i=1;i<=n;i++) cin >> w[i];
      	for (int i=n;i>=1;i--){
      	int p=0;
      	for (int j=1;j<=n;j++) if (!vis[j]&&t[j]>=i){
      		if (w[j]>w[p]) p=j;
      	}
      		if (p>0) vis[p]=1;
      	}
      	for (int i=1;i<=n;i++) if (!vis[i]) m-=w[i];
      	cout << m << endl;
      	return 0;
      }
      

      比较菜,请多指教

      • 1

      信息

      ID
      443
      时间
      1000ms
      内存
      256MiB
      难度
      4
      标签
      递交数
      32
      已通过
      17
      上传者