1. 程式人生 > >【csp】2018-3

【csp】2018-3

oid 題意 cstring string display fine color sum event

第一題 跳一跳

題目:

技術分享圖片

題意:淺顯。qwq

題解:2計數+1,到1就清空計數。

代碼:

技術分享圖片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<queue>
 6 #include<stack>
 7 #include<cstring>
 8 using namespace std;
 9 #define ll long long 
10
#define INF 0x3f3f3f3f 11 const int maxn = 1000+10; 12 13 int main(){ 14 int cnt = 1; 15 int sum = 0; 16 int n; 17 while(cin>>n && n){ 18 if(n == 2){ 19 sum += n * cnt; 20 cnt++; 21 //cout<<sum<<endl; 22 }
23 else{ 24 cnt = 1; 25 sum += 1; 26 //cout<<sum<<endl; 27 } 28 29 } 30 cout<<sum<<endl; 31 return 0; 32 }
View Code


第二題 小球碰撞

題目:

技術分享圖片

技術分享圖片

技術分享圖片

題意:撞到墻壁或者兩球相撞都要改變方向,問t秒後各個球的位置。

題解:暴力,模擬。考慮邊界。

代碼:

技術分享圖片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<queue>
 6 #include<stack>
 7 #include<cstring>
 8 using namespace std;
 9 #define ll long long 
10 const int maxn = 100+10;
11 
12 int n,L,t;
13 int a[maxn];
14 int flag[maxn];
15 
16 void print(){
17     for(int i = 1; i <= n ; i++){
18         cout<<a[i]<<" ";
19     }
20     cout<<endl;
21 }
22 
23 int main(){
24     
25     cin>>n>>L>>t;
26     for(int i = 1 ; i <= n ;i++){
27         cin>>a[i];
28         flag[i] = 1;    //初始右
29     }
30 
31     for(int i = 1 ; i <= t; i++){
32         for(int j = 1 ; j <= n ; j++){
33             a[j] += flag[j];
34             if(a[j] == 0 || a[j] == L){
35                 flag[j] = -flag[j];
36             }
37             for(int k = 1; k <= n ;k++){
38                 if(a[j] == a[k] && j != k){
39                     flag[j] = -flag[j];
40                     flag[k] = -flag[k];
41                 }                
42             }
43         } 
44         //print();
45     }
46     print();
47     return 0;
48 }
View Code

【csp】2018-3