2 solutions

  • 0
    @ 2025-12-4 16:23:23
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1010;
    int a[N],b[N];
    int main()
    {
    	int n,m;
    	cin>>n>>m;
    	if(n==2)
    	{
    		int cnt1=0,cnt2=0;
    		vector<int> v;
    		for(int i=1;i<=m;i++)
    		{
    			int x,y;
    			cin>>x>>y;
    			if(x==1) cnt1++;
    			else
    			{
    				cnt2++;
    				v.push_back(y);
    			}
    		}
    		int cost=0;
    		int i=0;
    		sort(v.begin(),v.end());
    		while(cnt1<=cnt2)
    		{
    			cost+=v[i];
    			i++;
    			cnt1++,cnt2--;
    		}
    		cout<<cost;
    	}
    	if(m==2)
    	{
    		int ans=2e9+10;
    		for(int i=1;i<=2;i++) cin>>a[i]>>b[i];
    		for(int w1=1;w1<=n;w1++)
    		{
    			for(int w2=1;w2<=n;w2++)
    			{
    				vector<int> cnt(n+1,0);//全部清0
    				cnt[w1]++,cnt[w2]++;
    				bool st=true;//最开始是合法的
    				for(int i=2;i<=n;i++)
    				{
    					if(cnt[1]<=cnt[i])
    					{
    						st=false;//说明不合法
    						break;
    					}
    				}
    				if(st)
    				{
    					int cost=0;
    					if(w1!=a[1]) cost+=b[1];
    					if(w2!=a[2]) cost+=b[2];
    					ans=min(ans,cost);
    				}
    			}
    		}
    		cout<<ans;
    	}
    	return 0;
    }
    

    Information

    ID
    2218
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    7
    Tags
    # Submissions
    7
    Accepted
    3
    Uploaded By