zoukankan      html  css  js  c++  java
  • AIM Tech Round 4 (Div. 2)

    A题

    分析:暴力

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "string"
     5 using namespace std;
     6 const int maxn=100+10;
     7 int vis[maxn],n;
     8 string s;
     9 int main()
    10 {
    11     cin>>s;
    12     cin>>n;
    13     int len=s.length();
    14     for(int i=0;i<len;i++){
    15         vis[s[i]-'a']++;
    16     }
    17     if(len<n){
    18         cout<<"impossible"<<endl;
    19     }else{
    20         int num=0;
    21         for(int i=0;i<30;i++){
    22             if(vis[i])
    23                 num++;
    24         }
    25         if(num>=n)
    26             cout<<"0"<<endl;
    27         else
    28             cout<<(n-num)<<endl;
    29     }
    30     return 0;
    31 }
    View Code

    B题

    分析:求不同set的个数,同一个set的元素必须相同,而且是同一行,同一列的。所以对每行,每列,求有多少个0,多少个1,然后集合个数位(2^k-1),最后所有的单个元素都被算了两次,所以最后结果在减去n*m

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "string"
     5 #include "vector"
     6 #include "cmath"
     7 using namespace std;
     8 const int maxn=100+10;
     9 int n,m;
    10 int a[maxn][maxn];
    11 struct Node
    12 {
    13     int zero,one;
    14 };
    15 vector<Node>p;
    16 int main()
    17 {
    18     cin>>n>>m;
    19     for(int i=1;i<=n;i++)
    20         for(int j=1;j<=m;j++)
    21             cin>>a[i][j];
    22     for(int i=1;i<=n;i++){
    23         int num0=0,num1=0;
    24         for(int j=1;j<=m;j++){
    25             if(a[i][j]==1)
    26                 num1++;
    27             else
    28                 num0++;
    29         }
    30         Node e;
    31         e.zero=num0,e.one=num1;
    32         p.push_back(e);
    33     }
    34     for(int j=1;j<=m;j++){
    35         int num0=0,num1=0;
    36         for(int i=1;i<=n;i++){
    37             if(a[i][j]==1)
    38                 num1++;
    39             else
    40                 num0++;
    41         }
    42         Node r;
    43         r.zero=num0,r.one=num1;
    44         p.push_back(r);
    45     }
    46     long long res=0;
    47     for(int i=0;i<p.size();i++){
    48         res+=(long long)pow(2,p[i].zero)-(long long)1;
    49         res+=(long long)pow(2,p[i].one)-(long long)1;
    50     }
    51     res-=(n*m);
    52     cout<<res<<endl;
    53     return 0;
    54 }
    View Code
  • 相关阅读:
    arrow
    简单库函数
    计算机视觉从入门到放肆
    合并排序算法
    React应用数据传递的方式
    发布一个npm package
    绝对路径/相对路径/根路径
    常见的数据处理方法
    从设计稿到实现React应用(分类数据处理)
    提高React组件的复用性
  • 原文地址:https://www.cnblogs.com/wolf940509/p/7523375.html
Copyright © 2011-2022 走看看