码迷,mamicode.com
首页 > 其他好文 > 详细

Math Show CodeForces - 846B

时间:2021-06-10 18:19:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:title   code   break   ace   get   tle   std   另一个   codeforce   

原题链接
考察:贪心+枚举
WA了n次,正解思维其实和A题一样,我想出了A题却没反应过本题,果然还是菜.
错误思路:
??分两种方式,一个是从时间少做到时间多的,另一个是横向完成一组一组的子任务.
错误原因:
??很明显没有枚举所有方式.
正确思路:
??枚举做0~n组任务后,再从小到大做任务的耗费时间.

Code

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 50;
int n,k,m,a[N],sum;
void solve()
{
	int ans = 0;
	for(int i=0;i<=n;i++)
	{
		int t = m,res = 0;
		if(t<i*sum) continue;
		t-=i*sum,res+=(k+1)*i;
		for(int j=1;j<=k;j++)
		{
			int cnt = t/a[j];
			res+=min(cnt,n-i);
			t-=min(cnt,n-i)*a[j];
			if(!cnt) break;
		}
		ans = max(ans,res);
	}
	printf("%d\n",ans);
}
int main()
{
	scanf("%d%d%d",&n,&k,&m);
	for(int i=1;i<=k;i++) scanf("%d",&a[i]),sum+=a[i];
	sort(a+1,a+k+1);
	solve();
	return 0;
}

Math Show CodeForces - 846B

标签:title   code   break   ace   get   tle   std   另一个   codeforce   

原文地址:https://www.cnblogs.com/newblg/p/14869953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!