Buckshot Roulette
Xem PDFĐây là 1 bài Communication
\({\qquad \qquad\qquad \qquad \qquad\qquad \qquad \qquad\qquad \qquad \qquad}\)Buckshot Roulette
\({\qquad \qquad\qquad \qquad \qquad\qquad \qquad \qquad\qquad \qquad}\) \(1.\) \(là\ người\ chơi\ thứ\ nhất.\)
\({\qquad \qquad\qquad \qquad \qquad\qquad \qquad \qquad\qquad \qquad}\) \(2.\) \(là\ người\ chơi\ thứ\ hai.\)
\({\qquad \qquad\qquad \qquad \qquad\qquad \qquad \qquad\qquad \qquad}\) \(3.\) \(là\ Dealer.\)
Dealer điều khiển một khẩu súng gồm \(N\) viên đạn, trong đó có đúng \(L\) viên live và \(N-L\) viên blank.
Cả và đều bắt đầu với \(3\) HP. Dealer không có HP và không phải là một người chơi.
Ván đấu gồm tối đa \(R\) màn chơi. Mỗi màn chơi sử dụng đúng một khẩu súng.
\({\qquad}\) Luật chơi
Ở mỗi lượt, người chơi đang có lượt chọn một trong hai hành động:
SELF— bắn vào chính mình.OPPONENT— bắn vào người chơi còn lại.
Chiến thuật của cả hai người chơi được cố định và chỉ phụ thuộc vào số lượng đạn còn lại:
- Nếu \(x=0\), tức không còn viên live nào, người chơi phải chọn
SELF - Nếu \(y=0\), tức không còn viên blank nào, người chơi phải chọn
OPPONENT - Nếu \(x>0\) và \(y>0\), người chơi phải chọn
SELF
Trong đó:
- \(x\) là số viên live còn lại.
- \(y\) là số viên blank còn lại.
Sau khi người chơi chọn hành động, Dealer thực hiện phát bắn.
- Nếu viên đạn là live, mục tiêu của phát bắn mất \(1\) HP.
- Nếu viên đạn là blank, không người chơi nào mất HP.
- Nếu người chơi chọn
SELFvà viên đạn là blank, người đó được giữ lượt. - Trong mọi trường hợp khác, lượt chuyển sang người chơi còn lại.
- Sau mỗi phát bắn, viên đạn vừa sử dụng được lấy khỏi súng.
Ván đấu kết thúc ngay khi một người chơi có \(0\) HP.
Nếu cả hai người chơi vẫn còn sống sau khi sử dụng hết khẩu súng:
- Nếu đây là màn chơi thứ \(R\), Dealer thắng.
- Nếu đây chưa phải màn chơi thứ \(R\), một màn chơi mới bắt đầu.
- HP hiện tại của mỗi người chơi được giữ nguyên.
- Mỗi người chơi được cộng thêm \(3\) HP.
- Dealer nạp một khẩu súng mới có đúng \(L\) viên live và \(N-L\) viên blank.
- Dealer chọn thứ tự các viên đạn của khẩu súng mới.
- Lượt đầu tiên của màn chơi mới được xác định lại theo quy tắc người thách đấu ở dưới.
Dealer được phép chọn bất kỳ thứ tự nào cho từng khẩu súng, miễn số lượng đạn đúng quy định.
\({\qquad}\) Người thách đấu và lượt đầu
Input chứa hai tên người thách đấu theo thứ tự.
- Nếu chỉ có
thách đấu,được quyền chơi lượt đầu. - Nếu chỉ có
thách đấu,được quyền chơi lượt đầu. - Nếu cả hai cùng thách đấu, tức input là một trong hai thứ tự:
HUNGLVH JUST_COASTJUST_COAST HUNGLVH
thì Dealer là bên thực hiện phát đạn đầu tiên.
Trong trường hợp cả hai cùng thách đấu, Dealer không có HP và không được tính là mục tiêu. Dealer chỉ thực hiện phát đạn đầu tiên bằng cách chọn một trong hai người chơi làm mục tiêu. Sau phát đạn đó, lượt chuyển sang người chơi còn lại nếu viên đạn là live hoặc Dealer chọn mục tiêu đối phương; nếu phát đạn là blank và mục tiêu là chính người được xác định là người chơi của lượt đó, người đó được giữ lượt.
Để tránh trường hợp không xác định, khi Dealer là bên phát đạn đầu tiên, Dealer phải tuân theo cùng quy tắc hành động:
- Nếu \(x=0\), chọn
OPPONENT - Nếu \(y=0\), chọn
SELF - Nếu \(x>0\) và \(y>0\), chọn
SELF
Ở đây SELF và OPPONENT được hiểu theo người chơi mà Dealer đang thực hiện lượt thay cho.
\({\qquad}\) Lợi thế
Sau mỗi phát bắn, communication công bố người đang có lợi thế giữa hai người chơi:
- Nếu HP của lớn hơn HP của , gửi
HUNGLVH - Nếu HP của lớn hơn HP của , gửi
JUST_COAST - Nếu hai người có cùng HP, gửi
HUNGLVH
Thông tin lợi thế chỉ là thông tin quan sát và không ảnh hưởng đến chiến thuật, lượt chơi hoặc kết quả của ván đấu.
\({\qquad}\) Kết quả cuối cùng
- Nếu có \(0\) HP trước hoặc sau một phát bắn, thắng.
- Nếu có \(0\) HP trước hoặc sau một phát bắn, thắng.
- Nếu cả hai người chơi vẫn còn sống sau khi hoàn thành màn chơi thứ \(R\), Dealer thắng.
- Một phát bắn chỉ có một mục tiêu, do đó không thể có trường hợp cả hai người chơi cùng mất HP trong cùng một phát bắn.
Input
- Dòng đầu tiên chứa ba số nguyên \(N,L,R\)
- Dòng thứ hai chứa một hoặc hai chuỗi
A B, là tên của hai người thách đấu theo thứ tự. - \(A,B\) là hai chuỗi khác nhau trong tập:
HUNGLVHJUST_COAST
- Mỗi tên xuất hiện đúng một lần.
- Nếu chỉ một người thách đấu, communication sẽ sử dụng người đó làm người chơi đầu tiên.
- Nếu cả hai cùng thách đấu, communication biểu diễn trường hợp này bằng một trong hai thứ tự
HUNGLVH JUST_COASThoặcJUST_COAST HUNGLVHvà Dealer là bên phát đạn đầu tiên. - Thứ tự các viên đạn của khẩu súng đầu tiên không được cung cấp cho chương trình.
- Thứ tự các viên đạn của các khẩu súng tiếp theo cũng không được cung cấp cho chương trình.
Communication
- Ở đầu mỗi lượt của , communication gửi bốn số nguyên
a b x y, trong đó:- \(a\) là HP hiện tại của
- \(b\) là HP hiện tại của
- \(x\) là số viên live còn lại trong khẩu súng.
- \(y\) là số viên blank còn lại trong khẩu súng.
- phải in đúng một trong hai lệnh:
SELFOPPONENT
- Communication kiểm tra viên đạn hiện tại và trả về:
LIVEnếu viên đạn là live.BLANKnếu viên đạn là blank.
- Sau phát bắn, communication gửi lại trạng thái mới bằng bốn số nguyên
a b x y - Communication gửi người đang có lợi thế bằng một trong:
HUNGLVHJUST_COAST
- Nếu lượt thuộc về , communication tự thực hiện hành động của theo đúng chiến thuật đã cho.
- Sau phát bắn của , communication gửi:
LIVEhoặcBLANK;- bốn số nguyên
a b x y; HUNGLVHhoặcJUST_COAST
- Nếu chọn
SELFvà nhậnBLANK, tiếp tục lượt. - Trong mọi trường hợp khác, lượt chuyển về
- Nếu một người chơi có \(0\) HP, communication gửi kết quả cuối cùng và kết thúc.
- Nếu khẩu súng hết đạn trong khi cả hai người chơi vẫn còn sống:
- nếu đã hoàn thành màn chơi thứ \(R\), communication gửi
YOUTUBER_TWKvà kết thúc; - nếu chưa hoàn thành màn chơi thứ \(R\), communication cộng \(3\) HP cho mỗi người chơi, nạp khẩu súng mới và bắt đầu màn chơi tiếp theo.
- nếu đã hoàn thành màn chơi thứ \(R\), communication gửi
- Ở đầu một màn chơi mới, lượt được xác định theo quy tắc người thách đấu đã nêu.
- Dealer phải đảm bảo mỗi khẩu súng có đúng \(L\) viên live và \(N-L\) viên blank.
- Dealer được phép chọn thứ tự đạn dựa trên toàn bộ lịch sử giao tiếp.
- Sau mỗi lần chương trình in
SELFhoặcOPPONENT, chương trình phảiflushoutput.
Constraints
- \(2\le N\le10^6\).
- \(1\le L<N\).
- \(1\le R\le10^6\).
- Cả và bắt đầu với \(3\) HP.
- Mỗi khẩu súng có đúng \(L\) viên live và \(N-L\) viên blank.
- Khi bắt đầu một màn chơi mới, mỗi người chơi được cộng thêm \(3\) HP vào HP hiện tại.
- Tổng số phát bắn trong toàn bộ ván đấu không vượt quá \(10^6\).
- Dealer luôn tuân thủ đầy đủ giao thức và các luật của đề bài.
Example
Example 1
Input
6 3 1
HUNGLVH
Communication
3 3 3 3
SELF
LIVE
2 3 2 3
JUST_COAST
2 3 2 3
SELF
LIVE
2 2 1 3
HUNGLVH
2 2 1 3
SELF
BLANK
2 2 1 2
HUNGLVH
2 2 1 2
SELF
LIVE
1 2 0 2
JUST_COAST
1 2 0 2
OPPONENT
BLANK
1 2 0 1
JUST_COAST
1 2 0 1
SELF
BLANK
1 2 0 0
JUST_COAST
1 2 0 0
OPPONENT
LIVE
1 1 0 0
HUNGLVH
HUNGLVH
Note
- là người thách đấu nên được đi đầu.
- Hai viên live đầu tiên lần lượt làm HP của hai người thành
2 - 2 - Sau viên live thứ ba, HP thành
1 - 2, lợi thế chuyển sang - Viên live cuối bắn vào , đưa HP về
1 - 1 - Khẩu súng hết đạn và cả hai còn sống, nên đây là chiến thắng của sau màn chơi thứ
R
Example 2
Input
6 3 1
JUST_COAST
Communication
3 3 3 3
SELF
LIVE
3 2 2 3
HUNGLVH
3 2 2 3
SELF
LIVE
2 2 1 3
HUNGLVH
2 2 1 3
SELF
BLANK
2 2 1 2
HUNGLVH
2 2 1 2
SELF
LIVE
2 1 0 2
JUST_COAST
2 1 0 2
OPPONENT
BLANK
2 1 0 1
JUST_COAST
2 1 0 1
SELF
BLANK
2 1 0 0
JUST_COAST
2 1 0 0
OPPONENT
LIVE
2 0 0 0
JUST_COAST
JUST_COAST
Note
- là người thách đấu nên được đi đầu.
- Sau hai viên live đầu, HP là
2 - 2, nên lợi thế làHUNGLVH - Viên live thứ ba làm HP thành
2 - 1, lợi thế chuyển sang - Viên live cuối hạ HP của xuống
0 - Vì có
0HP, thắng.
Example 3
Input
4 2 1
HUNGLVH JUST_COAST
Communication
3 3 2 2
LIVE
2 3 1 2
JUST_COAST
2 3 1 2
SELF
BLANK
2 3 1 1
JUST_COAST
2 3 1 1
SELF
LIVE
2 2 0 1
HUNGLVH
2 2 0 1
SELF
BLANK
2 2 0 0
HUNGLVH
YOUTUBER_TWK
Note
- Cả hai cùng thách đấu nên Dealer phát đạn đầu tiên.
- Dealer phải chọn
SELF, tức bắn vào - Sau viên live đầu, HP là
2 - 3, lợi thế làJUST_COAST - nhận blank nên giữ lượt.
- Viên live tiếp theo làm HP thành
2 - 2, lợi thế chuyển vềHUNGLVH - Khẩu súng hết đạn, cả hai còn sống nên Dealer thắng.
Scoring
- Subtask 1 (20%): \(N\le10^4\), \(R\le10^4\)
- Subtask 2 (30%): \(N\le10^5\), \(R\le10^5\)
- Subtask 3 (50%): Không ràng buộc gì thêm.
Bình luận (5)