Problem 1: Video Game Combos [Neal Wu, 2012]Bessie is playing a video  dịch - Problem 1: Video Game Combos [Neal Wu, 2012]Bessie is playing a video  Việt làm thế nào để nói

Problem 1: Video Game Combos [Neal

Problem 1: Video Game Combos [Neal Wu, 2012]
Bessie is playing a video game! In the game, the three letters 'A', 'B',and 'C' are the only valid buttons. Bessie may press the buttons in any order she likes; however, there are only N distinct combos possible (1
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Vấn đề 1: trò chơi Video combo [Neal Wu, 2012]Bessie đang chơi một trò chơi video! Trong game, ba chữ cái 'A', 'B' và 'C' có các nút chỉ có giá trị. Bessie có thể bấm các nút trong bất kỳ thứ tự nào cô thích; Tuy nhiên, có những chỉ N combo khác biệt có thể (1 < = N < = 20). Combo tôi đại diện như là một chuỗi S_i có chiều dài từ 1 đến 15 và chứa chỉ các ký tự 'A', 'B' và 'C'.Bất cứ khi nào Bessie ép một sự kết hợp của các chữ cái phù hợp với với một combo, cô được một trong những điểm cho các kết hợp. Combo có thể trùng với nhau hoặc thậm chí hoàn thành cùng một lúc! Ví dụ: nếu N = 3 và ba thể combo "ABA", "CB" và "ABACB", và Bessie ép "ABACB", cô ấy sẽ kết thúc với 3 điểm. Bessie có thể điểm số điểm cho một combo đơn nhiều hơn một lần.Bessie tất nhiên muốn để kiếm được điểm càng nhanh càng tốt. Nếu shepresses chính xác K nút (1 < = K < = 1.000), số lượng điểm cô có thể kiếm được tối đa là gì?Vấn ĐỀ TÊN: comboĐỊNH DẠNG ĐẦU VÀO:* Dòng 1: Ngăn cách không gian hai số nguyên: N và K.* Dòng 2..N + 1: dòng i + 1 có chứa chỉ là chuỗi S_i, đại diện cho combo tôi.MẪU các đầu VÀO (file combos.in):3 7ABACBABACBĐỊNH DẠNG ĐẦU RA:* Dòng 1: Một số nguyên đơn, số điểm Bessie, tối đa có thể có được.MẪU đầu RA (file combos.out):4ĐẦU RA THÔNG TIN CHI TIẾT:Trình tự tối ưu của các nút trong trường hợp này là ABACBCB, trong đó cung cấp cho 4điểm--1 từ ABA, 1 từ ABACB và 2 từ CB. Giải phápGiải pháp các ghi chú (Richard Peng): Một giải pháp rõ ràng đầu tiên sẽ là một trong những cố gắng tất cả các chuỗi 3K của chiều dài K. xem xét sửa đổi nhỏ nhỏ sau đây của nó: thay vì đếm số lượng các điểm cuối, khi chúng tôi liệt kê các ký tự tại i, chúng tôi đếm số lượng các điểm thu được bằng cách combo kết thúc ở vị trí tôi.Sau đó, vì các combo có chiều dài nhất L ≤ 15, chúng tôi chỉ cần theo dõi cuối 15 ký tự trong trình tự. Do đó nhà nước của các giá trị 15 trước trong tiến trình duy nhất xác định bang liệt kê của chúng tôi, cho một thuật toán thời gian O(3LLNK).Tuy nhiên, lưu ý rằng chúng tôi có thể làm tốt hơn. Giả sử chúng ta đang ở vị trí tôi và có một số vị trí j < tôi như vậy mà các chuỗi ký tự giữa các vị trí j và tôi không phải là một xâu con của bất kỳ combo. Sau đó có thể không có bất kỳ kết hợp bắt đầu trước khi vị trí j kết thúc ở vị trí sau khi tôi.Hence, we only need to track the part of the sequence that's a substring of one of the combos. More precisely, we identify the earliest j, or the longest suffix of the sequence so far that's a substring of some combo. Since there are only O(NL2) possible substrings of one of the combos, this immediately brings the number of states to something manageable. Since each state only be modified by adding one of 3 characters (A, B, C) to it, the transitions to position i + 1 can also be precomputed in O(N2L4) time naively. In total this gives a O(N2L4 + NL2K) algorithm, which is sufficient for full points. Note however a key detail is that multiple combos can end at position i, making it necessary to precompute a score for each state as well.Several further improvements are possible, with the most immediate being that instead of considering substrings of combos, we consider only prefixes. This is because if a combo ends after i, it must have started somewhere earlier. Once again, special care is needed to ensure that the state tracks the longest suffix that's a prefix of some combo. This gives a O(N2L2+NLK) time algorithm.Here is an implementation of a slightly different algorithm from problem author Neal Wu, in which he considers only states where one of the combos is matched exactly at position i, with a bit more work done computing transitions.#include #include #include #include using namespace std;FILE *input = fopen ("combos.in", "r"), *output = fopen ("combos.out", "w");const int N_MAX = 105, LEN_MAX = 105, K_MAX = 1005;int N, K, combo_len[N_MAX];char combos[N_MAX][LEN_MAX];int contains[N_MAX][LEN_MAX], attach[N_MAX][N_MAX];int dp[K_MAX][N_MAX];bool match(int a, int b, int offset){ int a_len = combo_len[a], b_len = combo_len[b]; assert(offset <= b_len && b_len - offset <= a_len); int a_start = a_len - (b_len - offset); return strncmp(combos[a] + a_start, combos[b], b_len - offset) == 0;}int main(){ fscanf(input, "%d %d", &N, &K); for (int i = 0; i < N; i++) { fscanf(input, "%s", combos[i]); combo_len[i] = strlen(combos[i]); } memset(contains, 0, sizeof(contains)); for (int i = 0; i < N; i++) { contains[i][0] = 0; for (int end = combo_len[i], offset = 0; end >= 0; end--, offset++) { int occur = 0; for (int j = 0; j < N; j++) if (end >= combo_len[j] && strncmp(combos[i] + end - combo_len[j], combos[j], combo_len[j]) == 0) occur++; conta
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Vấn đề 1: Trò chơi Combos [Neal Wu, 2012]
Bessie đang chơi một trò chơi video! Trong trò chơi, ba chữ 'A', 'B', và 'C' là các nút chỉ có giá trị. Bessie có thể bấm các nút theo thứ tự nào cô ấy thích; Tuy nhiên, chỉ có N combo riêng biệt có thể (1 <= N <= 20). Combo i được biểu diễn như là một chuỗi S_i có chiều dài từ 1 đến 15 và chỉ chứa các chữ cái 'A', 'B', và 'C'.
Bất cứ khi nào Bessie nhấn một sự kết hợp của các chữ cái phù hợp với một combo, cô nhận được một điểm cho combo. Combo có thể chồng chéo với nhau hoặc thậm chí hoàn thành cùng một lúc! Ví dụ nếu N = 3 và ba combo có thể là "ABA", "CB", và "ABACB", và Bessie ép "ABACB", cô sẽ kết thúc với 3 điểm. Bessie có thể ghi điểm cho một combo đơn nhiều hơn một lần.
Bessie tất nhiên muốn kiếm được điểm càng nhanh càng tốt. Nếu shepresses đúng K nút (1 <= K <= 1000), số điểm tối đa, cô có thể kiếm được là gì?

VẤN ĐỀ TÊN: combo

VÀO FORMAT:

* Line 1: Hai số nguyên cách ly: N và K.

* Dòng 2..N + 1: Dòng i + 1 chứa chỉ có chuỗi S_i, đại diện
kết hợp i.

MẪU INPUT (tập tin combos.in):

3 7
ABA
CB
ABACB

OUTPUT FORMAT:

* Dòng 1: Một số nguyên, số điểm tối đa Bessie có thể
có được.

MẪU OUTPUT (file combos.out):

4

OUTPUT CHI TIẾT:

Trình tự tối ưu của các nút trong trường hợp này là ABACBCB,
trong đó cung cấp 4 điểm - 1 từ ABA, 1 từ ABACB, và 2 từ CB.

Giải pháp
Giải pháp Ghi chú (Richard Peng): Một giải pháp đầu tiên rõ ràng sẽ là một trong những cố gắng tất cả 3K chuỗi dài K. Hãy xem xét những thay đổi nhỏ nhỏ sau đây của nó: thay vì đếm số lượng các điểm cuối cùng, khi chúng tôi liệt kê các ký tự tại i, chúng tôi đếm số điểm thu được bằng cách combo kết thúc ở vị trí i.
Sau đó, từ những đòn combo dài tối đa L ≤ 15, chúng ta chỉ cần theo dõi 15 ký tự cuối cùng trong chuỗi. Do đó, nhà nước của 15 giá trị trước đó trong chuỗi duy nhất xác định trạng thái của điều tra của chúng tôi, đưa ra một thuật toán thời gian O (3LLNK).
Tuy nhiên, lưu ý rằng chúng tôi có thể làm tốt hơn. Giả sử chúng ta đang ở vị trí i và có một số vị trí j < i như rằng chuỗi các ký tự giữa các vị trí j và tôi không phải là một chuỗi con của bất kỳ combo. Sau đó, không thể có bất kỳ kết hợp bắt đầu trước khi vị trí j mà kết thúc ở vị trí sau tôi.
Do đó, chúng ta chỉ cần theo dõi phần của chuỗi đó là một chuỗi con của một trong những đòn combo. Chính xác hơn, chúng tôi xác định j sớm nhất, hoặc hậu tố dài nhất của dãy cho đến nay đó là một chuỗi con của một số combo. Vì chỉ có chuỗi con O (NL2) có thể có của một trong những đòn combo, điều này ngay lập tức mang lại số lượng của các nước được một cái gì đó dễ quản lý. Vì mỗi nhà nước chỉ được sửa đổi bằng cách thêm vào một trong 3 nhân vật (A, B, C) với nó, quá trình chuyển đổi vị trí i + 1 cũng có thể được precomputed trong O (N2L4) thời gian ngây thơ. Trong tổng số này cho một O (N2L4 + NL2K) thuật toán, mà là đủ cho toàn bộ số điểm. Tuy nhiên lưu ý một chi tiết quan trọng là nhiều combo có thể kết thúc ở vị trí tôi, làm cho nó cần thiết để precompute một số điểm cho mỗi tiểu bang là tốt.
Một số cải tiến hơn nữa là có thể, với các mắt nhất mà thay vì xem xét các chuỗi con của combo, chúng tôi chỉ xem xét các tiền tố. Điều này là bởi vì nếu một combo kết thúc sau khi tôi, nó phải bắt đầu ở đâu đó trước đây. Một lần nữa, chăm sóc đặc biệt là cần thiết để đảm bảo rằng nhà nước theo dõi hậu tố dài nhất đó là một tiền tố của một số combo. Điều này cho phép một thuật toán thời gian O (N2L2 + NLK).
Dưới đây là một thực hiện một thuật toán hơi khác nhau từ vấn đề tác giả Neal Wu, trong đó ông chỉ xem xét các quốc gia nơi mà một trong những đòn combo là lần xuất hiện chính xác ở vị trí i, với một chút công việc thực hiện quá trình chuyển đổi máy tính.

#include làm cho nó cần thiết để precompute một số điểm cho mỗi tiểu bang là tốt. Một số cải tiến hơn nữa là có thể, với các mắt nhất mà thay vì xem xét các chuỗi con của combo, chúng tôi chỉ xem xét các tiền tố. Điều này là bởi vì nếu một combo kết thúc sau khi tôi, nó phải bắt đầu ở đâu đó trước đây. Một lần nữa, chăm sóc đặc biệt là cần thiết để đảm bảo rằng nhà nước theo dõi hậu tố dài nhất đó là một tiền tố của một số combo. Điều này cho phép một thuật toán thời gian O (N2L2 + NLK). Dưới đây là một thực hiện một thuật toán hơi khác nhau từ vấn đề tác giả Neal Wu, trong đó ông chỉ xem xét các quốc gia nơi mà một trong những đòn combo là lần xuất hiện chính xác ở vị trí i, với một chút công việc thực hiện quá trình chuyển đổi máy tính. #include làm cho nó cần thiết để precompute một số điểm cho mỗi tiểu bang là tốt. Một số cải tiến hơn nữa là có thể, với các mắt nhất mà thay vì xem xét các chuỗi con của combo, chúng tôi chỉ xem xét các tiền tố. Điều này là bởi vì nếu một combo kết thúc sau khi tôi, nó phải bắt đầu ở đâu đó trước đây. Một lần nữa, chăm sóc đặc biệt là cần thiết để đảm bảo rằng nhà nước theo dõi hậu tố dài nhất đó là một tiền tố của một số combo. Điều này cho phép một thuật toán thời gian O (N2L2 + NLK). Dưới đây là một thực hiện một thuật toán hơi khác nhau từ vấn đề tác giả Neal Wu, trong đó ông chỉ xem xét các quốc gia nơi mà một trong những đòn combo là lần xuất hiện chính xác ở vị trí i, với một chút công việc thực hiện quá trình chuyển đổi máy tính. #include với ngay lập tức nhất là thay vì xem xét các chuỗi con của combo, chúng tôi chỉ xem xét các tiền tố. Điều này là bởi vì nếu một combo kết thúc sau khi tôi, nó phải bắt đầu ở đâu đó trước đây. Một lần nữa, chăm sóc đặc biệt là cần thiết để đảm bảo rằng nhà nước theo dõi hậu tố dài nhất đó là một tiền tố của một số combo. Điều này cho phép một thuật toán thời gian O (N2L2 + NLK). Dưới đây là một thực hiện một thuật toán hơi khác nhau từ vấn đề tác giả Neal Wu, trong đó ông chỉ xem xét các quốc gia nơi mà một trong những đòn combo là lần xuất hiện chính xác ở vị trí i, với một chút công việc thực hiện quá trình chuyển đổi máy tính. #include với ngay lập tức nhất là thay vì xem xét các chuỗi con của combo, chúng tôi chỉ xem xét các tiền tố. Điều này là bởi vì nếu một combo kết thúc sau khi tôi, nó phải bắt đầu ở đâu đó trước đây. Một lần nữa, chăm sóc đặc biệt là cần thiết để đảm bảo rằng nhà nước theo dõi hậu tố dài nhất đó là một tiền tố của một số combo. Điều này cho phép một thuật toán thời gian O (N2L2 + NLK). Dưới đây là một thực hiện một thuật toán hơi khác nhau từ vấn đề tác giả Neal Wu, trong đó ông chỉ xem xét các quốc gia nơi mà một trong những đòn combo là lần xuất hiện chính xác ở vị trí i, với một chút công việc thực hiện quá trình chuyển đổi máy tính. #include chăm sóc đặc biệt là cần thiết để đảm bảo rằng nhà nước theo dõi hậu tố dài nhất đó là một tiền tố của một số combo. Điều này cho phép một thuật toán thời gian O (N2L2 + NLK). Dưới đây là một thực hiện một thuật toán hơi khác nhau từ vấn đề tác giả Neal Wu, trong đó ông chỉ xem xét các quốc gia nơi mà một trong những đòn combo là lần xuất hiện chính xác ở vị trí i, với một chút công việc thực hiện quá trình chuyển đổi máy tính. #include chăm sóc đặc biệt là cần thiết để đảm bảo rằng nhà nước theo dõi hậu tố dài nhất đó là một tiền tố của một số combo. Điều này cho phép một thuật toán thời gian O (N2L2 + NLK). Dưới đây là một thực hiện một thuật toán hơi khác nhau từ vấn đề tác giả Neal Wu, trong đó ông chỉ xem xét các quốc gia nơi mà một trong những đòn combo là lần xuất hiện chính xác ở vị trí i, với một chút công việc thực hiện quá trình chuyển đổi máy tính. #include
#include
#include
#include
using namespace std;

FILE * = input fopen ( "combos.in", "r"), * = Sản lượng fopen ( "combos.out", "w");

const int N_MAX = 105, LEN_MAX = 105, K_MAX = 1005;

int N, K, combo_len [N_MAX];
combo char [N_MAX] [LEN_MAX];
int chứa [N_MAX] [LEN_MAX], đính kèm [N_MAX] [N_MAX];
int dp [K_MAX] [N_MAX];

trận bool (int a, int b, int offset)
{
int a_len = combo_len [a], b_len = combo_len [b];
khẳng định (bù đắp <= b_len && b_len - bù đắp <= a_len);
int a_start = a_len - (b_len - offset);
trở strncmp (combo [a] + a_start, combo [b], b_len - offset) == 0;
}

Int main ()
{
fscanf (đầu vào, "% d% d", & N, K &);

for (int i = 0; i <N;
i ++) {
fscanf (đầu vào, "% s", combo [i]);
combo_len [i] = strlen (combo [i]);
}

Memset (chứa, 0, sizeof (chứa));

for (int i = 0; i <N; i ++)
{
chứa [i] [0] = 0;

for (int cuối = combo_len [i], offset = 0; cuối> = 0; end--, bù đắp ++)
{
int xảy ra = 0;

for (int j = 0; j <N; j ++)
if (cuối> = combo_len [j] && strncmp (combo [i] + end - combo_len [j], combo [j], combo_len [j]) == 0 )
xảy ra ++;

conta i ++) { chứa [i] [0] = 0; for (int cuối = combo_len [i], offset = 0; cuối> = 0; end--, bù đắp ++) { int xảy ra = 0; for (int j = 0; j <N; j ++) if (cuối> = combo_len [j] && strncmp (combo [i] + end - combo_len [j], combo [j], combo_len [j]) == 0 ) xảy ra ++; conta i ++) { chứa [i] [0] = 0; for (int cuối = combo_len [i], offset = 0; cuối> = 0; end--, bù đắp ++) { int xảy ra = 0; for (int j = 0; j <N; j ++) if (cuối> = combo_len [j] && strncmp (combo [i] + end - combo_len [j], combo [j], combo_len [j]) == 0 ) xảy ra ++; conta
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: