• 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;
    }
    
    
  • 相关阅读:
    Oracle视图,索引,序列
    Oracle的表创建和事务管理
    Oracle子查询和多表查询
    python实现二叉树
    python实现二分查找
    python实现各种排序算法
    flask邮件发送
    django之图片预览实现方法
    django ORM操作
    Django Form之select自动更新
  • 原文地址:https://www.cnblogs.com/tianming1/p/13603674.html
Copyright © 2020-2023  润新知