Trang 2/3 Đầu 123 cuối
kết quả từ 13 tới 24 trên 34

Nhờ các bạn xem bài này giùm nên làm thế nào

  1. #13
    Ðến Từ
    Hà Nội
    Thành Viên Thứ: 358027
    Bài gửi
    1.720

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Trích Nguyên văn bởi LanSG9x Xem bài viết
    Ối em xem thấy có bài cũng bảo chủ thớt đề sai. Sau đó chủ thớt nói lại cho vỡ mồm mà vẫn k biết. Đề đúng hay sai là do bạn thớt định nhé mọi người.Còn cách làm của bạn rchato thì k tối ưu chút nào. Hiểu theo kiểu của bạn mà làm thế thì k hay rồi. Cần phải sắp xếp lại trước sẽ nhanh hơn. Bạn k tin thì viết code ra sẽ test. Có cái code mà test thì "anh chỉ biết câm nín".
    Chẳng có gì là đề đúng hay sai do thớt định nghĩa, sách giáo khoa nhà xuất bản giáo dục còn đầy chỗ không đúng, nói thẳng là sai lù lù, các thầy cô giáo dạy lâu năm phát hiện ra mà sách vẫn không chịu sửa nha bạn, học miết thành quen, ấn bản lần thứ A, B, C tái bản lại mà không chịu sửa các lỗi trong bản trước, sách giải thuật lập trình cũng vậy thui, đọc nhiều thì biết

    chủ yếu đề bài đặt vấn đề không cụ thể, dễ gây hiểu lầm, cần ít nhất 1 người trên thuyền nhấn nút khởi động, thay vì nói thuyền tự lái, cách giải của tengiday mình chưa chứng minh được tổng thời gian sẽ luôn MIN, chỉ chứng minh được nó ra kết quả giống ví dụ

    MAX(2, 3) => 2 (Time: 5)
    MAX(10, 14) => 3 (Time: 17)
    MAX(2, 3) => 2 (Time: 5)
    MAX(5, 6) => 3 (Time: 9)
    MAX(2, 3) => 2 (Time: 5)
    MAX(3, 4) => (Time: 4)

    Time: 5 + 17 + 5 + 9 + 5 + 4 = 45

  2. #14
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 402126
    Giới tính: Nữ
    Bài gửi
    38

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Trích Nguyên văn bởi gunshot9x Xem bài viết
    Chẳng có gì là đề đúng hay sai do thớt định nghĩa, sách giáo khoa nhà xuất bản giáo dục còn đầy chỗ không đúng, nói thẳng là sai lù lù, các thầy cô giáo dạy lâu năm phát hiện ra mà sách vẫn không chịu sửa nha bạn, học miết thành quen, ấn bản lần thứ A, B, C tái bản lại mà không chịu sửa các lỗi trong bản trước, sách giải thuật lập trình cũng vậy thui, đọc nhiều thì biết

    chủ yếu đề bài đặt vấn đề không cụ thể, dễ gây hiểu lầm, cần ít nhất 1 người trên thuyền nhấn nút khởi động, thay vì nói thuyền tự lái, cách giải của tengiday mình chưa chứng minh được tổng thời gian sẽ luôn MIN, chỉ chứng minh được nó ra kết quả giống ví dụ

    MAX (2, 3) => 2 (Time: 5)
    MAX (10, 14) => 3 (Time: 17)
    MAX (2, 3) => 2 (Time: 5)
    MAX (5, 6) => 3 (Time: 9)
    MAX (2, 3) => 2 (Time: 5)
    MAX (3, 4) => (Time: 4)

    Time: 5 + 17 + 5 + 9 + 5 + 4 = 45
    Tùy vào chủ thớt, những cái khác k quan trọng. Bạn muốn hiểu sao thì tùy. Câu trả lời tại sao cách anh tengiday đúng đã nằm ngay trong cách giải của em và rchato rồi. Bạn k thấy được sao???

    @rchato: Em thấy trên dd người ta nói đúng thì nghe thôi. Nếu cần uy tín thì nếu bạn biết tengiday là ai, thành tựu của ảnh như thế nào thì bạn có dám bảo anh đó hiểu sai đề k?

    AHBP nhiều thật. Nói mãi...

  3. #15
    Ðến Từ
    Hà Nội
    Thành Viên Thứ: 358027
    Bài gửi
    1.720

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Một bài toán không chỉ cần đưa ra bài giải, mà phải biết vì sao nó đúng? Một người lập trình luôn phải đặt câu hỏi đó? Vì đây là bài toán hoán vị các lần di chuyển nên cần phải chứng minh được vì sao tổng theo cách chọn đó sẽ MIN, để đảm bảo tính đúng đắn của thuật toán. Chỗ nào không hiểu thì mình nói không hiểu?

  4. #16
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 402126
    Giới tính: Nữ
    Bài gửi
    38

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Ý của em là nếu quan sát kĩ sẽ thấy cách làm của anh tengiday = cách làm của bạn rchato + sự di chuyển của cặp có thời gian nhỏ nhất tại mỗi bước. Có đúng k? Còn tại sao chọn như bạn rchato thì em nghĩ nên để bạn ý trả lời cho.

  5. #17
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 336874
    Giới tính: Nữ
    Bài gửi
    291

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Trích Nguyên văn bởi LanSG9x Xem bài viết
    Ý của em là nếu quan sát kĩ sẽ thấy cách làm của anh tengiday = cách làm của bạn rchato + sự di chuyển của cặp có thời gian nhỏ nhất tại mỗi bước. Có đúng k? Còn tại sao chọn như bạn rchato thì em nghĩ nên để bạn ý trả lời cho.
    Mình đã nói với bạn rồi, không tranh luận làm gì nữa vì họ không bao giờ sai, bạn có thấy ai khen 1 người bảo thủ không, trừ khi người đó mù quán, cái chính cần giải quyết vấn đề, không phải tranh luận vấn đề vậy nên những gì tranh luận vô nghĩa thì mình nên im lặng, không nên chia sẻ, nên chia sẻ đúng người, đúng đối tượng


  6. Đã cảm ơn Sút toàn trật:


  7. #18
    Ðến Từ
    Hà Nội
    Thành Viên Thứ: 358027
    Bài gửi
    1.720

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Các bạn kiểm tra lại xem mình có tính sai ở đâu không (tính mình tính toán hay nhầm lẫn, các bạn phải kiểm tra lại cho chắc ăn)

    Với bộ số liệu


    7
    2 10 12 14 16 18 20

    Cách 1: Theo cách sắp xếp tengiday

    Mã:
    Lần 1:  2 10 =>  2 (12) => [10]
    Lần 2: 20 18 => 10 (30) => [20 18]
    Lần 3:  2 10 =>  2 (12) => [20 18 10]
    Lần 4: 16 14 => 10 (26) => [20 18 16 14]
    Lần 5:  2 10 =>  2 (12) => [20 18 16 14 10]
    Lần 6:  2 12 =>    (12) => [20 18 16 14 10 2 12]
    Hoặc
    Lần 5:  2 12 =>  2 (14) => [20 18 16 14 12]
    Lần 6:  2 10 =>    (10) => [20 18 16 14 12 2 10]
    Tổng thời gian: 12 + 30 + 12 + 26 + [12 + 12 hoặc 14 + 10] = 104

    Cách 2: Cách sắp xếp khác cho thời gian ngắn hơn bộ số liệu này (thuật toán này không phải chính xác để xử lý bài này, vì chưa nghĩ ra hướng cho thuật toán giải bài này luôn đúng)

    Mã:
    Lần 1: 2 20 => 2 (22) => [20]
    Lần 2: 2 18 => 2 (20) => [20 18]
    Lần 3: 2 16 => 2 (18) => [20 18 16]
    Lần 4: 2 14 => 2 (16) => [20 18 16 14]
    Lần 5: 2 12 => 2 (14) => [20 18 16 14 12]
    Lần 6: 2 10 =>   (10) => [20 18 16 14 12 10 2]
    Tổng thời gian: 22 + 20 + 18 + 16 + 14 + 10 = 100

    So sánh: cách 2 có thời gian ngắn hơn cách 1, suy ra thuật toán tengiday không phải luôn đúng, hay nói đúng hơn là thuật toán giải bài này không chính xác

  8. #19
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 402686
    Giới tính: Nam
    Bài gửi
    74

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Trích Nguyên văn bởi LanSG9x Xem bài viết
    Tùy vào chủ thớt, những cái khác k quan trọng. Bạn muốn hiểu sao thì tùy. Câu trả lời tại sao cách anh tengiday đúng đã nằm ngay trong cách giải của em và rchato rồi. Bạn k thấy được sao???

    @rchato: Em thấy trên dd người ta nói đúng thì nghe thôi. Nếu cần uy tín thì nếu bạn biết tengiday là ai, thành tựu của ảnh như thế nào thì bạn có dám bảo anh đó hiểu sai đề k?

    AHBP nhiều thật. Nói mãi...
    Mình đâu nói bạn tengiday làm sai. Mình chỉ nói bạn ấy là không nên đưa dự liệu không có trong bài vào như thế. Vì khi đã đưa như thế thì sẽ có rất nhiều cái phải đưa vào ví dụ như: Lực cản, tốc độ dòng chạy,...
    Còn về uy tín và thành tựu. Xin lỗi bạn, mình chỉ cần bài toán được giải quyết xong. Còn lại người nào uy tín mà nói sai thì vẫn phải góp ý. Bạn có thể gọi ban @tengiday vào để bạn ấy trả lời. Chứ mình không nói bạn ấy giải bài toán sai nhé.

  9. #20
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 402126
    Giới tính: Nữ
    Bài gửi
    38

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Em nghĩ em hiểu sai ý anh tengiday rồi. Thêm ví dụ của bạn gunshot9x làm em cũng nghĩ ra phương pháp.
    Em giả sử n > 1 cho dễ.
    Mã:
    1) Sort mảng giảm dần a[1] >= a[2] >= ... >= a[n-1] >= a[n]
    2) Với i chạy từ 1 và mỗi bước tăng 2, nếu m là số người còn bên bờ sông A tại mỗi bước thì ta có các trường hợp sau:
       a) Nếu m=3 thì thời gian là a[n] + a[n-1] + a[n-2]
       b) Nếu m=2 thì thời gian là a[n-1]
       c) Nếu m>3 thì có 2 trường hợp:
          c_i)  Nếu a[n-1] và a[n] hộ tống a[i] và a[i+1] qua sông rồi a[n] và a[n-1] quay về,
             khi đó thời gian là: a[n] + 2*a[n-1] + a[i].
          c_ii) Nếu a[n] hộ tống a[i] và a[i+1] qua sông rồi a[n] quay về,
             khi đó thời gian là: 2*a[n] + a[i] + a[i+1].
          Ta chỉ cần chọn số nhỏ hơn của 2 trường hợp c_i và c_ii
    Ý tưởng là lúc nào cũng phải để cặp có thời gian qua sông lớn nhất đi trước. Còn "người hộ tống" thì cần giữ 2 đầu. Tại sao nó đúng thì ý nghĩ cũng tương tự là kết hợp người chèo thuyền về và cách chọn cặp lớn tới nhỏ.
    Em nói được là làm được. Đây là code. Khuya rồi, em code nhanh rồi ngủ, kiểu này mai chắc ngủ lớp Marx quá.
    Mã:
    int river_crossing(int *a, int n) {
        if (n < 1)
            return 0;
        if (n < 2)
            return a[0];
    
        qsort(a, 0, n - 1); // sap xep tu lon toi nho
    
        int tg = 0, i;
        for (i = 0; i < n - 3; i += 2)
            tg += min(a[n - 1] + 2 * a[n - 2] + a[i], 2 * a[n - 1] + a[i] + a[i + 1]);
        return tg + (i < n - 2 ? a[n - 3] + a[n - 2] + a[n - 1] : a[n - 2]);
    }

    @rchato: Bạn đừng điêu và lươn lẹo nhé!!! Ở đây k phải ở ngoài đời mà bạn dùng kiểu nói làm ăn đó. Tôi không nói anh đi sai luật, tôi bảo anh vượt đèn đỏ. K ai khờ đâu; lòng Tư Mã Chiêu ai cũng hiểu. Như thế em biết công ty thế nào rồi đấy!

  10. #21
    Ðến Từ
    Hà Nội
    Thành Viên Thứ: 358027
    Bài gửi
    1.720

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Mình chỉ nói đơn giản thế này nha bạn, muốn xây dựng thuật toán gì cũng phải có cơ sở vững chắc (logic toán học), các nhận định để đưa ra giải thuật cũng phải dựa trên đặc trưng của dữ liệu

    Bạn phải chứng minh là nó đúng, chứ không phải nghĩ là nó đúng, vì 2 việc hoàn toàn khác nhau, nghĩ nó đúng nhưng chưa chắc nó đã đúng. Ví dụ: đường ray xe lửa, bạn nhìn thì nó giao nhau ở phía xa nhưng thực chất nó là 2 đường thẳng song song. Và ở đây không có tính chất MIN tổng bằng tổng các MIN

    Bài này đành cù nhầy dùng phương pháp liệt kê tất cả trường hợp tính rồi đem so sánh với nhau lấy thời gian nhỏ nhất

    Khái quát hóa bài toán:

    Cho a[n] = {a1, a2, a3, a4 ..., an} và b[n] rỗng

    Di chuyển 2 phần tử a[n] sang b[n] và lấy 1 phần tử b[n] chuyển lại cho a[n], thực hiện cho đến khi nào phần tử a[n] chuyển hết sang b[n]

    Số lần di chuyển sẽ là: n - 2 + 1 = n - 1

    Lần 1: nC2 => 2C1
    Lần 2: (n-1)C2 => 3C1
    Lần 3: (n-2)C2 => 4C1
    ...
    Lần i: (n - i + 1)C2 => (i+1)C1
    ...
    Lần n-2: 3C2 => (n-1)C1
    Lần n-1: 2C2

    với n = 7 có thể tính nhẩm ra 7C2 x 2C1 x 6C2 x 3C1 X 5C2 x 4C1 x 4C2 x 5C1 x 3C2 x 6C1 x 2C2 = 40.824.000 cách sắp xếp (mà lại cần tìm 1 cách có time ngắn nhất trong đống đó), bài này mà hỏi bên toán tin ứng dụng thì cũng chưa chắc đã có lời giải hợp lý

  11. #22
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 403392
    Bài gửi
    7

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Trích Nguyên văn bởi LanSG9x Xem bài viết
    Em nghĩ em hiểu sai ý anh tengiday rồi. Thêm ví dụ của bạn gunshot9x làm em cũng nghĩ ra phương pháp.
    Em giả sử n > 1 cho dễ.
    Mã:
    1) Sort mảng giảm dần a[1] >= a[2] >= ... >= a[n-1] >= a[n]
    2) Với i chạy từ 1 và mỗi bước tăng 2, nếu m là số người còn bên bờ sông A tại mỗi bước thì ta có các trường hợp sau:
       a) Nếu m=3 thì thời gian là a[n] + a[n-1] + a[n-2]
       b) Nếu m=2 thì thời gian là a[n-1]
       c) Nếu m>3 thì có 2 trường hợp:
          c_i)  Nếu a[n-1] và a[n] hộ tống a[i] và a[i+1] qua sông rồi a[n] và a[n-1] quay về,
             khi đó thời gian là: a[n] + 2*a[n-1] + a[i].
          c_ii) Nếu a[n] hộ tống a[i] và a[i+1] qua sông rồi a[n] quay về,
             khi đó thời gian là: 2*a[n] + a[i] + a[i+1].
          Ta chỉ cần chọn số nhỏ hơn của 2 trường hợp c_i và c_ii
    Ý tưởng là lúc nào cũng phải để cặp có thời gian qua sông lớn nhất đi trước. Còn "người hộ tống" thì cần giữ 2 đầu. Tại sao nó đúng thì ý nghĩ cũng tương tự là kết hợp người chèo thuyền về và cách chọn cặp lớn tới nhỏ.
    Em nói được là làm được. Đây là code. Khuya rồi, em code nhanh rồi ngủ, kiểu này mai chắc ngủ lớp Marx quá.
    Mã:
    int river_crossing(int *a, int n) {
        if (n < 1)
            return 0;
        if (n < 2)
            return a[0];
    
    
        qsort(a, 0, n - 1); // sap xep tu lon toi nho
    
    
        int tg = 0, i;
        for (i = 0; i < n - 3; i += 2)
            tg += min(a[n - 1] + 2 * a[n - 2] + a[i], 2 * a[n - 1] + a[i] + a[i + 1]);
        return tg + (i < n - 2 ? a[n - 3] + a[n - 2] + a[n - 1] : a[n - 2]);
    }

    @rchato: Bạn đừng điêu và lươn lẹo nhé!!! Ở đây k phải ở ngoài đời mà bạn dùng kiểu nói làm ăn đó. Tôi không nói anh đi sai luật, tôi bảo anh vượt đèn đỏ. K ai khờ đâu; lòng Tư Mã Chiêu ai cũng hiểu. Như thế em biết công ty thế nào rồi đấy!
    Bạn quan sát hay. Cách làm cũng đúng đó. Nhưng bài này muốn CM thì không dễ đâu nha. Mình đã đọc bài này đâu đó rồi. Mình ủng hộ quan điểm của bạn Sút Toàn Trật đấy. Bạn đừng cãi gì cho mệt. Mình quan sát rum mấy năm rồi, hôm nay thấy bạn nhiệt huyết nên mình kể bạn nghe cái này
    Hồi đó có bạn hỏi 6-7 bài lập trình tính thời gian, chạy thử trên máy mới i7 của thầy bạn đó. Có bạn A bảo rằng mấy bài đó không dễ ăn đâu. Sau đó có bạn B khác làm được 2-3 bài. Bạn A lập tức đem chạy bài đó trên máy đời cũ Pentium 4. Thời gian không qua còn đem lên cho mọi người xem. Còn tô màu gạch đích, chụp màn hình nữa. Lúc sau admin chạy thử trên máy cũng tàng tàng là vừa qua thời gian (nói gì máy mới i7). Không có gì để nói, sau đó bạn A quay sang dạy chủ thớt "những bài này rất cơ bản". Mà toàn nói những thứ đúng là "rất cơ bản" ai cũng biết. Bị chủ thớt nạt. Cuối cùng bạn A im luôn, không xin lỗi, không cám ơn gì cả. Da mặt cỡ nào đây trời!!! Mà bạn B cũng quá hiền, im lặng.
    Còn có bài khác, chủ thớt hỏi mấy câu. Có bạn trả lời được. Rồi tự nhiên có bạn khác vào làm bài đó. Mà hoàn toàn bỏ hết câu hỏi của chủ thớt chỉ giải theo ý mình, còn bảo sai đề. Giống bạn nói đó "con gà ghét nhau vì tiếng gáy".
    Qua bài "phương trình bậc 2" thì bạn thấy rồi, cần gì phải tranh hơn thua. Không xin lỗi, không cám ơn gì người ta. Ngay khi viết code, nhận xét 2 vòng lặp 10^5, rồi nói đến test là thể hiện ra trình độ. Bởi vậy chỉ nói và hay bắt bẻ thôi.


    Lập trình rất rộng. Cho dù biết lập trình mấy bài này cũng chưa hẳn lập trình web giỏi và ngược lại. Rum có những bạn rất giỏi, nhưng tài cần đức. Có tài mà không có đức, nó leo lên thì dân dưới này chết hết. Admin của rum hiền quá!

  12. Đã cảm ơn tuan.huynh.87:


  13. #23
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 402126
    Giới tính: Nữ
    Bài gửi
    38

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Trích Nguyên văn bởi tuan.huynh.87 Xem bài viết
    Bạn quan sát hay. Cách làm cũng đúng đó. Nhưng bài này muốn CM thì không dễ đâu nha. Mình đã đọc bài này đâu đó rồi. Mình ủng hộ quan điểm của bạn Sút Toàn Trật đấy. Bạn đừng cãi gì cho mệt. Mình quan sát rum mấy năm rồi, hôm nay thấy bạn nhiệt huyết nên mình kể bạn nghe cái này
    Hồi đó có bạn hỏi 6-7 bài lập trình tính thời gian, chạy thử trên máy mới i7 của thầy bạn đó. Có bạn A bảo rằng mấy bài đó không dễ ăn đâu. Sau đó có bạn B khác làm được 2-3 bài. Bạn A lập tức đem chạy bài đó trên máy đời cũ Pentium 4. Thời gian không qua còn đem lên cho mọi người xem. Còn tô màu gạch đích, chụp màn hình nữa. Lúc sau admin chạy thử trên máy cũng tàng tàng là vừa qua thời gian (nói gì máy mới i7). Không có gì để nói, sau đó bạn A quay sang dạy chủ thớt "những bài này rất cơ bản". Mà toàn nói những thứ đúng là "rất cơ bản" ai cũng biết. Bị chủ thớt nạt. Cuối cùng bạn A im luôn, không xin lỗi, không cám ơn gì cả. Da mặt cỡ nào đây trời!!! Mà bạn B cũng quá hiền, im lặng.
    Còn có bài khác, chủ thớt hỏi mấy câu. Có bạn trả lời được. Rồi tự nhiên có bạn khác vào làm bài đó. Mà hoàn toàn bỏ hết câu hỏi của chủ thớt chỉ giải theo ý mình, còn bảo sai đề. Giống bạn nói đó "con gà ghét nhau vì tiếng gáy".
    Qua bài "phương trình bậc 2" thì bạn thấy rồi, cần gì phải tranh hơn thua. Không xin lỗi, không cám ơn gì người ta. Ngay khi viết code, nhận xét 2 vòng lặp 10^5, rồi nói đến test là thể hiện ra trình độ. Bởi vậy chỉ nói và hay bắt bẻ thôi.

    Lập trình rất rộng. Cho dù biết lập trình mấy bài này cũng chưa hẳn lập trình web giỏi và ngược lại. Rum có những bạn rất giỏi, nhưng tài cần đức. Có tài mà không có đức, nó leo lên thì dân dưới này chết hết. Admin của rum hiền quá!
    Bạn có thể cho em xem cái bài chèo thuyền đó ở đâu k? Có cách CM luôn hả?

  14. Đã cảm ơn LanSG9x:


  15. #24
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 403392
    Bài gửi
    7

    Reply: Nhờ các bạn xem bài này giùm nên làm thế nào

    Trích Nguyên văn bởi LanSG9x Xem bài viết
    Bạn có thể cho em xem cái bài chèo thuyền đó ở đâu k? Có cách CM luôn hả?
    Đương nhiên là được, có cách CM luôn.
    HTML Code:
    http://page.mi.fu-berlin.de/rote/Papers/pdf/Crossing+the+bridge+at+night.pdf
    Bạn nghĩ tốt, biết được mình không làm được không có nghĩa rằng người khác không làm được. Mà em thiên vị, kêu anh tengiday mà không gọi anh tuan.huynh.

    @tengiday: Ông đổi rum, đổi nick mà phong cách vẫn không đổi. Không chịu làm bài nào cho hoàn thiện. Bao lâu nữa ông xong, nhỏ em chờ hơn 10 năm rồi nha.

Trang 2/3 Đầu 123 cuối