第一章 模拟
1.概念
- 模拟就是用计算机来模拟题目中要求的操作。
- 建模就是把事物进行抽象,根据实际问题来建立对应的数:学模型。
- 如果把实际问题建模成数学问题,就会大大地方便计算机来“理解”和“解决”。
2.常见题型
- 基本操作模拟:理解题目操作步骤,用代码准确实现。
- 简单场景模拟:以简单生活或游戏场景为背景,依地图信息和规则,模拟角色移动、探索等行为。
- 复杂系统模拟:模拟复杂系统或机制,如乘车购票,考虑因素相互影响,设计数据结构与算法实现。
- 算法结合模拟:将模拟与数学思维(找规律、快速幂、快排等)等高级算法结合考查。
3.例题
【GESP202403四级T1】相似字符串
【GESP202403四级T1】相似字符串
#include <bits/stdc++.h>
using namespace std;
int t;
string a,b;
bool check(string x,string y){
int m=x.size(),n=y.size();
if (abs(m-n)>1) return false;
if (m==n){
int tj=0;
for (int i=0;i<m;i++){
if (x[i]!=y[i]){
if (++tj>1) return false;
}
}
return tj<=1;
}
else{
string& s=(m<n)?x:y;
string& l=(m<n)?y:x;
int i=0,j=0,tj=0;
while (i<s.size() && j<l.size()){
if (s[i]!=l[j]){
if (++tj>1) return false;
j++;
}
else{
i++;
j++;
}
}
return true;
}
}
int main(){
cin>>t;
for (int i=1;i<=5;i++){
cin>>a>>b;
if (check(a,b)) cout<<"similar"<<endl;
else cout<<"not similar"<<endl;
}
return 0;
}
4.作业
【NOIPS2015A】神奇的幻方
【NOIPS2015A】神奇的幻方