4 条题解

  • 0
    @ 2024-1-7 14:36:51

    暴力

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define endl '\n'
    void solve();
    
    int main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	int t=1;
    //	cin>>t;
    	while(t--){
    		solve();
    	}
    	return 0;
    }
    
    void solve(){
    	int n;
    	cin>>n;
    	vector<vector<int>> co(n+1,vector<int>(256));
    	vector<int>a(n+1);
    	string s;
    	for(int i=1;i<=n;i++){
    		cin>>s;
    		a[i]=s.size();
    		for(auto c:s)
    			co[i][c]++;
    	}
    	ll ans=0;
    	for(int i=1;i<=n;i++){
    		for(int j=i+1;j<=n;j++){
    			bool f=1;
    			for(int k='a';k<='z';k++){
    				if(co[i][k]&&co[j][k])
    					f=0;
    			}
    			if(f)
    				ans=max(ans,1ll*a[i]*a[j]);
    		}
    	}
    	cout<<ans<<endl;
    	
    }
    
    • 0
      @ 2024-1-7 13:30:04

      暴力枚举

      import java.util.Arrays;
      import java.util.Scanner;
      
      public class Main {
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              int n = sc.nextInt();
              int[][] arr = new int[n][27];
      
              for (int i = 0; i < arr.length; i++) {
                  String str = sc.next();
                  arr[i][26] = str.length();
                  for (int j = 0; j < str.length(); j++) {
                      arr[i][str.charAt(j) - 'a']++;
                  }
              }
              int ans = 0;
              Arrays.sort(arr, (o1, o2) -> (o2.length - o1.length));
              for (int i = 0; i < arr.length; i++) {
                  int j = i + 1;
                  for (; j < arr.length; j++) {
                      if(!cal(arr[i], arr[j])){
                          ans = Math.max(ans, arr[i][26] * arr[j][26]);
                      }
                  }
              }
              System.out.println(ans);
          }
          public static boolean cal(int[] a, int[] b){
              for (int i = 0; i < 26; i++) {
                  if(a[i] > 0 && b[i] > 0) return true;
              }
              return false;
          }
      }
      
      
      • 0
        @ 2024-1-7 13:29:14
        import java.util.*;
        
        public class Main {
            public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                int n = sc.nextInt();
                int[] a = new int[n];
                int[] b = new int[n];
                // 遍历数组a
                for (int i = 0; i < n; i++) {
                    String word = sc.next();
                    b[i] = word.length();
                    // 遍历字符串
                    for (int j = 0; j < word.length(); j++) {
                        int c = word.charAt(j) - 'a';
                        a[i] |= 1 << c;
                    }
                }
                int num = 0;
                for (int i = 0; i < a.length; i++) {
                    for (int j = i; j < a.length; j++) {
                        if ((a[i] & a[j]) == 0) {
                            num = Math.max(num, b[i] * b[j]);
                        }
                    }
                }
                System.out.println(num);
            }
        }
        
        • 0
          @ 2024-1-7 13:23:35

          用二进制的位来表示字母

          #include <iostream>
          #include <vector>
          #include <string>
          #include <algorithm>
          using namespace std;
          
          int main() {
          // 注意:在C++中,主函数必须返回一个int类型
          int n;
          cin >> n;
          vector<int> a(n), b(n);
          for (int i = 0; i < n; i++) {
          string word;
          cin >> word;
          b[i] = word.length();
          for (char c : word) {
          a[i] |= 1 << (c - 'a');
          }
          }
          int num = 0;
          for (int i = 0; i < a.size(); i++) {
          for (int j = i; j < a.size(); j++) {
          if ((a[i] & a[j]) == 0) {
          num = max(num, b[i] * b[j]);
          }
          }
          }
          cout << num << endl;
          return 0;
          }
          
          
          
          • 1

          信息

          ID
          590
          时间
          1000ms
          内存
          256MiB
          难度
          6
          标签
          (无)
          递交数
          116
          已通过
          34
          上传者