Skip to content

Commit 2693caf

Browse files
committed
Fixed style
1 parent 549742b commit 2693caf

File tree

1 file changed

+89
-89
lines changed
  • src/main/java/g3101_3200/s3165_maximum_sum_of_subsequence_with_non_adjacent_elements

1 file changed

+89
-89
lines changed

src/main/java/g3101_3200/s3165_maximum_sum_of_subsequence_with_non_adjacent_elements/Solution.java

Lines changed: 89 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -19,107 +19,107 @@ public int maximumSumSubsequence(int[] nums, int[][] queries) {
1919
}
2020
return ans;
2121
}
22-
}
2322

24-
class SegTree {
25-
private static class Record {
26-
int takeFirstTakeLast;
27-
int takeFirstSkipLast;
28-
int skipFirstSkipLast;
29-
int skipFirstTakeLast;
30-
31-
public Integer getMax() {
32-
return Stream.of(
33-
this.takeFirstSkipLast,
34-
this.takeFirstTakeLast,
35-
this.skipFirstSkipLast,
36-
this.skipFirstTakeLast)
37-
.max(Integer::compare)
38-
.orElse(null);
23+
static class SegTree {
24+
private static class Record {
25+
int takeFirstTakeLast;
26+
int takeFirstSkipLast;
27+
int skipFirstSkipLast;
28+
int skipFirstTakeLast;
29+
30+
public Integer getMax() {
31+
return Stream.of(
32+
this.takeFirstSkipLast,
33+
this.takeFirstTakeLast,
34+
this.skipFirstSkipLast,
35+
this.skipFirstTakeLast)
36+
.max(Integer::compare)
37+
.orElse(null);
38+
}
39+
40+
public Integer skipLast() {
41+
return Stream.of(this.takeFirstSkipLast, this.skipFirstSkipLast)
42+
.max(Integer::compare)
43+
.orElse(null);
44+
}
45+
46+
public Integer takeLast() {
47+
return Stream.of(this.skipFirstTakeLast, this.takeFirstTakeLast)
48+
.max(Integer::compare)
49+
.orElse(null);
50+
}
3951
}
4052

41-
public Integer skipLast() {
42-
return Stream.of(this.takeFirstSkipLast, this.skipFirstSkipLast)
43-
.max(Integer::compare)
44-
.orElse(null);
45-
}
53+
private static Record[] seg;
54+
private final int[] nums;
4655

47-
public Integer takeLast() {
48-
return Stream.of(this.skipFirstTakeLast, this.takeFirstTakeLast)
49-
.max(Integer::compare)
50-
.orElse(null);
56+
public SegTree(int[] nums) {
57+
this.nums = nums;
58+
seg = new Record[4 * nums.length];
59+
for (int i = 0; i < 4 * nums.length; ++i) {
60+
seg[i] = new Record();
61+
}
62+
build(0, nums.length - 1, 0);
5163
}
52-
}
53-
54-
private static Record[] seg;
55-
private final int[] nums;
5664

57-
public SegTree(int[] nums) {
58-
this.nums = nums;
59-
seg = new Record[4 * nums.length];
60-
for (int i = 0; i < 4 * nums.length; ++i) {
61-
seg[i] = new Record();
65+
private void build(int i, int j, int k) {
66+
if (i == j) {
67+
seg[k].takeFirstTakeLast = nums[i];
68+
return;
69+
}
70+
int mid = (i + j) >> 1;
71+
build(i, mid, 2 * k + 1);
72+
build(mid + 1, j, 2 * k + 2);
73+
merge(k);
6274
}
63-
build(0, nums.length - 1, 0);
64-
}
6575

66-
private void build(int i, int j, int k) {
67-
if (i == j) {
68-
seg[k].takeFirstTakeLast = nums[i];
69-
return;
76+
// merge [2*k+1, 2*k+2] into k
77+
private static void merge(int k) {
78+
seg[k].takeFirstSkipLast =
79+
Math.max(
80+
seg[2 * k + 1].takeFirstSkipLast + seg[2 * k + 2].skipLast(),
81+
seg[2 * k + 1].takeFirstTakeLast + seg[2 * k + 2].skipFirstSkipLast);
82+
83+
seg[k].takeFirstTakeLast =
84+
Math.max(
85+
seg[2 * k + 1].takeFirstSkipLast + seg[2 * k + 2].takeLast(),
86+
seg[2 * k + 1].takeFirstTakeLast + seg[2 * k + 2].skipFirstTakeLast);
87+
88+
seg[k].skipFirstTakeLast =
89+
Math.max(
90+
seg[2 * k + 1].skipFirstSkipLast + seg[2 * k + 2].takeLast(),
91+
seg[2 * k + 1].skipFirstTakeLast + seg[2 * k + 2].skipFirstTakeLast);
92+
93+
seg[k].skipFirstSkipLast =
94+
Math.max(
95+
seg[2 * k + 1].skipFirstSkipLast + seg[2 * k + 2].skipLast(),
96+
seg[2 * k + 1].skipFirstTakeLast + seg[2 * k + 2].skipFirstSkipLast);
7097
}
71-
int mid = (i + j) >> 1;
72-
build(i, mid, 2 * k + 1);
73-
build(mid + 1, j, 2 * k + 2);
74-
merge(k);
75-
}
7698

77-
// merge [2*k+1, 2*k+2] into k
78-
private static void merge(int k) {
79-
seg[k].takeFirstSkipLast =
80-
Math.max(
81-
seg[2 * k + 1].takeFirstSkipLast + seg[2 * k + 2].skipLast(),
82-
seg[2 * k + 1].takeFirstTakeLast + seg[2 * k + 2].skipFirstSkipLast);
83-
84-
seg[k].takeFirstTakeLast =
85-
Math.max(
86-
seg[2 * k + 1].takeFirstSkipLast + seg[2 * k + 2].takeLast(),
87-
seg[2 * k + 1].takeFirstTakeLast + seg[2 * k + 2].skipFirstTakeLast);
88-
89-
seg[k].skipFirstTakeLast =
90-
Math.max(
91-
seg[2 * k + 1].skipFirstSkipLast + seg[2 * k + 2].takeLast(),
92-
seg[2 * k + 1].skipFirstTakeLast + seg[2 * k + 2].skipFirstTakeLast);
93-
94-
seg[k].skipFirstSkipLast =
95-
Math.max(
96-
seg[2 * k + 1].skipFirstSkipLast + seg[2 * k + 2].skipLast(),
97-
seg[2 * k + 1].skipFirstTakeLast + seg[2 * k + 2].skipFirstSkipLast);
98-
}
99-
100-
// child -> parent
101-
public void update(int idx, int val) {
102-
int i = 0;
103-
int j = nums.length - 1;
104-
int k = 0;
105-
update(idx, val, k, i, j);
106-
}
107-
108-
private static void update(int idx, int val, int k, int i, int j) {
109-
if (i == j) {
110-
seg[k].takeFirstTakeLast = val;
111-
return;
99+
// child -> parent
100+
public void update(int idx, int val) {
101+
int i = 0;
102+
int j = nums.length - 1;
103+
int k = 0;
104+
update(idx, val, k, i, j);
112105
}
113-
int mid = (i + j) >> 1;
114-
if (idx <= mid) {
115-
update(idx, val, 2 * k + 1, i, mid);
116-
} else {
117-
update(idx, val, 2 * k + 2, mid + 1, j);
106+
107+
private static void update(int idx, int val, int k, int i, int j) {
108+
if (i == j) {
109+
seg[k].takeFirstTakeLast = val;
110+
return;
111+
}
112+
int mid = (i + j) >> 1;
113+
if (idx <= mid) {
114+
update(idx, val, 2 * k + 1, i, mid);
115+
} else {
116+
update(idx, val, 2 * k + 2, mid + 1, j);
117+
}
118+
merge(k);
118119
}
119-
merge(k);
120-
}
121120

122-
public int getMax() {
123-
return seg[0].getMax();
121+
public int getMax() {
122+
return seg[0].getMax();
123+
}
124124
}
125125
}

0 commit comments

Comments
 (0)