0%

2026-7-31代码源模拟赛-2赛后总结

模拟赛总算结束了,我又来写总结了。

比赛概述+难点分析:

  1. 本场比赛共6题。
  2. 本场比赛时长共4小时。
  3. T1,T2,T3,T5较简单,T4较难 (我当时调了1个小时) ,T6难度尚可 (没做完)

题目分析

T1 美味的辣酱

原题链接
这题不需要动脑子,直接上代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
using namespace std;
int q,x;
int main(){
cin >> q;
while(q--){
cin >> x;
if(x<4){
cout << "MILD\n";
}else if(x>=4&&x<7){
cout << "MEDIUM\n";
}else{
cout << "HOT\n";
}
}
return 0;
}

T2 对决游戏

原题链接
emm…这题有点意思, 但是我当时卡了二十分钟
其实这题只需要总结几个赢的条件。注意一定要总结全!

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
using namespace std;
int q,a,b,c;
int main(){
cin >> q;
while(q--){
cin >> a >> b >> c;
if(b+c<a){
cout << "YES\n";
}else if(abs(b-c)<a){
cout << "YES\n";
}else{
cout << "NO\n";
}
}
return 0;
}

T3 硬币兑换

原题链接
分析:因为1枚金币可以兑换5枚银币,5枚银币可以兑换1枚金币;所以我们可以假设金币价值为5,银币价值为1。因为兑换时总价值不变,同时丢弃一枚金币和银币总价值就会减少6,可以先判断原来的总价值 p1 和兑换后的总价值 p2 ,如果 p1-p2(易得p1>=p2)%6!=0 就直接输出”No\n”。
话不多说,直接上代码。

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll q,a,b,aa,bb;
int main(){
cin >> q;
while(q--){
cin >> a >> b >> aa >> bb;
ll p1=5*a+b,p2=5*aa+bb;
if(p1<p2){
cout << "No\n";
continue;
}
if((p1-p2)%6!=0){
cout << "No\n";
continue;
}
ll jian=(p1-p2)/6;
if(aa+jian>=0&&bb+jian>=0){
cout << "Yes\n";
}else{
cout << "No\n";
}
}
return 0;
}

T4 追逐大作战

原题链接
就是这题花了我一个小时的宝贵时间!!!不然我T6就做出来了!!!
分析:

C++

1

T5 手链修复

原题链接
分析:假设两个原来的字符串和两个反转后的字符串分别为s1,s2,r1,r2;它们一共有四种组合方式:{s1,s2},{s1,r2},{r1,s2},{r1,r2};再写一个check()函数检验这是种组合方式能否被分成两个一模一样的字符串。

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<bits/stdc++.h>
using namespace std;
int q;
string s1,s2;
bool check(string t1,string t2){
bool flag=true;
string tmp=t1+t2;
int len=tmp.length(),m=len/2;
for(int i=0;i<m;i++){
if(tmp[i]!=tmp[i+m]) flag=false;
}
return flag;
}
int main(){
cin >> q;
while(q--){
cin >> s1 >> s2;
if((s1.length()+s2.length())%2!=0){
cout << "NO\n";
continue;
}
string r1=s1,r2=s2;
reverse(r1.begin(),r1.end());
reverse(r2.begin(),r2.end());
if(check(s1,s2)||check(s1,r2)||check(r1,s2)||check(r1,r2)){
cout << "YES\n";
}else{
cout << "NO\n";
}
}
return 0;
}

T6 六进制能量果

原题链接
分析:因为输入的是一串六进制数,所以要先把它们转成十进制作乘法再转回六进制,最后统计一下就行了。

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<bits/stdc++.h>
using namespace std;
int n,x,t[200005],tt[200005];
int main(){
cin >> n >> x;
for(int i=1;i<=n;i++){
int y;
cin >> y;
int v=0,d=1;
while(y){
v+=(y%10)*d;
d*=6;
y/=10;
}
t[i]=t[i-1];
while(!(v%2)){
v/=2;
t[i]++;
}
tt[i]=tt[i-1];
while(!(v%3)){
v/=3;
tt[i]++;
}
}
int l=1;
long long ans=0;
for(int i=1;i<=n;i++){
while(l<=n&&(t[l]-t[i-1]<x||tt[l]-tt[i-1]<x)){
l++;
}
ans+=n-l+1;
}
cout << ans;
return 0;
}

Markdown学习笔记

因为Hexo要用Markdown写文章,所以就有了这篇学习笔记

标题类

格式:

“#”表示一级标题
“##”表示二级标题
“###”表示三级标题
“####”表示四级标题
“#####”表示五级标题
“######”表示六级标题

粗体、斜体、斜粗体类

格式:

两边各两个星号表示粗体:粗体
两边各一个星号表示斜体:斜体
两边各三个星号表示斜粗体:斜粗体

列表类

格式:

普通列表

无序列表:+/-/*
有序列表(数字可以不连续):1.
2.
3.
列表可以嵌套,只需要在子列表的标记符号前面添加两个或四个空格即可,保持缩进长度尽量一致。

任务列表

任务列表:- [ ]
- [x]

引用类

格式:

“> “(紧跟一个空格)表示引用
多级引用只需重复基础引用的符号即可(要加空格!)

代码类

格式:

这是一段代码

“```”(两边都要)表示一个代码块

链接类

格式:

普通链接

“[链接名称]”(链接URL “可选标题”)”

参考链接

“[参考链接]: URL “可选标题””

图片类

格式:

“![替代文字]”(URL “可选标题”)”

比如:

相对路径:”![favicon]”(./images/favicon.ico)”
绝对路径:”![screenshot]”(C:\Users\Administrator\Pictures\screenshot.jpg)”

表格类

格式:

“|表头|表头|
|—-|—-|
|单元格|单元格|
|单元格|单元格|”

对齐方式:

“:—“表示左对齐
“—:”表示右对齐
“:—:”表示居中对齐

分割线类

格式:

“***”/“—“/“___”都可以
符号中间可以有空格,也可以使用三个以上的符号

数学公式类

格式:

  1. 命令:以反斜杠 “" 开头,如 \alpha、\sum
  2. 参数:用花括号 “{}” 包围,如 \frac{a}{b}
  3. 下标:使用 “_” ,如 x_1
  4. 上标:使用 “^” ,如 x^2
  5. 分组:用花括号将多个字符组合,如 x_{i+1}

行内公式与块级公式

用单个符号 “$” 包裹,如函数$f(x)=x^2+2x+1$

图表类

格式:

例如:

graph TD
    A[开始] --> B{条件判断}
    B -->|Yes| C[执行操作A]
    B -->|No| D[执行操作B]
    C --> E[结束]
    D --> E

其他注意事项

  1. 换行要用尾随至少两个空格+一个换行符,或两个换行符
  2. 标记符号(如+/-/*)后面要跟一个空格