Untitled
unknown
java
4 years ago
8.0 kB
27
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...