第一章 模拟

1.概念

  • 模拟就是用计算机来模拟题目中要求的操作
  • 建模就是把事物进行抽象,根据实际问题来建立对应的数:学模型。
  • 如果把实际问题建模成数学问题,就会大大地方便计算机来“理解”“解决”

2.常见题型

  1. 基本操作模拟:理解题目操作步骤,用代码准确实现。
  2. 简单场景模拟:以简单生活或游戏场景为背景,依地图信息和规则,模拟角色移动、探索等行为。
  3. 复杂系统模拟:模拟复杂系统或机制,如乘车购票,考虑因素相互影响,设计数据结构与算法实现。
  4. 算法结合模拟:将模拟与数学思维(找规律、快速幂、快排等)等高级算法结合考查。

3.例题

【GESP202403四级T1】相似字符串

【GESP202403四级T1】相似字符串

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int t;
  4. string a,b;
  5. bool check(string x,string y){
  6. int m=x.size(),n=y.size();
  7. if (abs(m-n)>1) return false;
  8. if (m==n){
  9. int tj=0;
  10. for (int i=0;i<m;i++){
  11. if (x[i]!=y[i]){
  12. if (++tj>1) return false;
  13. }
  14. }
  15. return tj<=1;
  16. }
  17. else{
  18. string& s=(m<n)?x:y;
  19. string& l=(m<n)?y:x;
  20. int i=0,j=0,tj=0;
  21. while (i<s.size() && j<l.size()){
  22. if (s[i]!=l[j]){
  23. if (++tj>1) return false;
  24. j++;
  25. }
  26. else{
  27. i++;
  28. j++;
  29. }
  30. }
  31. return true;
  32. }
  33. }
  34. int main(){
  35. cin>>t;
  36. for (int i=1;i<=5;i++){
  37. cin>>a>>b;
  38. if (check(a,b)) cout<<"similar"<<endl;
  39. else cout<<"not similar"<<endl;
  40. }
  41. return 0;
  42. }

4.作业

【NOIPS2015A】神奇的幻方

【NOIPS2015A】神奇的幻方