【csp】2018-3
阿新 • • 發佈:2018-09-08
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 10View Code#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 }
第二題 小球碰撞
題目:
題意:撞到墻壁或者兩球相撞都要改變方向,問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