模拟(入门)

Posted berserker-slst

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟(入门)相关的知识,希望对你有一定的参考价值。

基础不多但常用,也由于常用所以不多扯。接下来就是一种好玩的..。

模拟

  模拟就像是我们常做的情景应用题,题目给你一个情景但不给具体数据,而让你用代码来实现给定范围内的的变量计算。大体就是这样,一般学过的人都清楚,这里就不多加赘述。下面上题(由于是模拟入门so...例题均为入门题):

eg1:p1046 陶陶摘苹果

技术图片

技术图片

  此题给定数据个数及范围,所以在定义上是十分简单的。用for进行数据记录,if进行条件判定若苹果高度小于(陶陶高度+凳子高度)那么结果加一。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int a[11],x,s,j;
 5 
 6 int main()
 7 {
 8     for(int i=1;i<=10;i++)
 9         cin>>a[i];
10     cin>>j;
11     for(int i=1;i<=10;i++)
12             if(a[i]<=j+30)
13                 s++;
14     cout<<s;
15     return 0;
16 }

eg2:P1059 明明的随机数

 技术图片

技术图片

  其实此题放在这不太恰当,因为此题表面上是情景模拟,但实际上是排序的底子。

  已知输入的数在1~1000范围内,那么我们可以定义一个数组(初始值为0),用输入的数为下标,数值加一(“去重”的关键);由于需要从小到大排序,所以用for把1~1000都过一遍(枚举),判断每个数组的数值是否为0,不为0,那么输出下标,为0就继续循环,由于从小到大循环输出所以也完成了排序。其实这也是桶排序的思想。 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int a[1001],n,k,x[101];
 5 
 6 int main()
 7 {
 8     int j=0;
 9     cin>>n;
10     for(int i=1;i<=n;i++)
11     {
12         cin>>k;
13         a[k]++;
14     } 
15     for(int i=1;i<=1000;i++)
16         if(a[i]>0)
17         {
18             j++;
19             x[j]=i;
20             n--;
21         }
22     cout<<j<<endl;
23     for(int l=1;l<=j;l++)
24         cout<<x[l]<<" ";
25     return 0;
26  }

eg3:p1634 禽兽的传染病

  题目很短

技术图片

技术图片

  看到这题是不是很easy?然后...

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int x,n,s;
 5 
 6 int main()
 7 {
 8     cin>>x>>n;
 9     s=1;
10     for(int i=1;i<=n;i++)
11         s=s+s*x;
12     cout<<s;
13     return 0; 
14 }

  如果你是这样做的那么恭喜你在洛谷上的得分为30分(不要问我为什么~~~因为开始我这就是这样!!)(莫名伤心)

  开始天真的我以为没毛病,又交了好几遍~~~然后...wa声一片;后来才发现原来——

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 long long x,n,s;
 5 
 6 int main()
 7 {
 8     cin>>x>>n;
 9     s=1;
10     for(int i=1;i<=n;i++)
11         s=s+s*x;
12     cout<<s;
13     return 0; 
14 }

  是我定义的小了,它被爆了。(唉!!!这个答案让我哭笑不得)

eg4:p1567统计天数

技术图片

技术图片

  看到它我的想法还是很多的,不过CE了,有修改了一番

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 long long n,a[10001],b[1000001],s;
 5 
 6 int main()
 7 {
 8     cin>>n;
 9     int k=1;
10     for(int i=1;i<=n;i++)
11     {
12         cin>>b[i];
13         if(b[i]>b[i-1])
14                 k++,a[i]=k;
15         else k=1,a[i]=k;
16     }
17     for(int i=1;i<=n;i++)
18         s=max(a[i],s);    
19     cout<<s;
20     return 0;
21 }

 注:题目出自洛谷https://www.luogu.org/

 

以上是关于模拟(入门)的主要内容,如果未能解决你的问题,请参考以下文章

Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)

Cg入门19:Fragment shader - 片段级模型动态变色

Cg入门16:Fragment shader - 片段级光照

iOS Swift 中的 Android 片段模拟

php 在终端中模拟一点加载字符的片段

当我想模拟数据并测试 UI 片段时,doNothing() 不起作用