QOJ.ac

QOJ

Time Limit: 20 s Memory Limit: 512 MB Total points: 100

#850. שוב מרחק עריכה

Statistics

האם שמעתם פעם על בעיית מרחק העריכה? בהינתן שתי מחרוזות של אותיות אנגליות קטנות, עליכם לקבוע את מספר הפעולות המינימלי הנדרש כדי להפוך את הראשונה לשנייה. פעולה יחידה יכולה להיות אחת מאלה:

  • הכנסת תו לסדרה, בכל מקום שהוא,
  • מחיקת תו כלשהו מהסדרה,
  • החלפת תו בתו אחר.

כולם באוניברסיטה שלנו אוהבים מאוד את הבעיה הזו — אולי קצת יותר מדי — ולכן החלטנו ליצור בעיה קלה יותר! נתונות לכם שתי מחרוזות $s=s_1\ldots s_n$, $t=t_1\ldots t_m$ ומספר שלם $k$. קבעו אם מרחק העריכה בין המחרוזות קטן מ-$k$ או שווה לו. אם כן, עליכם גם לספק סדרה כלשהי של מספר הפעולות הקטן ביותר האפשרי כדי להפוך את המחרוזת הראשונה לשנייה.

קלט

השורה הראשונה של הקלט מכילה את מספר מקרי הבדיקה $z$ ($1 \le z \le 100$). לאחר מכן מופיעים תיאורי מקרי הבדיקה.

השורה הראשונה של כל מקרה בדיקה מכילה שלושה מספרים שלמים $n,m,k$ ($1 \le n,m \le 1\,000\,000$, $0 \le k \le 1000$) — אורכי המחרוזות והפרמטר מתיאור הבעיה.

השורה השנייה מכילה מחרוזת באורך $n$ של אותיות אנגליות קטנות — המחרוזת $s$ מתיאור הבעיה.

השורה השלישית מכילה מחרוזת באורך $m$ של אותיות אנגליות קטנות — המחרוזת $t$ מתיאור הבעיה.

האורך הכולל של כל המחרוזות בכל מקרי הבדיקה לא יעלה על $10^7$.

פלט

לכל מקרה בדיקה, אם מרחק העריכה גדול מ-$k$, הדפיסו שורה יחידה המכילה את המילה NO. אחרת השורה הראשונה צריכה להכיל את המילה YES, והשורות הבאות צריכות לתאר את התשובה באופן הבא:

בשורה השנייה הדפיסו את מספר הפעולות המינימלי $r$ הנדרש כדי להפוך את $s$ ל-$t$. ב-$r$ השורות הבאות הדפיסו את הפעולות, אחת בכל שורה.

  • כדי להכניס אות אנגלית קטנה $c$ לסדרה בגודל $w$ במקום $p$ ($1 \le p \le w+1$), הדפיסו INSERT p c.
  • כדי למחוק תו ממקום $p$ בסדרה בגודל $w$ ($1 \le p \le w$), הדפיסו DELETE p.
  • כדי להחליף תו במקום $p$ בסדרה בגודל $w$ ($1 \le p \le w$) באות אנגלית קטנה $c$, הדפיסו REPLACE p c.

דוגמאות

קלט 1

2
3 4 3
kot
plot
5 7 3
zycie
porazka

פלט 1

YES
2
REPLACE 1 l
INSERT 1 p
NO

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#537Editorial Open集训队作业 解题报告 by 李秉霈Qingyu Download
#180EditorialOpen题解jianglyView

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.