mercredi 27 novembre 2024

implement public static int ComputeDayGains(int nbSeats, List payingGuests, List guestMovements)

 

enC#, given what each guest is ready to pay, you have to compute the restaurant's gains for the day: at the beginning of the day the restaurant is emplty; a guest arrives, finds a seat, eats, pays and then leaves; there are only nbSeats seats avaiable, guests can only eat and pay when they can be seated; a quest which enters the restaurant and cannot find a seat waits in line until a seat is made available or until he/she gets bored and leaves; a guest may come several times during the day, in that case, he/she will pay at most once. implement public static int ComputeDayGains(int nbSeats, List<int> payingGuests, List<int> guestMovements) which returns the gains for the day: list payingGuests gives what guests are ready to pay, the list guestMovements gives in order the arrivals and departures of guests. the first time you see an id, it indicates an arrival, the secondes time you see the same id, it indic a departure. an arrival is always followed later in the day by a departure. the giest indexes are 0-based, all the integers in guestMovements are between 0 and number of guests - 1





public static int ComputeDayGains(int nbSeats, List<int> payingGuests, List<int> guestMovements) {
        // Write your code here
        // To debug: Console.Error.WriteLine("Debug messages...");
         HashSet<int> paidGuests = new HashSet<int>();
         Queue<int> waitingGuests = new Queue<int>();
         int currentSeatsOccupied = 0;
         int totalGains = 0;

         foreach(int id in guestMovements){
            if(waitingGuests.Contains(id) ){
                waitingGuests = new Queue<int>(waitingGuests.Where(x => x != id));
                currentSeatsOccupied--;
            }
            else{
                if(currentSeatsOccupied < nbSeats){
                    currentSeatsOccupied++;
                    if(!paidGuests.Contains(id)){
                        totalGains += payingGuests[id];
                        paidGuests.Add(id);
                    }
                }
                else{
                    waitingGuests.Enqueue(id);
                }
            }
         
         }
       
        return totalGains;

    }

commande de macarons: public static int ComputeTotalPrice(float unitPrice, string[] macarons)

 ecrire un programe calcul le prix d'une commande de macarons. Chque macaron a le meme prix unitaire(donne en input) chaque macaron a une saveur spécifique. Il existe au max 5 saveur différents parmi tous les macarons. Une commande comprend un ou plusieurs lots. Un lot peut contenir jusqua 5 macarons mais ne peut pas contenir des macarons de meme saveur. cherche toujours a remplir les lots de 5 au maximum. L'ordre des macaron dans un lot est sans incidence, et l'ordre des lots entre eux est également sans incidence. reduction en fonction du nombre de saveur diff par lot: 2 saveurs diff dans lot = -10% sur le prix du lot; 3 saveurs diff = -20%; 4 saveur diff = -30%; 5 saveurs diff = -40% sur le prix du lot. Implementer function public static int ComputeTotalPrice(float unitPrice, string[] macarons) , prend en parametres unitPrice, le prix d'un macaron, et macarons est un table de chaines de carateres representant les differentes saveurs. Retourne le prix total de la commande sous forme d'un entier arrondi à l'entier inférieur



using System;

using System.Collections.Generic;

using System.Linq;


public class Program

{

    public static int ComputeTotalPrice(float unitPrice, string[] macarons)

    {

        // Comptage des saveurs de macarons

        Dictionary<string, int> flavorCount = new Dictionary<string, int>();

        foreach (string macaron in macarons)

        {

            if (flavorCount.ContainsKey(macaron))

                flavorCount[macaron]++;

            else

                flavorCount[macaron] = 1;

        }


        // Créer des lots en maximisant le nombre de saveurs distinctes

        List<List<string>> lots = new List<List<string>>();

        

        // Continuer à remplir les lots tant qu'il reste des macarons

        while (flavorCount.Values.Any(count => count > 0))

        {

            List<string> currentLot = new List<string>();


            // Essayer de remplir le lot avec des saveurs différentes

            foreach (var flavor in flavorCount.Keys.ToList())

            {

                if (currentLot.Count < 5 && flavorCount[flavor] > 0)

                {

                    currentLot.Add(flavor);

                    flavorCount[flavor]--;

                }

                if (currentLot.Count == 5) break;  // Un lot ne peut contenir plus de 5 macarons

            }


            lots.Add(currentLot); // Ajouter le lot rempli à la liste des lots

        }


        // Calculer le prix total

        float totalPrice = 0;

        foreach (var lot in lots)

        {

            int uniqueFlavorsCount = lot.Distinct().Count(); // Nombre de saveurs uniques dans le lot

            float lotPrice = unitPrice * lot.Count; // Prix sans réduction pour le lot


            // Appliquer la réduction en fonction du nombre de saveurs différentes dans le lot

            if (uniqueFlavorsCount == 2)

                lotPrice *= 0.9f; // 10% de réduction

            else if (uniqueFlavorsCount == 3)

                lotPrice *= 0.8f; // 20% de réduction

            else if (uniqueFlavorsCount == 4)

                lotPrice *= 0.7f; // 30% de réduction

            else if (uniqueFlavorsCount == 5)

                lotPrice *= 0.6f; // 40% de réduction


            totalPrice += lotPrice;

        }


        // Retourner le prix total arrondi à l'entier inférieur

        return (int)Math.Floor(totalPrice);

    }


    public static void Main()

    {

        // Exemple d'utilisation

        float unitPrice = 2.5f; // Prix unitaire d'un macaron

        string[] macarons = { "vanilla", "chocolate", "strawberry", "vanilla", "chocolate", "raspberry", "lemon", "vanilla" };


        int totalPrice = ComputeTotalPrice(unitPrice, macarons);

        Console.WriteLine($"Le prix total de la commande est : {totalPrice} €");

    }

}


public static string Decode(List words, string message)

 en c#, implementer function public static string Decode(List<string> words, string message) tous les mots qu'ils connaissent sont contenus dans list predefinie. words est une liste de chaine de carateres contenant des mots connus (max: 20) toutes les lettre sont en miniscules, sans accents. message est une chaine de caratere contenant le message codé. Toutes les lettre sont aussi en minucules, sans accents. La methode doit return une chaine de caratere contenant le message décodé




using System;

using System.Collections.Generic;


public class Program

{

    // Fonction pour vérifier si deux mots sont similaires (ex: mélangés)

    public static bool AreWordsSimilar(string word1, string word2)

    {

        // Si la longueur des deux mots est différente, ils ne sont pas similaires

        if (word1.Length != word2.Length)

            return false;


        // Vérification que les lettres des deux mots sont les mêmes (indépendamment de l'ordre)

        var word1Array = word1.ToCharArray();

        var word2Array = word2.ToCharArray();

        Array.Sort(word1Array);

        Array.Sort(word2Array);


        return new string(word1Array) == new string(word2Array);

    }


    public static string Decode(List<string> words, string message)

    {

        string decodedMessage = "";

        int i = 0;


        // Parcourir le message codé caractère par caractère

        while (i < message.Length)

        {

            bool foundMatch = false;


            // Vérifier les mots connus dans la liste

            foreach (var word in words)

            {

                // Si le mot correspond à une sous-chaîne du message à partir de la position i

                if (i + word.Length <= message.Length && AreWordsSimilar(message.Substring(i, word.Length), word))

                {

                    decodedMessage += word; // Ajouter le mot trouvé au message décodé

                    i += word.Length; // Avancer l'index de i après le mot décodé

                    foundMatch = true;

                    break; // Sortir de la boucle dès qu'un mot est trouvé

                }

            }


            // Si aucun mot n'est trouvé, ajouter le caractère actuel du message

            if (!foundMatch)

            {

                decodedMessage += message[i];

                i++; // Passer au caractère suivant

            }

        }


        return decodedMessage;

    }


    public static void Main()

    {

        // Liste des mots connus

        List<string> knownWords = new List<string> { "ball", "funny", "hello", "is", "message", "strawberry", "this" };


        // Message codé à décoder

        string message = "hlelo tihs masegse is fnnuy";


        // Décodage du message

        string decodedMessage = Decode(knownWords, message);

        Console.WriteLine($"Message décodé : {decodedMessage}");

    }

}


public static bool IsOnEvenPosition(List numbers, int value)

 en C# ecrire function public static bool IsOnEvenPosition(List<int> numbers, int value) revoyer true si value est contenu dans la liste numbers à un index paire, value peut etre present à plusieur index paire, auquel cas la fonction doit egelement revoyer true. Si value n'est present à aucun index pair, return false



using System;

using System.Collections.Generic;


public class Program

{

    public static bool IsOnEvenPosition(List<int> numbers, int value)

    {

        // Parcours de la liste avec un index

        for (int i = 0; i < numbers.Count; i++)

        {

            // Vérifier si l'index est pair et si la valeur correspond

            if (i % 2 == 0 && numbers[i] == value)

            {

                return true; // Si la valeur est trouvée à un index pair, retourner true

            }

        }


        return false; // Retourner false si la valeur n'est pas trouvée à un index pair

    }


    public static void Main()

    {

        List<int> numbers = new List<int> { 1, 3, 2, 4, 5, 6 };

        int value = 2;

        

        bool result = IsOnEvenPosition(numbers, value);

        Console.WriteLine($"La valeur {value} est-elle présente à un index pair ? {result}");


        value = 3;

        result = IsOnEvenPosition(numbers, value);

        Console.WriteLine($"La valeur {value} est-elle présente à un index pair ? {result}");

    }

}


mardi 26 novembre 2024

Implementer public static char ScanChar(string s) pour AsciiArt.PrintChar

 AsciiArt.PrintChar permet d'afficher un et un seul caractere ASCII de A a Z (inclusif) sur plusieres lignes et colonnes. Maintenant on souhaite faire l'operation dans l'autre sens: obtenir un caractere à partir de sa representation grapique. Implementer la methode ScanChar(string s) afin qu'elle retourne le caractere associé à la representation graphique fournie par AsciiArt.PrintChar(char c) . Si s ne correspond pas à un caratere entre A et Z, alors ScanChar devra retourner le caratere '?'


 public static char ScanChar(string s)
    {
        for (char c = 'A'; c <= 'Z'; c++)
        {            
            string asciiArt = AsciiArt.PrintChar(c);
            if (asciiArt == s)
            {
                return c;
            }
        }
       
        return '?';
       
    }

Implementer public static List MergeData(List dataStrings)

 en c# vos donnees sont organisees en une liste de chaine de caratere. Chaune d'entre elles correspond a une seule personne et est organisee en paires clé/valeur. un exemple: Name = John, Age=15;Likes=Apples; et Name=Marry; Age=16;Likes=Baked potatoes;Team=Basketball; Vous avez certaines garanties sur les donnees d'entree: Chaque chaine contiendra toujours le champ Name; chque personne peut etre identifiee de maniere unique par le champ Name, s'il y a plusieurs lignes avec le meme valeur de Name, celles ci concernent toutes la meme personne; il peut y avoir des informations redondantes entre les chaine ou meme a l'interieur d'une seule chaine, mais elles ne se contrediront jamais; Les cles et les valeurs peuvent contenir n'importe quel caratere ASCII imprimable, à l'exception de = et de ; , qui sont utilises comme separateurs; Les chaines ne contiennent pas de saut de ligne \r ou\n. Fusionner les donnees et produire une liste regroupant toutes les informations relatives à chaque personne . Ces donnee etre formatee de la maniere suisvante: Toutes les personnes sont triees lexicographiquement par leur champ Name; Le premier champ pour chaque personne est Name, puis tous les autre champs sont tries par leur cle. Contraintes: il y aura au plus 100 chaines de carateres dans la liste; chaque chaine a une longeur max de 10000 caracteres; chaque chaine en sortie aura egalement une longeur max de 10000 carateres; il n'y a pas de champ vide, ni de cle vide, ni de valeur vide. Implementer : /** * @param dataStrings [[anArray]] de chaînes de caractères, où chaque chaîne représente une personne. * @return [[anArray]] de chaînes de caractères, les données d'entrée fusionnées. */ public static List<string> MergeData(List<string> dataStrings)

Étapes de la solution

  1. Analyse des chaînes d'entrée :

    • Parse chaque chaîne pour extraire les paires clé/valeur.
    • Grouper les informations par le champ Name.
  2. Fusionner les informations :

    • Pour chaque personne (identifiée par Name), fusionner toutes ses informations dans un dictionnaire.
  3. Trier et formater les résultats :

    • Trier les personnes par leur Name dans l'ordre lexicographique.
    • Pour chaque personne, trier ses champs (sauf Name, qui est toujours en premier).
    • Formater chaque entrée dans le format requis.
  4. Renvoyer les résultats :

    • Retourner la liste des chaînes regroupées et formatées.

Points importants

  1. Complexité :

    • Parsing des chaînes : O(nm)O(n \cdot m), où nn est le nombre de chaînes et mm est leur longueur moyenne.
    • Tri et fusion : O(nlogn+klogk)O(n \log n + k \log k), où kk est le nombre moyen de champs par personne.
  2. Manipulation des chaînes :

    • Assurez-vous que les clés et les valeurs ne contiennent pas de caractères réservés (= ou ;).
  3. Gestion des données volumineuses :

    • Bien que chaque chaîne puisse être longue, les structures comme Dictionary et SortedDictionary sont adaptées pour gérer efficacement les données fusionnées.

C#: 

public static List<string> MergeData(List<string> dataStrings) {
        // Write your code here
        // To debug: Console.Error.WriteLine("Debug messages...");
        var peopleData = new Dictionary<string, SortedDictionary<string, string>>();
        foreach(string dataS in dataStrings){
            var fields = dataS.Split(';');
            string name = null;
            var currentData = new Dictionary<string, string>();

            foreach(string field in fields){
                var keyValue = field.Split('=');
                string key = keyValue[0].Trim();
                string value = keyValue[1].Trim();

                if(key == "Name"){
                    name = value;
                }

                currentData[key] = value;
            }

            if(name != null){
                if (!peopleData.ContainsKey(name))
                {
                    peopleData[name] = new SortedDictionary<string, string>();
                }

                foreach(var kvp in currentData){
                    peopleData[name][kvp.Key] = kvp.Value;
                }
            }
        }

        var result = new List<string>();
        foreach(var person in peopleData.OrderBy(p=>p.Key)){
            var formattedData = new List<string>();
            formattedData.Add($"Name={person.Key}");

            foreach (var kvp in person.Value.OrderBy(k => k.Key))
            {
                if (kvp.Key != "Name")
                {
                    formattedData.Add($"{kvp.Key}={kvp.Value}");
                }
            }

            result.Add(string.Join(";", formattedData));
        }


        return result;
    }

lundi 25 novembre 2024

Hướng dẫn cách chơi Kiếm Thế Origin

 Tựa game mới và cách chơi Kiếm Thế Origin đã thu hút sự quan tâm của nhiều game thủ nhờ vào lối chơi hấp dẫn và đồ họa độc đáo.

Giới thiệu Kiếm Thế Origin

Trước khi biết cách chơi Kiếm Thế Origin bạn cần hiểu tựa game này là gì. Kiếm Thế Origin là một tựa game nhập vai trên điện thoại di động, tái hiện hoàn toàn thế giới huy hoàng của thời đại Kiếm Thế. Trong trò chơi này, từ đồ họa và thiết kế nhân vật cho đến các phong cảnh và kỹ năng đặc trưng của từng môn phái đều được tái hiện một cách tinh tế, giúp người chơi dễ dàng tiếp cận và hiểu quy tắc chơi.



Hơn nữa, game cũng mang trong mình sự kết hợp độc đáo giữa yếu tố cổ điển và hiện đại, với những cải tiến trong hệ thống trang bị, khả năng giao dịch liên server tự do, cùng với các chế độ PVP, PVE, Gia tộc, Bang hội, và nhiều phó bản khác, giúp người chơi không bao giờ cảm thấy nhàm chán và khám phá một thế giới đầy sự mới mẻ.

Hướng dẫn chơi Kiếm Thế cho tân thủ thành cao thủ

Dưới đây là một số mẹo hướng dẫn chơi Kiếm Thế Origin dành cho tân thủ. nếu áp dụng thành thạo những mẹo này trong cách chơi Kiếm Thế Mobile thì chỉ một thời gian ngắn bạn sẽ sớm thành cao thủ đấy.

Nâng Cấp Trang Bị

Trang bị trong cách chơi Kiếm Thế Origin đóng vai trò quan trọng trong việc tăng cường sức mạnh của nhân vật thông qua chỉ số như tấn công, phòng thủ, sinh lực, và tỷ lệ chí mạng, được gọi chung là 'Tài Phú' (Lực Chiến). Do đó, việc nâng cấp trang bị trở thành một phần quan trọng trong hành trình của người chơi.



'Cường Hóa Trang Bị' là tính năng cho phép người chơi cải thiện các chỉ số Tài Phú và điểm số quan trọng khác của trang bị bằng cách sử dụng đá 'Huyền Tinh.' Đá Huyền Tinh có thể thu thập thông qua nhiều hoạt động trong game, các code game, hoặc mua từ cửa hàng 'Kỳ Trân Các.' Bên cạnh đó, tính năng 'Khảm Trang Bị' cũng giúp người chơi tối ưu hóa các chỉ số quan trọng, tạo lợi thế trong các hoạt động PvP.

Tu Luyện

Sau khi hoàn thành nhiệm vụ chính và tham gia các hoạt động trong game, người chơi có thể huấn luyện quái vật tại các khu vực dã ngoại và kích hoạt tính năng 'Tu Luyện x10' để nâng cấp nhân vật nhanh chóng. Hằng ngày, người chơi sẽ nhận được một khoảng thời gian tu luyện x10 miễn phí trong 1 giờ, với tổng cộng không quá 7 giờ. Vì vậy, quản lý thời gian tu luyện cẩn thận là điều quan trọng. Hơn nữa, việc bắt đầu và tạm dừng quá trình tu luyện cũng cần phải được thực hiện một cách khôn ngoan để tránh lãng phí kinh nghiệm của nhân vật.

Mẹo tăng level nhanh chóng

Tham gia các sự kiện hàng ngày và các hoạt động có thời gian hạn để thu thập nhiều kinh nghiệm (EXP) cùng với những phần thưởng hấp dẫn. Một số hoạt động chỉ có sẵn cho thành viên của Gia Tộc hoặc Bang Hội, vì vậy hãy nhanh chóng gia nhập cộng đồng phù hợp với bạn. Truyền Công là một cách hiệu quả để nâng cao EXP của bạn trong khoảng thời gian ngắn. Chỉ có Sư Đồ mới có khả năng truyền công cho nhau. Sư Đồ có thể thực hiện việc này một lần mỗi ngày, trong khi Gia Tộc và Bang Hội có thể truyền công và nhận truyền công tới hai lần mỗi ngày.Bạn cũng có thể sử dụng Truyền Công đơn để tăng cường thêm một lần truyền công và nhận truyền công (nhưng mỗi ngày chỉ được sử dụng một lần). Đây là những mẹ tăng level nhanh chóng trong cách chơi Kiếm Thế Origin.

Nhiệm vụ phụ tuyến

Hãy kiểm tra xem còn nhiệm vụ phụ nào chưa hoàn thành trong bảng nhiệm vụ. Các nhiệm vụ phụ không chỉ mang lại kinh nghiệm lớn mà còn giúp mở khóa nhiều tính năng hấp dẫn khác. Mỗi ngày, bạn sẽ được cung cấp 1 giờ Tu Luyện x10. Khi kích hoạt chế độ này, lượng kinh nghiệm nhận được sẽ tăng lên gấp 10 lần. Hãy nhớ kích hoạt chế độ này thủ công trước khi bắt đầu Tu Luyện. Bên cạnh đó, bạn cũng có thể mua Tu Luyện Đơn để tăng thêm 30 phút thời gian Tu Luyện x10.

Bí kíp tham gia Bạch Hổ Đường

Bạch Hổ Đường là một trong những hoạt động cạnh tranh đầy cạnh tranh, với quy tắc rằng nếu bị trọng thương, bạn sẽ không thể tiếp tục tham gia và chỉ có thể tham gia một lần mỗi ngày.



Người chơi và các thành viên của cùng Tộc/Bang nên thống nhất thời gian tham gia để có cơ hội hợp tác và hỗ trợ lẫn nhau. Nếu bạn biết lịch hoạt động của một Bang Hội mạnh mẽ, cách tốt nhất là tham gia ở một kênh hoặc thời gian khác để tránh gặp đối thủ quá mạnh. Nếu bạn tự mình đi chiến đấu đơn độc, bạn sẽ bỏ lỡ các lợi ích từ sự hỗ trợ của đồng đội và dễ dàng bị loại bỏ. Lắng nghe chỉ đạo của Chỉ Huy và phối hợp tốt với các thành viên khác trong Tộc/Bang là yếu tố quan trọng để sống sót trong phó bản này.

Một số mẹo tham gia PK hiệu quả

Tài phú là một chỉ số thể hiện sức mạnh của người chơi. Tuy nhiên, việc có Tài Phú cao không đồng nghĩa với sự bất khả chiến bại. Một số mẹo tham gia PK trong cách chơi Kiếm Thế Origin trên PC để người chơi có Tài Phú thấp vẫn có cơ hội thay đổi tình thế bằng các yếu tố sau đây:

Phối hợp đồng đội một cách thông minh

Cần xây dựng một đội hình mạnh mẽ trong cách chơi Kiếm Thế Origin để tham gia các hoạt động quần chiến đông người như Tống Kim, Bạch Hổ Đường, và Tranh Đoạt Lãnh Thổ. Hãy hợp nhất với đồng đội để mang lại sự đa dạng về kỹ năng và chiêu thức, bao gồm việc cải thiện chỉ số tấn công (Côn Lôn Đao), tăng khả năng phòng thủ (Thiên Vương Chùy), cải thiện tỷ lệ chí mạng (Minh Giáo Chùy), và sử dụng chiêu thức khống chế diện rộng (Đoàn Thị Kiếm, Võ Đang Khí, Đường Môn Hãm Tỉnh,...)

Biết người biết ta trong cuộc chiến

  • Tìm hiểu về phạm vi, thời gian hồi chiêu và sử dụng khả năng khinh công để tránh những chiêu thức nguy hiểm, chẳng hạn như Phi Long Tại Thiên của Cái Bang Chưởng hoặc Huyền Băng Cửu Kiếp của Đoàn Thị Chỉ.
  • Nếu bạn thuộc môn phái sử dụng ngựa trong chiến đấu, hãy tận dụng tính linh hoạt của ngựa để bảo vệ vị trí của mình khỏi các khu vực nguy hiểm hoặc sử dụng khả năng tấn công nhanh để tấn công đối thủ một cách nhanh chóng trước khi họ có thể phản ứng.

Tận dụng khắc chế của đối thủ và môi trường

Chọn chiến đấu chống lại các đối thủ mà bạn có lợi thế và tránh những người có ưu điểm trước bạn. Khi bạn chiến đấu theo hệ khắc của đối phương, bạn có thể gây thêm sát thương và giảm sát thương mà bạn nhận được.Khả năng tăng cường sự khắc chế Ngũ Hành có thể được cải thiện thông qua chỉ số Cường Hóa Ngũ Hành và Nhược Hóa Ngũ Hành. Cường Hóa Ngũ Hành: Tăng sát thương đối với đối thủ bạn khắc chế, giảm sát thương mà bạn nhận từ họ. Nhược Hóa Ngũ Hành: Tăng sát thương đối với đối thủ khắc chế bạn, giảm sát thương mà bạn nhận từ họ.

Bạn có thể tăng chỉ số Cường Hóa/Nhược Hóa Ngũ Hành thông qua tính năng Khảm Nạm và nâng cấp Ngũ Hành Ấn trong cách chơi Kiếm Thế Origin.

Tối ưu hóa chỉ số nhân vật để tỏa sáng trong PK

Thấu hiểu đặc điểm của môn phái là quan trọng để biết được những chỉ số nào có lợi hoặc không phù hợp với nhân vật của bạn. Ví dụ, các chỉ số liên quan đến phòng thủ và phản đòn có thể rất hữu ích đối với phái Thiếu Lâm, vì những đệ tử của họ có nội tại liên quan đến khả năng chịu đựng và phản đòn. Trong khi đó, các chỉ số tấn công và tỷ lệ chí mạng có thể mạnh mẽ đối với các môn phái có nhiều sát thương như Ma Nhẫn, Đường Môn Tụ Tiễn và Cái Bang Chưởng.Nâng cao khả năng chống lại sự khắc chế từ Ngũ Hành của bản thân cũng rất quan trọng. Ví dụ, nếu bạn đang sử dụng một nhân vật thuộc phái Thiên Vương, bạn có thể ưu tiên tăng cường Kháng Hỏa hơn là Kháng Mộc, nếu đối thủ của bạn có hệ Mộc khắc chế.

Top môn phái tham gia PK hiệu quả

Để áp dụng cách chơi Kiếm Thế Origin thành công, bạn cần biết những môn phái nên tham gia PK dưới đây:

  • Đoàn Thị Chỉ: Nổi tiếng với tuyệt kỹ Lăng Ba Vi Bộ, giúp tránh được hầu hết các đòn tấn công. Còn có khả năng làm chậm đối thủ liên tục bằng Nhất Dương Chỉ và gây sát thương mạnh mẽ từ xa với Huyền Băng Cửu Kiếp.


  • Cái Bang Chưởng: Sở hữu bộ chiêu thức linh hoạt, có thể gây sát thương diện rộng với Hàng Long Hữu Hối và tấn công từ xa mạnh mẽ với Phi Long Tại Thiên.
Có rất nhiều môn phái để tham gia PK
  • Võ Đang Kiếm: Thạo kiếm pháp tinh nhuệ, sử dụng Nhân Kiếm để gây choáng và tấn công nhanh. Kết hợp với Lưỡng Nghi Kiếm Pháp để gây sát thương và hiệu ứng choáng liên tục.
  • Minh Giáo Chùy: Chuyên gia về chùy pháp và cưỡi chiến mã. Sử dụng các chiêu thức như Khốn Hổ Vân Khiếu và Hồn Phách Phi Dương để kìm chân và làm suy yếu đối thủ.
  • Thúy Yên Đao: Sử dụng lối đánh ẩn thân và ám sát. Có khả năng tăng tỷ lệ chí mạng và gây sát thương chí mạng cao, giúp tiêu diệt nhanh chóng những đối thủ mất cảnh giác.
Trên đây là cách chơi Kiếm Thế Origin dành cho các tân thủ khi muốn nhanh chóng trở thành cao thủ trong game.