• codeforces 1250B The Feast and the Bus


    题意:
    有N个人 K个队伍 然后跟N个数 ai表示第i个人的队伍编号 现在要找一辆车 这个车的容量可以自己定 但是这个车最多只能装两个队伍并且必须把同一个队伍的人全部装上 然后车的花费是选定的容量S和装的此时R的乘机 即S*R 问这个乘积的最小值

    思路:
    因为一辆车最多只能装2个队伍 所以我们设l=1 r=k 每次尽可能的把l,r放在一起带走 这样可以保证得到的S是最小的 然后我们再遍历a[1]——S的最大值 在遍历的过程中再不断的把l,r凑到一起就行

    #include<bits/stdc++.h>
    using namespace std; 
     
    typedef long long ll;
    int v,a[8005];
    
    int main()
    {
    	int n,m;
    	cin>>n>>m;-
    	for(int i=1;i<=n;i++)
    	{
    		cin>>v;
    		a[v]++;
    	}
    	sort(a+1,a+1+m,greater<int>());
    	int maxx = 0;
    	for(int i=1,j=m;i<=j;i++,j--)
    	{
    		if(i!=j)
    		{
    			maxx = max(maxx , a[i]+a[j]);
    		}
    		else maxx = max(maxx , a[i]);
    	}
    	ll ans = 1e16;
    	for(int i = a[1] ;i <= maxx ;i++)
    	{
    		int l = 1,r = m;
    		int times = 0;
    		while(l<=r)
    		{
    			times++;
    			if(l != r && a[l]+a[r]<=i)
    			{
    				l++,r--;
    			}
    			else l++;
    		}
    		ans = min(ans,times*i*1ll);
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
    
  • 相关阅读:
    poj 2262
    poj 1050
    poj 1730
    poj 1061
    【设计模式】简单工厂模式学习
    【待学】
    [设计模式]策略模式和单一职责
    Windows live writer 误删 草稿 恢复
    [Linq]Linq To Sql (2)
    MVC 学习日志1(上)
  • 原文地址:https://www.cnblogs.com/tianming1/p/13603674.html
Copyright © 2020-2023  润新知