zoukankan      html  css  js  c++  java
  • codeforces round #644 div3

    链接:https://codeforces.com/contest/1360

    A:

    假定a为长,b为宽,那么最小正方形的边长就是a和2b的最大值。

     1 #include <iostream>
     2 using namespace std;
     3 int main(void)
     4 {
     5     int t;
     6     cin>>t;
     7     while(t--)
     8     {
     9         int a,b;
    10         cin>>a>>b;
    11         if(a<b)
    12         {
    13             int temp=b;
    14             b=a;
    15             a=temp;
    16         }
    17         int k=max(a,2*b);
    18         cout<<k*k<<endl;
    19  
    20     }
    21     return 0;
    22 }

    B:

    容易知道所求为数组中两个数的最小差。

     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 int main(void)
     5 {
     6     int t;
     7     cin>>t;
     8     while(t--)
     9     {
    10         int n;
    11         int a[100];
    12         cin>>n;
    13         for(int i=1;i<=n;i++)cin>>a[i];
    14         sort(a+1,a+1+n);
    15         int minn=100000;
    16         for(int i=2;i<=n;i++)
    17         {
    18             if(a[i]-a[i-1]<minn)minn=a[i]-a[i-1];
    19         }
    20         cout<<minn<<endl;
    21     }
    22     return 0;
    23 }

    C:

    先将奇数和偶数分成两组,如果两组的个数都是偶数,那么输出YES;否则因为总个数为偶数,必然两组个数都为奇数。若存在相差1的数,那么将一个多的数加入到少的数中,输出YES;否则输出NO。

     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 int main(void)
     5 {
     6     int t;
     7     cin>>t;
     8     while(t--)
     9     {
    10         int n,a[1000],odd=0,even=0;
    11         cin>>n;
    12         for(int i=1;i<=n;i++)
    13         {
    14             cin>>a[i];
    15             if(a[i]%2)odd++;
    16             else even++;
    17         }
    18         if(odd%2==0&&even%2==0)
    19         {
    20             cout<<"YES"<<endl;
    21         }
    22         else
    23         {
    24             sort(a+1,a+1+n);
    25             int b=0;
    26             for(int i=2;i<=n;i++)
    27             {
    28                 if(a[i]-1==a[i-1])
    29                 {
    30                     cout<<"YES"<<endl;
    31                     b=1;
    32                     break;
    33                 }
    34             }
    35             if(b==0)cout<<"NO"<<endl;
    36         }
    37     }
    38     return 0;
    39 }

    D:

    暴力查找,时间复杂度√n.

     1 #include <iostream>
     2 #include <cmath>
     3 using namespace std;
     4 int t,n,k;
     5 int main(void)
     6 {
     7     cin>>t;
     8     while(t--)
     9     {
    10         cin>>n>>k;
    11         int ans=n;
    12         for(int i=1;i<=k&&i*i<=n;i++)
    13         {
    14             if(n%i==0)
    15             {
    16                 if(n/i<=k)
    17                 {
    18                     ans=i;
    19                     break;
    20                 }
    21                 ans=n/i;
    22             }
    23         }
    24         cout<<ans<<endl;
    25     }
    26     return 0;
    27 }

    E:

    查找除边界外所有的1,如果在它的右边或者下边没有1,则输出NO.

     1 #include <iostream>
     2 using namespace std;
     3 int t,n;
     4 char c[100][100];
     5 int main(void)
     6 {
     7     cin>>t;
     8     while(t--)
     9     {
    10         cin>>n;
    11         for(int i=0;i<n;i++)
    12         {
    13             cin>>c[i];
    14         }
    15         int b=0;
    16         for(int i=0;i<n-1;i++)
    17         {
    18             for(int j=0;j<n-1;j++)
    19             {
    20                 if(c[i][j]=='1'&&!(c[i+1][j]=='1'||c[i][j+1]=='1'))
    21                 {
    22                     cout<<"NO"<<endl;
    23                     b=1;
    24                     break;
    25                 }
    26             }
    27             if(b==1)break;
    28         }
    29         if(b==0)cout<<"YES"<<endl;
    30     }
    31     return 0;
    32 }

    F:

    (开始想着爆搜,但因为打开方式不对超时了。。)

    因为m比较小,可以对第一个字符串每一个位置的所有可能构造一遍,再对剩下字符串遍历是否符合要求,符合即输出;若不存在输出-1.

     1 #include <iostream>
     2 using namespace std;
     3 int t,n,m;
     4 char s[100][100];
     5 int check(char j)
     6 {
     7     int dif=0;
     8     for(int k=0;k<m;k++)if(s[1][k]!=s[j][k])dif++;
     9     return dif>1;
    10 }
    11 void solve()
    12 {
    13     cin>>n>>m;
    14     for(int i=1;i<=n;i++)cin>>s[i];
    15     for(int i=0;i<m;i++)
    16     {
    17         char c=s[1][i];
    18         for(int j=0;j<26;j++)
    19         {
    20             int b=0;
    21             s[1][i]='a'+j;
    22             for(int k=2;k<=n;k++)
    23             {
    24                 if(check(k))
    25                 {
    26                     b=1;
    27                     break;
    28                 }
    29             }
    30             if(b==0)
    31             {
    32                 cout<<s[1]<<endl;
    33                 return;
    34             }
    35         }
    36         s[1][i]=c;
    37     }
    38     cout<<"-1"<<endl;
    39 }
    40 int main(void)
    41 {
    42     cin>>t;
    43     while(t--)
    44     {
    45         solve();
    46     }
    47     return 0;
    48 }

    G:

    若n*a!=m*b,输出NO;否则构造即可。

     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 int t,n,m,a,b;
     5 char c[100][100];
     6 int main(void)
     7 {
     8     cin>>t;
     9     while(t--)
    10     {
    11         cin>>n>>m>>a>>b;
    12         if(n*a!=m*b)
    13         {
    14             cout<<"NO"<<endl;
    15             continue;
    16         }
    17         memset(c,'0',sizeof(c));
    18         int j=0;
    19         for(int i=0;i<n;i++)
    20         {
    21             for(int k=a;k>0;k--)
    22             {
    23                 c[i][j]='1';
    24                 j++;
    25                 j%=m;
    26             }
    27         }
    28         cout<<"YES"<<endl;
    29         for(int i=0;i<n;i++)
    30         {
    31             for(int j=0;j<m;j++)cout<<c[i][j];
    32             cout<<endl;
    33         }
    34     }
    35     return 0;
    36 }

    H:

    待补题。。

  • 相关阅读:
    定时机制
    选择排序
    二分插入排序
    无名管道pipe
    Makefile
    Python下划线与命名规范
    Django IDE 开发环境的搭建
    Apache如何添加虚拟目录
    在Eclipse下如何安装插件
    Python的模块、包等概念的理解
  • 原文地址:https://www.cnblogs.com/yanying7/p/12958230.html
Copyright © 2011-2022 走看看