Skip to content

Commit 22bf269

Browse files
committed
update
1 parent 250f47e commit 22bf269

3 files changed

Lines changed: 80 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Time: 374 ms
2+
// Memory: 900 KB
3+
// 注意:polygons 是多边形,不是矩形。
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_1957A_Stickogon {
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(), 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+
ret += record.get(key) / 3;
21+
}
22+
23+
System.out.println(ret);
24+
}
25+
}
26+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Time: 405 ms
2+
// Memory: 1000 KB
3+
// Game & Greedy: 最优情况下,先手的优先删最小的,后手的优先删最大的,那么最终会剩下中间的。
4+
// T:O(sum(ni * logni)), S:O(max(ni))
5+
//
6+
import java.util.Arrays;
7+
import java.util.Scanner;
8+
9+
public class Codeforces_2003B_Turtle_and_Piggy_Are_Playing_a_Game_2 {
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();
15+
int[] arr = new int[n];
16+
for (int j = 0; j < n; j++) {
17+
arr[j] = sc.nextInt();
18+
}
19+
Arrays.sort(arr);
20+
21+
System.out.println(arr[n / 2]);
22+
}
23+
}
24+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Runtime 95 ms Beats 5.42%
2+
// Memory 79.55 MB Beats 7.16%
3+
// Prefix sum & DP.
4+
// 注意:给的参数范围是 length <= 10^5,所以有概率超过 int 上限。
5+
// T:O(n), S:O(n)
6+
//
7+
class Solution {
8+
public int numOfSubarrays(int[] arr) {
9+
HashMap<Integer, Long> oddSumCount = new HashMap<>(), evenSumCount = new HashMap<>();
10+
evenSumCount.put(0, 1L);
11+
oddSumCount.put(0, 0L);
12+
int len = arr.length, curSum = 0;
13+
long ret = 0;
14+
for (int i = 0; i < len; i++) {
15+
curSum += arr[i];
16+
if (curSum % 2 == 1) {
17+
ret += evenSumCount.get(i);
18+
oddSumCount.put(i + 1, oddSumCount.get(i) + 1);
19+
evenSumCount.put(i + 1, evenSumCount.get(i));
20+
} else {
21+
ret += oddSumCount.get(i);
22+
evenSumCount.put(i + 1, evenSumCount.get(i) + 1);
23+
oddSumCount.put(i + 1, oddSumCount.get(i));
24+
}
25+
26+
}
27+
28+
return (int) (ret % (1000000000 + 7));
29+
}
30+
}

0 commit comments

Comments
 (0)