基礎不多但常用,也由於常用所以不多扯。接下來就是一種好玩的..。 模擬 模擬就像是我們常做的情景應用題,題目給你一個情景但不給具體數據,而讓你用代碼來實現給定範圍內的的變數計算。大體就是這樣,一般學過的人都清楚,這裡就不多加贅述。下麵上題(由於是模擬入門so...例題均為入門題): eg1:p104 ...
基礎不多但常用,也由於常用所以不多扯。接下來就是一種好玩的..。
模擬
模擬就像是我們常做的情景應用題,題目給你一個情景但不給具體數據,而讓你用代碼來實現給定範圍內的的變數計算。大體就是這樣,一般學過的人都清楚,這裡就不多加贅述。下麵上題(由於是模擬入門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/