A Majestic 10

 1.题意

  给定三个数,判断有几个数不小于10。

 2.题解

  逐个判断,记录不小于10的数字的数量。

 3.代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n;
 4 int main(){
 5     cin>>n;
 6     while(n--){
 7         int x,sum=0;
 8         for(int i=1;i<=3;i++){
 9             cin>>x;
10             if(x>=10)
11                 sum++;
12             cout<<x;
13             if(i!=3)
14                 cout<<' '; 
15         }
16         cout<<'\n';
17         if(sum==0)
18             cout<<"zilch";
19         else if(sum==1)
20             cout<<"double";
21         else if(sum==2)
22             cout<<"double-double";
23         else
24             cout<<"triple-double";
25         cout<<'\n'<<'\n';
26     }
27     
28     return 0;
29 }

 

 

B SSPhoneme Palindrome

 1.题意

  判断回文字符串,但题目给定了n对可以相互替换的字母。

 2.题解

  把可以替换的字母全变成一致的一个字母,再判断回文串。

 3.代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int t;
 4 bool pal(string s){
 5     for(int i=0,j=s.size()-1;i<j;i++,j--){
 6         if(s[i]!=s[j])
 7             return false;
 8     }
 9     return true;
10 }
11 int main(){
12     cin>>t;
13     for(int q=1;q<=t;q++){
14         cout<<"Test case #"<<q<<':'<<endl;
15         int n;
16         cin>>n;
17         char a[15],b[15];
18         for(int i=0;i<n;i++){
19             cin>>a[i];
20             getchar();
21             cin>>b[i];
22         } 
23         int k;
24         cin>>k;
25         while(k--){
26             string s;
27             cin>>s;
28             cout<<s<<' ';
29             for(int i=0;i<s.size();i++){
30                 for(int j=0;j<n;j++){
31                     if(s[i]==a[j]){
32                         s[i]=b[j];
33                         break;
34                     }                 
35                 }
36             }
37             if(pal(s))
38                 cout<<"YES"<<endl;
39             else
40                 cout<<"NO"<<endl;
41         }
42         cout<<'\n';
43     }
44     
45     return 0;
46 }

 

Don’t Break the Ice

 1.题意

  给定一个方阵,移动会使这一步所在的行和列“击碎”,如果在这之前,这一步的行和列都已经被“击碎”,就认定这一步为无效的。

 2.题解

  分别用两个一维数组储存行和列的状态。

 3.代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int t;
 4 int main(){
 5     cin>>t;
 6     for(int q=1;q<=t;q++){
 7         cout<<"Strategy #"<<q<<':'<<' ';
 8         int size,n,sum=0;
 9         cin>>size>>n;
10         int a[100]={0},b[100]={0};
11         while(n--){
12             int x,y;
13             cin>>x>>y;
14             if(a[x]==1&&b[y]==1)
15                 sum++;
16             a[x]=1,b[y]=1;
17         } 
18         cout<<sum<<endl;
19         cout<<'\n';
20     }
21     
22     return 0;
23 }

 

D Wildest Dreams

 1.题意

  给定一张专辑,女儿喜欢其中的一首,当女儿在车里时,重复播放她喜欢的那首,当她离开后,顺序播放下一首。计算父亲听女儿喜欢的那首歌的总时间,奇数段为女儿待在车里的时间。

 2.题解

  模拟。

 3.代码

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 ll t;
 5 int main(){
 6     cin>>t;
 7     for(ll q=1;q<=t;q++){
 8         cout<<"CD #"<<q<<':'<<endl;
 9         ll n,x;
10         cin>>n>>x;
11         ll len[30];
12         ll  sum=0;
13         for(ll i=1;i<=n;i++){
14             cin>>len[i];
15             sum+=len[i]; 
16         }
17         ll day;
18         cin>>day;
19         for(ll i=1;i<=day;i++){
20             ll k;
21             cin>>k;
22             ll ans=0;
23             ll rem=0;
24             for(ll j=1;j<=k;j++){
25                 ll time;
26                 cin>>time;
27                 if(time==0)
28                     continue;
29                 if(j%2==1){
30                     rem=0;
31                     if(time==len[x])
32                         ans+=time;
33                     else if(time<len[x]){
34                         ans+=time;
35                         rem=len[x]-time;
36                     }
37                     else{
38                         ans+=time;
39                         rem=len[x]-(time%len[x]);
40                     }
41                 }
42                 else{
43                     if(time<=rem){
44                         ans+=time;
45                     }
46                     else{
47                         ans+=rem;
48                         time-=rem;
49                         ll w=0,e=0;
50                         w=time/sum;
51                         e=time%sum;
52                         ans+=(w*len[x]);
53                         if(e>sum-len[x])
54                             ans+=(e-(sum-len[x]));
55                     }
56                 }
57             }
58             cout<<ans<<endl;
59         }
60         cout<<'\n';
61     }
62     
63     return 0;
64 }

 

posted on 2020-03-30 16:10  吕瓜皮  阅读(223)  评论(0编辑  收藏  举报