首页 > 其他分享 >牛客周赛:25

牛客周赛:25

时间:2023-12-24 23:44:22浏览次数:42  
标签:周赛 25 int ll 血量 牛客 怪物 ans 技能

模板

A、小红购物

跳转原题点击此:[A题地址](A-小红购物_牛客周赛 Round 25 (nowcoder.com))

1、题目大意

  小红购买了n件物品,但是对其中部分商品不满意要退货,但是退货要收取手续费,手续为为\(max(5, \lfloor {该商品价格 / 100} \rfloor)\),问你小红最终需要支出多少钱。

2、题目解析

  普通的模拟题目,对价格按照下标从0开始,这样就与是否退货的字符串(string)对应上了。因为cpp的整数整除是向下整除的,所以无需过多操作。

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
const int N = 1e3 + 10;

int n;
int f[N];
string s;

void solve()
{
	cin >> n;
	for(int i = 0 ; i < n ; i++)
		cin >> f[i];
	cin >> s;
	ll ans = 0;
	for(int i = 0; i < n; i++)
	{
		if(s[i] == 'F')
			ans += max(5, f[i] / 100);
		else
			ans += f[i];
	}
	cout << ans << endl;
}

int main()
{
	solve();
	return 0;
}

 

B、小红吃桃

跳转原题点击此:B题地址

1、题目大意

  小红的n个桃子有甜度和酸度,要求 甜度的乘积 \(+\) 酸度的乘积,其中每个桃子的甜度和酸度可以交换,问你最终的和最大为多少。

2、题目解析

  要获得某个乘积最大,只需要这里面最大的数放在一起,就一定能获得最大的乘积和,剩下的较小的数在一起,这样和就是最大。贪心--乘积效应

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
const int N = 1e5+10;
const int mod = 1e9 + 7;

int n;
ll a[N], b[N];
ll ans1, ans2;

void solve()
{
	cin >> n;
	for(int i = 1; i <= n; i++)	
		cin >> a[i];
	for(int i = 1; i <= n; i++)
		cin >> b[i];
	
	ans1 = 1, ans2 = 1;
	for(int i = 1; i <= n; i++)
	{
		ans1 = ans1 * min(a[i], b[i]) % mod;
		ans2 = ans2 * max(a[i], b[i]) % mod;
	}
	cout << (ans1 + ans2) % mod << endl;
	
}

int main()
{
	solve();

	return 0;
}

 

C、小红的踏前斩

跳转原题点击此:C题地址

1、题目大意

  一共有n个怪物,第\(i\)个怪物的血量为\(a_i\);而小红有两个技能:1、使某个怪物的血量减一消耗1EXP;2、使第一个怪物血量减一,该怪物后面的第一个怪物血量减二,后面的第二个怪物血量减三消耗5EXP。当怪物血量小于等于0时为被消灭。问你小红消灭所有怪物的最小EXP。

2、题目解析

  注意到,第二个技能以5EXP换的6血量,而第一个技能5EXP只能换5血量。所以我们要尽可能地满足第二个技能条件,所以当满足\(a[i]\ge1、a[i+1]\ge2、a[i+2]\ge3\)时,就可以使用第二个技能;其他条件就是第一个技能。
   知道贪心条件,还要确定遍历顺序,先看例子:
\([1, 4, 8, 7, 6]\):从前往后 -> \([0, 2, 4, 7, 6]\) -> \([0, 0, 1, 1, 6]\)
        从后往前 -> \([1, 4, 6, 3, 0]\) -> \([1, 3, 4, 0, 0]\) -> \([0, 1, 1, 0, 0]\)
   这是因为:从后往前不会影响前面的可能存在的满足第二个技能的血量序列,而从前往后会影响后面满足第二个技能的血量序列,注意区别!!!!。

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
const int N = 1e6 + 10;

int n;
ll f[N];
ll ans;

void solve()
{
	memset(f, 0, sizeof f);
	cin >> n;
	for(int i = 1; i <= n; i++)
		cin >> f[i];
	
	ans = 0;
	for(int i = n - 2; i >= 1; i--)
	{
		if(f[i] >= 1 && f[i + 1] >= 2 && f[i + 2] >= 3)
		{
			ll tmp = min({f[i], f[i + 1] / 2, f[i + 2] / 3});
			ans += 5ll * tmp;
			
			f[i] -= tmp;
			f[i + 1] -= tmp * 2;
			f[i + 2] -= tmp * 3;
			
			ans += f[i + 2];
			f[i + 2] = 0;
		}
		
	}
	
        // 最后找到无法满足第二个技能条件的血量,加上即可。
	for(int i = 1; i <= n; i++)
		ans += f[i];
		
	cout << ans;
}

int main()
{
	solve();
	return 0;
}

 

D题等我有能力再补上

标签:周赛,25,int,ll,血量,牛客,怪物,ans,技能
From: https://www.cnblogs.com/Tom-catlll/p/17925072.html

相关文章

  • 2023-2024-1 20231425《计算机基础与程序设计》第十三周学习总结
    2023-2024-120231425《计算机基础与程序设计》第十三周学习总结2023-2024-120231425《计算机基础与程序设计》第十三周学习总结作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业要求在哪里2023-2024-1计算机基础与程序设计第十周......
  • 2023-2024-1 20231325 《计算机基础与程序设计》第13周学习总结
    ###目录*作业信息*教材学习内容总结1.《c语言程序设计》第12章*基于AI的学习*上周错题*学习进度条作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业的要求在哪里1.学习《C语言程序设计》第12章并完成云班课测试。作业正文......
  • 第 120 场双周赛(前缀和,双指针,树形dp+贪心)
     classSolution:deflargestPerimeter(self,nums:List[int])->int:nums.sort()n=len(nums)s=list(accumulate(nums))foriinrange(n-1,1,-1):ifnums[i]<s[i-1]:returnn......
  • 很有意思的一次周赛,虽然被打爆了,呜呜,动了四题,只ac一道板子
    第三次周赛题解A.前缀和观察题cao分奇偶注意观察---奇数()只有第一个和第二个会是奇数后面全是前面累乘2if(x%2!=0)x要么是第一个要么是第二个(无区别)因为1,2元素大小相等剩下元素a[n]=pow(2,n-2)*x;else不是奇数化为奇数llq=x;//保存一下结果,后面要特判whil......
  • Acwing.第135场周赛
    比赛地址A.买苹果题目思路:简单的模拟一下就好了代码:#include<bits/stdc++.h>usingnamespacestd;voidsolve(){ intn,x; cin>>n>>x; cout<<n/x<<endl; return; }intmain(){ intt=1; while(t--){ solve(); } return0;}B.牛群题目思路:也......
  • ABC251G
    提供一个本质相同,但是不需要会向量也能做,而且很好想的方法。首先发现凸包点少,也就意味着边少,考虑从边的方向寻找突破口。考虑一个凸包的本质:若干个直线划分出若干个半平面,它们的交即为这个凸包。如果一个点对于每一条直线,都在于凸包的同侧,那么这个点就在这个凸包内。这样直接暴......
  • day25 面向对象高阶
    复习@classmethod方法类内部使用@classmethod修饰器的方法就是绑定到类的方法→类方法类方法可以直接通过类调用而无需实例化def__init__(self):类的构造函数创建一个实例(对象)时自动调用在py中self和cls只是约定俗成的命名,没有特殊的含义self通常作为对象方......
  • 牛客2022多校DAY10-K You are given a tree
    「牛客2022多校DAY10-K」Youaregivenatree...简要题意给一棵带点权和边权的树,找到至多\(k\)个点权不同的点,使得它们之间路径覆盖的边权和最大。\(n\le5000,k\le5\)。Solution考虑颜色数量不大的时候怎么暴力。显然可以直接状压DP,压一下当前选择的颜色集合为\(S\),......
  • 11月25日,RPA 学习天地基于UiPath产品公开课,圆满结束,帮助学员掌握RPA能力!
    11月25日,RPA学习天地在UiPath产品的公开课上,成功地帮助学员们掌握了RPA(RoboticProcessAutomation)的能力。这堂课程通过深入浅出的讲解,让学员们了解到了RPA的原理和应用场景,以及如何利用UiPath的产品进行流程设计和自动化执行。在这次公开课中,RPA学习天地的讲师们运用生动的案......
  • 【P2505】今天开始我要自己上厕所 爸爸妈妈你们不要小看我 宝宝巴士教我上厕所秘诀 我
    题目传送门不管怎么说,双倍经验。题意很简洁了。对于每个源点\(s\),先跑一遍dijkstra。显然,若满足\(dis_v=dis_u+w_{u,v}\),则\(e(u,v)\)一定在最短路上。显然在\(w_{u,v}>0\)时,不存在\(u,v\)使得\(dis_u=dis_v+w_{u,v}\wedgedis_v=dis_u+w_{u,v}\)。因此,若将最短......