Untitled

 avatar
unknown
java
4 years ago
8.0 kB
26
Indexable
//A


import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Solution {

    static long n1(long[][] dp, int[][] a, int pos, int n, int b) {
        if (n <= pos) {
            return 0;
        }
        if (dp[pos][b] != -1) {
            return dp[pos][b];
        }
        long sum1 = 0;
        if (b == 1) {
            sum1 = n1(dp, a, pos + 1, n, 0) + a[0][pos];
        }
        long sum2 = n1(dp, a, pos + 1, n, 1);
        return dp[pos][b] = Math.max(sum1, sum2);
    }

    static long n2(long[][] dp, int[][] arra, int[][] a, int pos, int n, int b) {
        if (n <= pos) {
            return 0;
        }
        long sum1 = 0;
        long sum2 = 0;
        long sum3 = 0;
        if (dp[pos][b] != -1) {
            return dp[pos][b];
        }
        if (b != a[pos][0]) {
            sum1 = n2(dp, arra, a, pos + 1, n, a[pos][0]) + arra[a[pos][0]][pos];
        }
        if (b != a[pos][1]) {
            sum2 = n2(dp, arra, a, pos + 1, n, a[pos][1]) + arra[a[pos][1]][pos];
        }
        if (b != a[pos][2]) {
            sum3 = n2(dp, arra, a, pos + 1, n, a[pos][2]) + arra[a[pos][2]][pos];
        }

        return dp[pos][b] = Math.max(sum1, Math.max(sum2, sum3));
    }

    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int m = scan.nextInt();
        int[][] a = new int[n + 1][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                a[i][j] = scan.nextInt();
            }
        }
        a[n][m - 1] = 0;
        if (n == 1) {
            long[][] dp = new long[m + 10][2];
            for (int i = 0; i < m + 10; i++) {
                for (int j = 0; j < 2; j++) {
                    dp[i][j] = -1;
                }
            }
            long on = n1(dp, a, 0, m, 1);
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < 2; j++) {
                    dp[i][j] = -1;
                }
            }
            long tw = n1(dp, a, 0, m, 0);
            System.out.println(Math.max(on, tw));
            return;
        }
        int[][] f = new int[m][3];
        for (int i = 0; i < m; i++) {
            ArrayList<Integer> ar = new ArrayList<Integer>();
            for (int j = 0; j < n; j++) {
                ar.add(a[j][i]);
            }
            Collections.sort(ar);
            int fx = n;
            int fl = n;
            int pl = n;
            int x = ar.get(ar.size() - 1);
            int y = ar.get(ar.size() - 2);
            int z = 0;
            boolean xb = true;
            boolean yb = true;
            boolean zb = true;
            if (n > 2) {
                z = ar.get(ar.size() - 3);
            }
            for (int j = 0; j < n; j++) {
              
                if (x == a[j][i] && xb) {
                    fx = j;
                    xb = false;
                }
                if (y == a[j][i] && j != fx && yb) {
                    fl = j;
                    yb = false;
                }
                if (n > 2) {
                    if (z == a[j][i] && j != fx && j != fl && zb) {
                        pl = j;
                        zb = false;
                    }
                }
            }
            f[i][0] = fx;
            f[i][1] = fl;
            f[i][2] = pl;
        }
        long[][] dp = new long[m + 10][n + 10];
        for (int i = 0; i < m + 10; i++) {
            for (int j = 0; j < n + 10; j++) {
                dp[i][j] = -1;
            }
        }
        long on = n2(dp, a, f, 0, m, f[0][1]);
        for (int i = 0; i < m + 10; i++) {
            for (int j = 0; j < n + 10; j++) {
                dp[i][j] = -1;
            }
        }
        long tw = n2(dp, a, f, 0, m, f[0][0]);

        System.out.println(Math.max(on, tw));

    }
}





//C

import java.util.Scanner;

public class Solution {

    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);
        String s = scan.next();
        int[] a = new int[26];
        for (int i = 0; i < s.length(); i++) {
            ++a[s.charAt(i) - 'A'];
        }
        for (int i = 0; i < 26; i++) {
            if (a[i] >= 2) {
                System.out.println("NO");
                return ;
            }
        }
        System.out.println("YES");
    }
}




//D


import java.util.ArrayList;
import java.util.Scanner;

public class Solution {

    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);
        String s = scan.next();
        int n = scan.nextInt();
        char[] a = {'l', 'j', '!'};
        char[] b = {'a', '@', 'O', 'o', 'D', '0', 'e'};
        char[] c = {'s', 'S', '5', '2'};
        char[] d = {'1', 'i', '?'};
        ArrayList<Integer> ar = new ArrayList<Integer>();
        k:
        for (int i = 0; i < n; i++) {
            String in = scan.next();
            int e = 0;
            for (int j = 0; j < Math.min(in.length(), s.length()); j++) {
                if (s.charAt(j) != in.charAt(j)) {
                    int tr = 0;
                    for (int k = 0; k < a.length; k++) {
                        if (s.charAt(j) == a[k]) {
                            for (int l = 0; l < a.length; l++) {
                                if (in.charAt(j) == a[l]) {
                                    tr = 1;
                                }
                            }
                        }
                    }

                    for (int k = 0; k < b.length; k++) {
                        if (s.charAt(j) == b[k]) {
                            for (int l = 0; l < b.length; l++) {
                                if (in.charAt(j) == b[l]) {
                                    tr = 1;
                                }
                            }
                        }
                    }

                    for (int k = 0; k < c.length; k++) {
                        if (s.charAt(j) == c[k]) {
                            for (int l = 0; l < c.length; l++) {
                                if (in.charAt(j) == c[l]) {
                                    tr = 1;
                                }
                            }
                        }
                    }

                    for (int k = 0; k < d.length; k++) {
                        if (s.charAt(j) == d[k]) {
                            for (int l = 0; l < d.length; l++) {
                                if (in.charAt(j) == d[l]) {
                                    tr = 1;
                                }
                            }
                        }
                    }
                    if (tr == 0) {
                        ++e;
                    }
                }

            }
            if (e == 0 && s.length() == in.length()) {
                ar.add(i + 1);
            }
        }
        System.out.println(ar.size());
        for (int i = 0; i < ar.size(); i++) {
            System.out.print(ar.get(i) + " ");
        }
        System.out.println();
    }
}



//E

import java.util.Scanner;

public class Solution {

    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);
        String s = scan.next().toLowerCase();
        int c = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == 'a' || s.charAt(i) == 'e' || s.charAt(i) == 'i' || s.charAt(i) == 'o' || s.charAt(i) == 'u') {
                ++c;
            }
        }
        if (c > 2) {
            System.out.println("YES");
        } else {
            System.out.println("NO");
        }
    }
}


//F

import java.util.ArrayList;
import java.util.Scanner;

public class Solution {

    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);
        int t = scan.nextInt();
        while (t-- > 0) {
            long n = scan.nextInt();
            long res = (n * (n + 1)) / 2;
            System.out.println(res);
        }
    }
}
Editor is loading...