首页 > 其他分享 >AT_arc174_b [ARC174B] Bought Review 题解

AT_arc174_b [ARC174B] Bought Review 题解

时间:2024-03-26 19:34:54浏览次数:27  
标签:cnt 题解 Review fd sum 评论 ARC174B Bought

题目翻译

针对 \(T\) 个测试用例解决以下问题:

在美食评论网站 EatCocoder 上,你可以评论餐厅的星级(从 \(1\) 到 \(5\) 的整数)。

最初,由厨师长 \(B\) 管理的餐厅有 \(A_i\) 条 \(i\) 星级评价。( \(1 ≤ i ≤ 5\) )

厨师可以向 EatCocoder 管理部门 行贿 提供 \(P_i\) 日元,以获得一次 额外 的 \(i\) 星评论。( \(1 ≤ i ≤ 5\) )

通过贿赂添加总共 \(k\) 条评论后,将有 \(A_1+A_2+A_3+A_4+A_5+k\) 条评论。

厨师 \(B\) 希望这些评论的平均评分至少为三星

请求出实现这一目标所需的最低 贿赂 消费总额。

算法

法一(暴力)

不会写暴力了,呜呜呜…

法二(正解)

首先,如果平均分就 \(≥3\) ,显然答案为 \(0\) 。

然后—我们可以发现一个 人类智慧 优化:

我们每增加一条评论,那么应新增的星数就加 \(3\) ,
那么为了补回星数,我们只能选择比 \(3\) 大的,即 \(4\) 和 \(5\) 。

我们可以贪心:

  • 全买 \(4\) 分的
  • 买 \(1\) 个 \(4\) 分的和一些 \(5\) 分的
  • 全买 \(5\) 分的
#include<bits/stdc++.h>
#define int long long
#define fd(i,a,b) for(int i=a;i<=b;i=-~i)
using namespace std;
int n,c,T,a[300100],f[2500],p[300100],ans=-1,cnt,sum;
signed main()
{
	ios::sync_with_stdio(0);
	cin>>T;
	while(T--)
	{
   		cnt=sum=0;
   		ans=1e18;
		fd(i,1,5) cin>>a[i],cnt+=a[i]*3,sum+=a[i]*i;
		fd(i,1,5) cin>>p[i];
		if(sum>=cnt)//平均分≥3
		{
			cout<<0<<endl;
			continue;
		}
		if((cnt-sum)%2)
		ans=min(ans,min(((cnt-sum)/2+1)*p[5],((cnt-sum)/2)*p[5]+p[4]));
		//买1个4分的和一些5分的/全买5分的
		if((cnt-sum)%2==0)
		ans=min(ans,((cnt-sum)/2)*p[5]);
		//全买5分的
		ans=min(ans,(cnt-sum)*p[4]);
		//全买4分的
		cout<<ans<<endl;
	}
	return 0;
}

无关的话(审核大大,求过审):被禁言了,怎么解啊?

感谢观看!

标签:cnt,题解,Review,fd,sum,评论,ARC174B,Bought
From: https://www.cnblogs.com/whrwlx/p/18097391

相关文章

  • AT_arc174_a [ARC174A] A Multiply 题解
    题目翻译给你一个长度为\(N\)的整数序列,\(A=(A_1,A_2,…,A_N)\),和一个整数\(C\)。在执行以下操作最多一次后,找出A中元素的最大可能和:选择两个整数\(l\)和\(r\)(\(1≤l≤r≤N\)),将\(A_l,A_{l+1},…,A_r\)分别乘以\(C\)。算法法一(暴力)可以\(O_{(N^2)}\)暴力......
  • 20240326每日一题题解
    20240326每日一题题解Problem给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。2<=......
  • 问题解答:ABAP 关键字 ANY TABLE 的使用场合深入剖析
    本教程下面这篇讲述ABAP动态编程的文章,有朋友提问:127.答网友疑问:ABAPFunctionModule如何支持内表结构不确定的动态输入参数汪老师,我这边定义了一个ANYTABLE,但是报错,说是没有这个类型,我在SE38定义的时候也报错,只有用FIELD-symbols定义才不会报错,所以就很好奇为什......
  • ccf-csp-2020-12-2期末预测之最佳阈值(c++满分题解)
    这个题暴力是可以有70分的,下面是暴力代码:(注释写的比较清楚了,也很好理解)#include<iostream>#include<vector>#include<set>#include<algorithm>usingnamespacestd;boolsort1(pair<int,int>vec1,pair<int,int>vec2)//对阈值从小到大排序{ returnvec1.first<=ve......
  • [题解] BZOJ4203 同桌的你
    题意给出\(n\)个人的性别\(b_i\)、喜欢的人\(a_i\)(有且仅有一个)。现在两人分一组,若一组中存在一人喜欢另一人,则称这一组为「满意」的。要求在最大化「满意」组数的前提下最大化男女同桌组数,并构造分组方案。思路考虑建图,从\(i\)到\(a_i\)连一条有向边,转化为基环树上......
  • AGC018C Coins 题解
    模拟费用流。传送门题意:共\(n=x+y+z\)个人,每个人可以选择获得\(a_i\)个金币或\(b_i\)个银币或\(c_i\)个铜币。要选\(x\)个人拿金币,\(y\)个人拿银币,\(z\)个人拿铜币。问币数总和最大是多少。\(n\le10^5\)。先建出费用流模型:把一个人的选择视作一个人流到了金币/......
  • Atcoder ABC 346 全题解
    闲话上一篇全题解反向不错,如果大家支持我就会继续更。我ABC也打了,ARC也打了,没打好,疯狂掉大分……包括本场比赛也是整整补了EFG三道题,以及ARC死磕D结果使赛后五分钟AC又有素材了……A懒得讲B由于我被B题坑了,所以在此纪念。最简单的方法就是把字符串复制......
  • 20240325每日一题题解
    20240325每日一题题解Problem给出一个整数\(a\)和一个正整数\(n\),求乘方\(a^n\)。输入一行,包含两个整数\(a\)和\(n\)。\(-1000000\lea\le1000000\),\(1\len\le10000\)。输出一个整数,即乘方结果。题目保证最终结果的绝对值不超过\(1000000\)。样例输入23样......
  • 动态尺寸加载libpag文件白边问题解决方案
    加载pag文件时,最理想的情况是canvas的宽高和pag资源文件的宽高一致,或比例一致。否则就会出现四周白边(页面底色),除非是按平铺的样式进行设置(源码暂未找到对应方法)。而对于页面宽高不定的情况下,就无法保证pag文件能适配页面,如果pag文件底色和父级页面底色不一致,就会表现出来......
  • CSP-S 2023 题解
    T1听说有歧义?希卓没看懂。不过真的水。你看能把它拧成什么正确密码。#include<bits/stdc++.h>#defineLLlonglongusingnamespacestd;LLn,sum,a[10][6],p,b[10][6];LLf[100010];intmain(){ scanf("%lld",&n); for(inti=1;i<=n;i++) { for(intj=1;j<=5;j++)......