thảo luận Leetcode + Codeforces, Competitive programming contest. Đường tới Guardian + Candidate Master.

  • Người tạo chủ đề Người tạo chủ đề freedom.9
  • Ngày bắt đầu Ngày bắt đầu
Mấy bác giải Q2 kiểu gì thế ? Em chơi tà đạo làm func generate ra list các số thỏa đề cho, xong Binary search rồi nums = Math.Min(cur - arr[c - 1], arr[c] - cur);

Chứ khoản bit em còn ngu ngu
 
Mấy bác giải Q2 kiểu gì thế ? Em chơi tà đạo làm func generate ra list các số thỏa đề cho, xong Binary search rồi nums = Math.Min(cur - arr[c - 1], arr[c] - cur);

Chứ khoản bit em còn ngu ngu
Q2 em hard code các trường hợp thoả điều kiện mà gần số gốc có thể xảy ra rồi tìm min.
  • Cố định phần bên trái, copy bên phải giống bên trái
  • Tăng phần bên trái 1 đơn vị, copy bên phải giống bên trái
  • Giảm phần bên trái 1 đơn vị, copy bên phải giống bên trái
Tiếp tục, nếu số chữ số là số lẻ, thử đổi center từ 0 sang 1 và 1 sang 0, làm lại với 3 case trên

Lấy min của 6 cases


Python:
class Solution:
    def minOperations(self, nums: List[int]) -> List[int]:
        res = []
        for num in nums:
            x = bin(num)[2:]
            n = len(x)
            first = x[:n // 2]
            last = x[(n + 1) // 2:]
            if n % 2:
                center = x[n// 2]
            else:
                center = ""
            if n == 1:
                res.append(0)
                continue
            first2 = bin(int(first, 2) + 1)[2:]
            first3 = bin(int(first, 2) - 1)[2:]
            target = first + center + first[::-1]
            target2 = first2 + center + first2[::-1]
            target3 = first3 + center + first3[::-1]
            val = abs(int(target, 2) - num)
            val2 = abs(int(target2, 2) - num)
            val3 = abs(int(target3, 2) - num)
            value = min([val, val2, val3])
            if center:
                center = str(int(center) ^ 1)
                target = first + center + first[::-1]
                target2 = first2 + center + first2[::-1]
                target3 = first3 + center + first3[::-1]
                val = abs(int(target, 2) - num)
                val2 = abs(int(target2, 2) - num)
                val3 = abs(int(target3, 2) - num)
                value = min([val, val2, val3, value])
           
            res.append(value)
        return res
 
ban đầu tôi cũng nghĩ phức tạp quá, sau code chỉ còn mỗi như này :ah:
Mã:
class Solution {
public:

    bool get(int n) {
        string ans = "";
        while(n) {
            ans.push_back(n % 2 + '0');
            n /= 2;
        }
        for(int i = 0, j = ans.size() - 1; i < j; i++, j--) {
            if(ans[i] != ans[j]) return false;
        }
        return true;
    }
    
    vector<int> minOperations(vector<int>& a) {
        vector<int> ans;
        for(auto &i: a) {
            for(int j = 0; j <= i; j++) {
                if(get(i - j) || get(i + j)) {
                    ans.push_back(j);
                    break;
                }
            }
        }
        return ans;
    }
};
 
Vl mình đọc nhầm constrain là nums i len là 5000 chứ ko phải nums i <= 5000 nên làm greedy sml
BdgiW7R.gif

Đần độn hết sức.
Mà làm greedy thì do ko chứng minh được nên loay hoay mãi :sweat: hết contest còn ko giải đc q2. Mà q2 bị trigger xong làm ko tập trung giải q4 gì cả mặc dù q4 dễ :sweat:
 
Từ code ban đầu wrong answer do quên order cái sorted list tới code đúng sửa đúng 1 dòng mà mất 30 phút debug + thêm 2 bug. Cay quá, ko đủ điểm gỡ bài hồi sáng rồi =((
 
Để đi học rerooting dp phục thù q4. Cứ học 1 dạng dp xong thì leetcode lại thi dạng khác :sad:
Dần dần nó lặp lại mà, mấy bài mà nó hỏi kiểu sub graph thì nghĩ ngay tới rerooting đảo cái root chứ còn cách nào khác đâu.
Q3 mấy fen ý tưởng là gì nhỉ? Ý tưởng của mình cũng khá phức tạp là chạy cho thằng room 0 trước rồi capture cái delta của hp so với requirement ở mỗi vị trí. Xong rồi room 1 sẽ reverse cái delta của room 0 bằng damage 0.
Làm đc cách này phải dùng sorted list khá phức tạp vì phải xóa những cái delta ko dùng. Ko biết còn cách khác ngon ăn ko
Dạo này rating cao rồi thi thố tâm lí hơi nặng, tuần sau dùng acc clone cho lên Guardian đã cho tâm lí thoải mái tí, dùng clone sẽ bớt dính lỗi ngu hơn vì tâm lí khá thoải mái
zFNuZTA.gif

via theNEXTvoz for iPhone
 
Sửa lần cuối:

Thống kê chủ đề

Ngày tạo
freedom.9,
Người trả lời cuối
deple20k,
Trả lời
1.686
Lượt xem
107.092
Quay lại
Lên đầu trang