• 模拟题


    模拟。顾名思义,就是用计算机来模拟题目中要求的操作,比如 NOIP 2014 的 生活大爆炸版石头剪刀布 ,只需要按照题面的意思来写就可以了。

    当然,模拟并不总是很好写,参见经典题目 魔兽世界 和 猪国杀 。

    模拟题目通常具有码量大、操作多、思路繁复的特点。并且由于它码量大,会导致很难查错,如果在考试中写错是相当浪费时间的。

    所以写模拟题,遵循以下的建议有可能会帮助你提升做题速度:

    1. 在动手写代码之前,在草纸上尽可能地写好要实现的流程;
    2. 在代码中,尽量把每个部分模块化、写成函数、结构体或类;
    3. 对于一些可能重复用到的概念,可以统一转化,方便处理:如,某题给你 "YY-MM-DD 时:分" 把它扔到一个函数处理成秒,会减少概念混淆;
    4. 调试时分块调试,模块化的好处就是可以方便的单独调某一部分;
    5. 写代码的时候一定要思路清晰,不要想到什么写什么,要按照落在纸上的步骤写。

    实际上,上述步骤在解决其它类型的题目时也是很有帮助的。

    一、倒序模拟
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    解题代码:

    #include<iostream>
    #include<math.h>
    using namespace std;
    
    int main()
    {
        int t,i=0;
        long long m;
        cin>>t>>m;    //操作次数和最终的数
        long long opt[t],x[t];
        for(i=0;i<t;i++){//用数组依次记录opt[i]与x[i] 
            cin>>opt[i]>>x[i];
        }
        for(i=t-1;i>=0;i--){//倒叙模拟
            switch(opt[i])
            {
                case 1:m=m-x[i];break;
                case 2:m=m+x[i];break;
                case 3:m=m/x[i];break;
                case 4:m=m*x[i];break;
                default : break; 
            }        
        }
        cout<<m<<endl; 
        return 0;
     } 

    解题思路:注意运用数组思想进行每轮数据的依次存储,不要与模拟手算混淆。

  • 相关阅读:
    Codeforces Round #375 (Div. 2)
    ACM之路(19)—— 主席树初探
    CodeForces 722D Generating Sets
    CodeForces 721D Maxim and Array
    心情--2014区域赛
    【N-Quens II】cpp
    【N-Queens】cpp
    【Unique Paths II】cpp
    【Unique Paths】cpp
    【Palindrome Partitioning】cpp
  • 原文地址:https://www.cnblogs.com/h694879357/p/13337268.html
Copyright © 2020-2023  润新知