AtCoder Beginner Contest 069

AtCoder Beginner Contest 069

比赛链接:https://abc069.contest.atcoder.jp/

A题题解:水题,N*M划出来的方块是(N-1)*(M-1)。

AC代码:

1 #include<iostream>
2 using namespace std;
3 int n,m;
4 int main()
5 {
6     cin>>n>>m;
7     cout<<(n-1)*(m-1)<<endl;
8     return 0;
9 }

B题题解:用length计算字符串S长度N,输出S[0],N-2,S[N-1]即可。

AC代码:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 string s;
 5 int main()
 6 {
 7     cin>>s;
 8     int n = s.length();
 9     cout<<s[0]<<n-2<<s[n-1]<<endl;
10     return 0;
11 }

C题题解:如果是4的倍数,正好可以放在两个数的中间,那么最大能放的数就是4的倍数的数*2+1,其中特殊的情况为不是4的倍数却是2的倍数的数有两个及两个以上是可以放在两个4的倍数的数的中间。

AC代码:

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 const int maxn = 500005;
 5 int a[maxn];
 6 int n,sum1,sum2;
 7 int main()
 8 {
 9     cin>>n;
10     for(int i=1;i<=n;i++)
11     {
12         cin>>a[i];
13         if(a[i]%4==0)sum1++;
14         else if(a[i]%4==2)sum2++;
15     }
16     if(sum2>1)
17     {
18         int ans=sum2+sum1*2;
19         if(ans>=n)cout<<"Yes"<<endl;
20         else cout<<"No"<<endl;
21     }
22     else
23     {
24         int ans = sum1*2;
25         if(sum1)ans++;
26         if(ans>=n)cout<<"Yes"<<endl;
27         else cout<<"No"<<endl;
28     }
29     return 0;
30 }

D题题解:找出任意一组解即可,那么从第一种颜色开始画到最后一种颜色,奇数行往右画,偶数行往左画即可。

AC代码:

 1 #include<iostream>
 2 using namespace std;
 3 const int maxn = 107;
 4 int a[maxn*maxn];
 5 int d[maxn][maxn];
 6 int n,m,c;
 7 int main()
 8 {
 9     cin>>n>>m>>c;
10     for(int i=1;i<=c;i++)cin>>a[i];
11     int k = 1;
12     for(int i=1;i<=n;i++)
13     {
14         for(int j=1;j<=m;j++)
15         {
16             if(i&1)
17             {
18                 if(a[k]>0)
19                 {
20                     d[i][j]=k;
21                     a[k]--;
22                     if(a[k]==0)k++;
23                 }
24             }
25             else
26             {
27                 if(a[k]>0)
28                 {
29                     d[i][m-j+1]=k;
30                     a[k]--;
31                     if(a[k]==0)k++;
32                 }
33             }
34         }
35     }
36     for(int i=1;i<=n;i++)
37     {
38         for(int j=1;j<=m;j++)
39         {
40             cout<<d[i][j]<<" ";
41         }
42         cout<<endl;
43     }
44 }

 

posted @ 2017-12-22 01:46  sortmin  阅读(144)  评论(0编辑  收藏  举报