Skip to content

Commit 9226523

Browse files
committed
update
1 parent 22bf269 commit 9226523

7 files changed

+205
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Time: 296 ms
2+
// Memory: 600 KB
3+
// .
4+
// T:O(sum(ni)), S:O(1)
5+
//
6+
import java.util.Scanner;
7+
8+
public class Codeforces_2025A_Two_Screens {
9+
public static void main(String[] args) {
10+
Scanner sc = new Scanner(System.in);
11+
int q = sc.nextInt();
12+
for (int i = 0; i < q; i++) {
13+
String s = sc.next(), t = sc.next();
14+
int commonPrefix = 0;
15+
for (int j = 0; j < Math.min(s.length(), t.length()); j++) {
16+
if (s.charAt(j) == t.charAt(j)) {
17+
commonPrefix++;
18+
} else {
19+
break;
20+
}
21+
}
22+
23+
System.out.println(commonPrefix == 0 ? (s.length() + t.length()) : (s.length() + t.length() - commonPrefix + 1));
24+
}
25+
}
26+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Time: 499 ms
2+
// Memory: 700 KB
3+
// Geometry.
4+
// T:O(sum(ni)), S:O(1)
5+
//
6+
import java.util.Scanner;
7+
8+
public class Codeforces_2056A_Shape_Perimeter {
9+
public static void main(String[] args) {
10+
Scanner sc = new Scanner(System.in);
11+
int t = sc.nextInt();
12+
for (int i = 0; i < t; i++) {
13+
int n = sc.nextInt(), m = sc.nextInt(), ret = 0;
14+
for (int j = 0; j < n; j++) {
15+
int x = sc.nextInt(), y = sc.nextInt();
16+
if (j == 0) {
17+
ret += 4 * m;
18+
} else {
19+
ret += 4 * m;
20+
if (x <= m && y <= m) {
21+
ret -= 2 * (m - x) + 2 * (m - y);
22+
}
23+
}
24+
}
25+
26+
System.out.println(ret);
27+
}
28+
}
29+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Time: 780 ms
2+
// Memory: 16400 KB
3+
// .
4+
// T:O(sum(ni)), S:O(max(ni))
5+
//
6+
import java.util.HashMap;
7+
import java.util.Scanner;
8+
9+
public class Codeforces_2060C_Game_of_Mathletes {
10+
public static void main(String[] args) {
11+
Scanner sc = new Scanner(System.in);
12+
int t = sc.nextInt();
13+
for (int i = 0; i < t; i++) {
14+
int n = sc.nextInt(), k = sc.nextInt(), ret = 0;
15+
HashMap<Integer, Integer> record = new HashMap<>();
16+
for (int j = 0; j < n; j++) {
17+
record.merge(sc.nextInt(), 1, Integer::sum);
18+
}
19+
for (int key : record.keySet()) {
20+
if (key >= k) {
21+
continue;
22+
}
23+
if (record.containsKey(k - key)) {
24+
ret += Math.min(record.get(key), record.get(k - key));
25+
}
26+
}
27+
28+
System.out.println(ret / 2);
29+
}
30+
}
31+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Runtime 0 ms Beats 100.00%
2+
// Memory 40.24 MB Beats 93.37%
3+
// N 进制的理解:从3进制的角度去理解,如果某一位置为 2, 则3^k 必然出现2次,那么不符合题目条件所述。
4+
// T:O(logn), S:O(1)
5+
//
6+
class Solution {
7+
public boolean checkPowersOfThree(int n) {
8+
while (n > 0) {
9+
if (n % 3 == 2) {
10+
return false;
11+
}
12+
n /= 3;
13+
}
14+
15+
return true;
16+
}
17+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Runtime 1 ms Beats 100.00%
2+
// Memory 44.79 MB Beats 97.81%
3+
// .
4+
// T:O(n), S:O(n)
5+
//
6+
class Solution {
7+
public int[] transformArray(int[] nums) {
8+
int len = nums.length, countOdd = 0;
9+
for (int i : nums) {
10+
if (i % 2 == 1) {
11+
countOdd++;
12+
}
13+
}
14+
int[] ret = new int[len];
15+
for (int i = len - countOdd; i < len; i++) {
16+
ret[i] = 1;
17+
}
18+
19+
return ret;
20+
}
21+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Runtime 2 ms Beats 91.50%
2+
// Memory 42.62 MB Beats 99.16%
3+
// 注意当 nums.length == k 时,即使有元素重复出现,那么也满足 它只出现在一个子数组 的要求,此时只需要取数组中最大元素即可。
4+
// T:O(n), S:O(n)
5+
//
6+
class Solution {
7+
public int largestInteger(int[] nums, int k) {
8+
int len = nums.length, ret = -1;
9+
if (len == 1) {
10+
return nums[0];
11+
}
12+
if (k == 1) {
13+
HashMap<Integer, Integer> record = new HashMap<>();
14+
for (int i : nums) {
15+
record.merge(i, 1, Integer::sum);
16+
}
17+
for (int key : record.keySet()) {
18+
if (record.get(key) == 1) {
19+
ret = Math.max(ret, key);
20+
}
21+
}
22+
} else if (len == k) {
23+
for (int i : nums) {
24+
ret = Math.max(ret, i);
25+
}
26+
} else {
27+
if (nums[0] != nums[len - 1]) {
28+
boolean flag1 = true, flag2 = true;
29+
for (int i = 1; i < len - 1; i++) {
30+
if (flag1 && nums[i] == nums[0]) {
31+
flag1 = false;
32+
}
33+
if (flag2 && nums[i] == nums[len - 1]) {
34+
flag2 = false;
35+
}
36+
if (!flag1 && !flag2) {
37+
break;
38+
}
39+
}
40+
if (flag1 && flag2) {
41+
ret = Math.max(nums[0], nums[len - 1]);
42+
} else if (flag1) {
43+
ret = nums[0];
44+
} else if (flag2) {
45+
ret = nums[len - 1];
46+
}
47+
}
48+
}
49+
50+
return ret;
51+
}
52+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Runtime 2 ms Beats 100.00%
2+
// Memory 44.36 MB Beats 100.00%
3+
// brute-force.
4+
// T:O(n^2), S:O(n)
5+
//
6+
class Solution {
7+
public int numOfUnplacedFruits(int[] fruits, int[] baskets) {
8+
int len = fruits.length, ret = 0;
9+
int[] visited = new int[len];
10+
for (int i : fruits) {
11+
boolean flag = false;
12+
for (int j = 0; j < len; j++) {
13+
if (visited[j] == 1) {
14+
continue;
15+
}
16+
if (baskets[j] >= i) {
17+
visited[j] = 1;
18+
flag = true;
19+
break;
20+
}
21+
}
22+
if (flag) {
23+
ret++;
24+
}
25+
}
26+
27+
return len - ret;
28+
}
29+
}

0 commit comments

Comments
 (0)