thinkandwork_
Senior Member
Bao lần mình quyết tâm cày. Cuối cùng bỏ dở 


Tại mình solve 1 bài lâu quá. Xong ko đủ kiên nhẫn để làm tiếp.



Tại mình solve 1 bài lâu quá. Xong ko đủ kiên nhẫn để làm tiếp.


Tại mình solve 1 bài lâu quá. Xong ko đủ kiên nhẫn để làm tiếp.
em làm 1 cái sort end, 1 cái sort start rồi biseach bác ạFeed mẹ nó rồi, éo nghĩ ra q3![]()
Bị ngu đấy greedy chay cũng raBài 1/3 làm 1 cái suffix cho tổng end của lượt sau và prefix cho duration của lượt sau, xong bs với mỗi bộ start end tương ứng của lượt trước thôi
Bài cuối Mo algorithm, bỏ qua nhé :v
))))
) cùng 1 thuật, Java thì TLE còn C++ thì pass
bài số mấy bác nổ cái số ae cầm hàng ra hỗ trợ) cùng 1 thuật, Java thì TLE còn C++ thì pass
![]()
. Công bằng ở đâu![]()
Bài đấy em thấy constraint 10^5 nên nghĩ hướng n log n nhưng for 2 lần greedy là ra rHôm nay não hơi lag, có vẻ nghĩ phức tạp Q3 quá ko rahơi sida

Thật, cứ nghĩ theo hướng là ở mỗi index của start time là phải tìm ra end time. Rank 6k cmnrBài đấy em thấy constraint 10^5 nên nghĩ hướng n log n nhưng for 2 lần greedy là ra r![]()

Q2 3 em làm Java TLE hết bác :v Bisearchbài số mấy bác nổ cái số ae cầm hàng ra hỗ trợ![]()
e giải java bth mànay mấy anh leetcode để time limit của Java thấp thế nhỉ, Q2, Q3 phải submit bằng C++ mới pass![]()
![]()
![]()
![]()
class Solution {
public int minRemoval(int[] nums, int k) {
int n = nums.length;
Arrays.sort(nums);
int res = Math.max(n-1,0);
int[] maxIndex = new int[n];
int[] ft= new int[2];
ft[0]=0;
ft[1]=n-1;
for(int i = 0; i < n ;i++){
ft[0]= findMaxIndex(nums, ft, 1L*nums[i]*k);
res = Math.min(res, i + (n-1)-ft[0]);
}
return res;
}
public int findMaxIndex(int[] nums, int[]ft ,long target){
int l = ft[0];
int r = ft[1];
int res = l;
while(l<=r){
int mid = l+(r-l)/2;
if(nums[mid]<=target){
res = mid;
l = mid+1;
}else{
r=mid-1;
}
}
return res;
}
}
class Solution {
public int earliestFinishTime(int[] landStartTime, int[] landDuration, int[] waterStartTime, int[] waterDuration) {
int hasturvane;
int bestLandFinish = Integer.MAX_VALUE;
for (int i = 0; i < landStartTime.length; i++) {
bestLandFinish = Math.min(bestLandFinish, landStartTime[i] + landDuration[i]);
}
hasturvane = bestLandFinish;
int finish1 = Integer.MAX_VALUE;
for (int j = 0; j < waterStartTime.length; j++) {
int start = Math.max(hasturvane, waterStartTime[j]);
finish1 = Math.min(finish1, start + waterDuration[j]);
}
int bestWaterFinish = Integer.MAX_VALUE;
for (int j = 0; j < waterStartTime.length; j++) {
bestWaterFinish = Math.min(bestWaterFinish, waterStartTime[j] + waterDuration[j]);
}
hasturvane = bestWaterFinish;
int finish2 = Integer.MAX_VALUE;
for (int i = 0; i < landStartTime.length; i++) {
int start = Math.max(hasturvane, landStartTime[i]);
finish2 = Math.min(finish2, start + landDuration[i]);
}
return Math.min(finish1, finish2);
}
}
e đọc dòng này:Thật, cứ nghĩ theo hướng là ở mỗi index của start time là phải tìm ra end time. Rank 6k cmnr
Chán
Ghê quá, Trận vừa rồi feed 30 điểm rank cho các huynh rồie đọc dòng này:
A tourist must experience exactly one ride from each category, in either order.
là nghĩ ngay tới trò check cả 2 chiều r chọn. chắc gặp vài câu dạng này r nên quen quen. tuần trước weekly cũng có 1 câu dạng xóa left, mid hay right. e cũng nghĩ tới đường tính cả 3 xem cái nào thơm nhất. vừa vào cố định 1 cái biến chạy bớt tìm nghiệm 1 biến r![]()
