Hybrid Crystals(思维,水题)

题目链接:Hybrid Crystals

题意:有三种能量石,分别是L,D,N。每颗能量石含有ai的能量。能量石可以融合,融合规则:L类型的合并可以增加ai点能量,D类型的减少,N类型的可加可减(加还是减随你自己)。并且保证第一颗能量石的能量是1,且类型是N。并且每颗能量石符合题目所给的那个公式。给你一些能量石,你需要融合其中一部分,让融合后的能量是k。

思路:

看懂那个式子,这就是一个彻底的水题了。我直接解释式子的意义了:第一颗L的取值最大是1,第二颗最大是2,第三颗最大是4,第四颗是8。D类型的同理。(假设中间没有N类型)

发现了什么了吗?后面的每一颗石头的能量最大不超过前面所有同类型的能量和。其实这就是题目所给式子的意思。而这就保证了如果开始的能量取值区间是连续的,加上某一颗石头之后仍然连续。

举个例子:

开始能量区间是 [-1,1],如果现在所能得到的能量区间为[-a,b],再加一颗能量石,若能量石是L,值是x,则融合后区间会变成 [-a,b+x],因为式子保证了x<b;如果是R,区间变成 [-a-x,b],因为式子保证x<a;如果是N,区间变成 [-a-x,b+x],因为N表示值可正可负,所以x<min(a,b)。

知道了这个,这不就很标准的水题了?

代码:

#include <stdio.h>
#include <string.h>
#include <string>
#include <algorithm>
#include <iostream> 
#include <math.h>
using namespace std;
const int maxn=1005;
int a[1005];
char b[1005];
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,k;
		scanf("%d%d",&n,&k);
		for(int i=1;i<=n;i++) scanf("%d",&a[i]);
		scanf("%*c");
		char ch;
		int sum=0;
		if(k>=0)
		{
			for(int i=1;i<=n;i++)
			{
				scanf("%c%*c",&ch);
				if(ch=='N' || ch=='L') sum+=a[i];
			}
			if(sum>=k) printf("yes\n");
			else printf("no\n");
		}
		else
		{
			for(int i=1;i<=n;i++)
			{
				scanf("%c%*c",&ch);
				if(ch=='N' || ch=='D') sum-=a[i];
			}
			if(sum<=k) printf("yes\n");
			else printf("no\n");
		}
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值