csp-x 模拟一 报告~

s06510 周宸辉

今天10月2号

我来发个补题报告

一、解题报告

1、题目描述

问题描述

小可对达达真的是真爱!

小可为了体现对达达的爱,特意要为即将下班的达达做一顿丰富的晚饭!

已知达达到家时间是 K 时刻,并且知道当前处在 now 时刻。

小可需要 p 秒时间去准备好饭菜。

假设小可制作晚饭总共需要 q 秒时间。

请问赶在达达到家之前,小可是否能准备完晚饭。

输入格式

输入第一行按照 hh : mm : ss,即时:分:秒表示的时间 now,表示当前时间。

输入第二行按照 hh : mm : ss,即时:分:秒表示的时间 K,表示达达到家的时刻。

输入第三行两个整数 p,q,分别表示准备时间和制作时间。

输出格式

如果可以赶在达达回家之前制作完晚饭,输出Yes,否则输出No

 这道题有些不会 (?) 就直接奉上解题代码吧

这是AC代码(由于太懒了,就不打代码了)

小提示:(不要上了作者的当),关键词加粗了,是之前,好好分析吧 

分析:

“:”输入,可以用char 或用scanf(我用的scanf,简单点) 然后把小时化成秒,把分钟也化成秒 

t就是达达回来的时间 ,现在的时间+上做饭的时间就是达达回来的时间

然后输出yes no 就OK(第一个字母大写)

 第一题 完事

接着看第二题

2、评价标准

问题描述

给定一个长度为 n 的数组 S ,其中包含1,2,⋯,S​1​​,S​2​​,⋯,S​n​​。

定义数组 S 的评价标准为:最大值-最小值

小可同学觉得问题过于简单。然后定义了一种操作:给定一个操作值 k,然后任意从数组中选择一个数字x,可以将数字 x 加上 k,或者减去 k,之后得到一个新的数组,并使得新数组的评价标准最小。最终输出最小的评价标准。

输入格式

输入第一行包含两个整数 n,k 。

第二行输入数组 S,总共 n 个整数,使用空格分开。

输出格式

输出一行,包含一个整数,表示操作后最小的评价标准。

正解奉上~

震撼吧(打这个代码是手都麻了,快写出残影了)

有点神经病的可可嫌太简单,加了个K

数字x要加上k或减去k  会出现一个新的数组,最小的是哪一个,就输出什么

记住 这个数不管是减还是加都要增加max和min的值(有可能加上K就比最大的还要大,比最小的还要小) 算完了输出

第二题 完事!~

第三题

时间限制:1秒        内存限制:256M

3、小可买菜

问题描述

小可对达达真的是真爱!

小可为了体现对达达的爱,特意要为即将下班的达达做一顿丰富的晚饭!

做饭之前需要先购买足够的新鲜的食材,小可来到了超市。

小可列了一个购买清单,总共有 n 个食材需要购买,在超市中第 i 个食材的价格是 v​i​​。

今天超市正在进行促销活动,每满两个商品,都可以进行促销活动,使用两个商品中最高价格购买当前这两件商品。

为了节省金钱,小可还在线购买了 k 张超市折扣券,每两件商品可以使用一张折扣券,使用两个商品中最低价格购买当前这两件商品。

注意:商品不能重复参加活动。

请问小可购买清单中所有物品都购买后,最低花费多少元。

输入格式

第一行输入两个整数 n,k,含义如题所示。

第二行输入 n 个整数 v​i​​,数字以空格分隔,表示每个食材价格。

输出格式

输出一行包含一个整数,表示小可购买清单中所有物品都购买后,最低花费多少元。

(看看错的多离谱,当个乐子就行了🤡🤡🤡)

来吧 正解

(苦练20分钟,做出来的,太不容易了😭😭)

可可家(穷还是富) 买了k个优惠卷(估计是114514个)

商场里有促销,两个只用付便宜的 若有优惠卷 就支付那个最便宜的

这道题的思路不大会,只是把正确的抄上 所以,这道题过

不会的 我还会分析一下

没有优惠卷的话就是付最贵的 有的话就付最便宜的

过!

最后一道题

4、美味佳肴

时间限制:1秒        内存限制:256M

问题描述

吃面包要配果酱

吃薯条要配番茄酱

……

达达发现,小可准备的这些美食中,很多食物搭配起来吃最美味了!

小可为了让达达吃起来最顺利,已经给食物提前进行了标记,标记分为两种:大写字母 和 ?,相同大写字母表示两个食物搭配起来吃最美味,?则表示搭配任何一个食物吃都非常美味,但是达达有习惯,一旦使用当前这种食物搭配另一个食物,达达就不会再去搭配其他食物吃,也就是说每个?确定与某个食物搭配后,则不能再与其他食物搭配食用。

现在请问小可制作的饭菜中最多有多少种不同的搭配。

注意:

不同的搭配表示,字符相等,但是位置不同。

形式化的讲,给定一个由大写字母?构成的字符串 s ,在字符串中存在 l,r 满足 l<r 且 s[l]==s[r],则表示一种美味搭配。找出最多的不同的搭配,当 l 不同或 r 不同,就表示一种不同搭配。

输入格式

多组测试,第一行一个整数 T,表示测试组数。

然后对于每组测试数据,输入一个字符串s,含义如题所示。

输出格式

对于每组测试数据,输出一个整数,表示不同的搭配数量。

输入样例
 
  1. 4
  2. ?A?
  3. ABCDBDABCDBA
  4. ABCD?ACNBADADA
  5. ERTETHD?ERY?ERHDFS?
  6. SZD?S
输出样例
 
  1. 3
  2. 13
  3. 20
  4. 27

此题没错 肢解放正解

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iomanip>
#include<algorithm>
using namespace std;
long long t,maxx,id;
long long a[400],ans;
string s;
int main(){
	scanf("%lld",&t);
	while(t--){
		memset(a,0,sizeof a);
		maxx=0,id=0,ans=0;
		cin>>s;
		for(int i=0;i<s.size();i++){
			a[s[i]]++;
		}
		for(int i=0;i<300;i++){
			if(char(i)!='?'&&a[i]>maxx){
				maxx=a[i];
				id=i;
			}
		}
		a[id]+=a['?'];
		a['?']=0;
		for(int i=0;i<300;i++){
			if(a[i]!=0){
				ans+=a[i]*(a[i]-1)/2;
			}
		}
		printf("%lld\n",ans);
	}
	return 0;
}

这就是正解 

这道题要用公式 等差数列 (由于才上六年级,就先不放了)   (头+尾)×项数/2

然后慢慢配对 得出正解

是n-1,n-2,n-3……一直到1

完事!(别急,底下还有)

其实这些题都可以用枚举解决 但都会时间超限 大家根据情况来做

我只是小学生 可能分析的不准 不喜勿喷 谢谢!

(不知小可和达达他俩是什么关系)


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值