{"id":4621,"date":"2025-07-05T21:30:06","date_gmt":"2025-07-05T14:30:06","guid":{"rendered":"https:\/\/labantrithuc.com\/?p=4621"},"modified":"2025-07-05T21:35:00","modified_gmt":"2025-07-05T14:35:00","slug":"tu-van-chon-nganh-phu-hop","status":"publish","type":"post","link":"https:\/\/labantrithuc.com\/?p=4621","title":{"rendered":"T\u01b0 v\u1ea5n ch\u1ecdn ng\u00e0nh ph\u00f9 h\u1ee3p"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"vi\">\n<head>\n    <meta charset=\"UTF-8\">\n    <title>G\u1ee3i \u00fd ng\u00e0nh theo \u0111i\u1ec3m t\u1ed5 h\u1ee3p &#8211; QNU<\/title>\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n    <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.3\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\">\n    <style>\n        body { background: #f8fafc;}\n        .card-header { background: #f97316; color: #fff; font-weight: 600;}\n        .btn-primary { background: #f97316; border-color: #f97316;}\n        .btn-primary:hover { opacity: .93;}\n        .badge.bg-qnu { background: #16a34a;}\n        .score-best { font-weight:bold; color:#16a34a;}\n        .score-other { color:#666;}\n        .table-min { font-size:0.93em;}\n    <\/style>\n<\/head>\n<body>\n<div class=\"container py-4\">\n    <h1 class=\"display-6 mb-2 text-center\">G\u1ee2I \u00dd NG\u00c0NH \u0110\u0102NG K\u00dd THEO \u0110I\u1ec2M T\u1ed4 H\u1ee2P &#8211; QNU<\/h1>\n    <div class=\"row justify-content-center\">\n        <div class=\"col-lg-7\">\n            <div class=\"card shadow-sm mb-3\">\n                <div class=\"card-header\">1. Nh\u1eadp \u0111i\u1ec3m c\u00e1c m\u00f4n (l\u1edbp 12)<\/div>\n                <div class=\"card-body\">\n                    <div class=\"mb-2\">\n                        <label class=\"form-label\">H\u1ecd t\u00ean th\u00ed sinh:<\/label>\n                        <input type=\"text\" id=\"hoTen\" class=\"form-control\" autocomplete=\"off\">\n                    <\/div>\n                    <div class=\"mb-2 row g-2\" id=\"subjectInputs\"><\/div>\n                    <div class=\"row\">\n                        <div class=\"col-6\">\n                            <label class=\"form-label\">Khu v\u1ef1c:<\/label>\n                            <select id=\"kvSelect\" class=\"form-select\">\n                                <option value=\"kv3\">KV3 (0)<\/option>\n                                <option value=\"kv2\">KV2 (0.25)<\/option>\n                                <option value=\"kv2-nt\">KV2-NT (0.5)<\/option>\n                                <option value=\"kv1\">KV1 (0.75)<\/option>\n                            <\/select>\n                        <\/div>\n                        <div class=\"col-6\">\n                            <label class=\"form-label\">\u0110\u1ed1i t\u01b0\u1ee3ng \u01b0u ti\u00ean:<\/label>\n                            <select id=\"dtSelect\" class=\"form-select\">\n                                <option value=\"\">Kh\u00f4ng<\/option>\n                                <option value=\"ut2\">\u01afT2 (1 \u0111i\u1ec3m)<\/option>\n                                <option value=\"ut1\">\u01afT1 (2 \u0111i\u1ec3m)<\/option>\n                            <\/select>\n                        <\/div>\n                    <\/div>\n                    <button class=\"btn btn-primary w-100 mt-3 mb-2\" id=\"suggestBtn\">G\u1ee3i \u00fd ng\u00e0nh ph\u00f9 h\u1ee3p<\/button>\n                    <div class=\"note small text-muted mb-1\">Ch\u1ec9 c\u1ea7n nh\u1eadp \u0111i\u1ec3m c\u00e1c m\u00f4n b\u1ea1n c\u00f3, h\u1ec7 th\u1ed1ng s\u1ebd t\u1ef1 \u0111\u1ed9ng g\u1ee3i \u00fd ng\u00e0nh ph\u00f9 h\u1ee3p v\u1edbi t\u1ed5 h\u1ee3p \u0111i\u1ec3m cao nh\u1ea5t c\u1ee7a b\u1ea1n!<\/div>\n                <\/div>\n            <\/div>\n            <div class=\"card shadow-sm mb-3\" id=\"suggestCard\" style=\"display:none\">\n                <div class=\"card-header\">2. G\u1ee3i \u00fd ng\u00e0nh ph\u00f9 h\u1ee3p nh\u1ea5t<\/div>\n                <div class=\"card-body\" id=\"suggestBox\"><\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n<script>\n\/\/ --------- D\u1eee LI\u1ec6U GI\u1eee NGUY\u00caN T\u1eea CODE G\u1ed0C C\u1ee6A B\u1ea0N ----------\n\/\/ C\u00e1c ng\u00e0nh nh\u00e2n 2 m\u00f4n ch\u00ednh\nconst weightedMajors = {\n    \"7220201\": {main: \"N1\"}, \/\/ Ng\u00f4n ng\u1eef Anh\n    \"7140231\": {main: \"N1\"}, \/\/ S\u01b0 ph\u1ea1m Ti\u1ebfng Anh\n    \"7140206\": {main: \"NK2\"},\/\/ Gi\u00e1o d\u1ee5c Th\u1ec3 ch\u1ea5t\n    \"7460112\": {main: \"TO\"}  \/\/ To\u00e1n \u1ee9ng d\u1ee5ng\n};\n\n\/\/ \u0110\u1ecbnh ngh\u0129a t\u1ed5 h\u1ee3p m\u00f4n\nconst toHopMap = {\n\"A00\":[\"TO\",\"LI\",\"HO\"],\"A01\":[\"TO\",\"LI\",\"N1\"],\"A02\":[\"TO\",\"LI\",\"SI\"],\"A03\":[\"TO\",\"LI\",\"SU\"],\"A04\":[\"TO\",\"LI\",\"DI\"],\"A05\":[\"TO\",\"HO\",\"SU\"],\"A06\":[\"TO\",\"HO\",\"DI\"],\"A07\":[\"TO\",\"SU\",\"DI\"],\"A08\":[\"TO\",\"SU\",\"GD\"],\"A09\":[\"TO\",\"DI\",\"GD\"],\"A10\":[\"TO\",\"LI\",\"GD\"],\"A11\":[\"TO\",\"HO\",\"GD\"],\"A12\":[\"TO\",\"TN\",\"XH\"],\"A13\":[\"TO\",\"TN\",\"SU\"],\"A14\":[\"TO\",\"DI\",\"TN\"],\"A15\":[\"TO\",\"TN\",\"GD\"],\"A16\":[\"TO\",\"VA\",\"TN\"],\"A17\":[\"TO\",\"LI\",\"XH\"],\"A18\":[\"TO\",\"HO\",\"XH\"],\n\"B00\":[\"TO\",\"HO\",\"SI\"],\"B01\":[\"TO\",\"SI\",\"SU\"],\"B02\":[\"TO\",\"SI\",\"DI\"],\"B03\":[\"TO\",\"VA\",\"SI\"],\"B04\":[\"TO\",\"SI\",\"GD\"],\"B05\":[\"TO\",\"SI\",\"XH\"],\"B08\":[\"TO\",\"SI\",\"N1\"],\n\"C00\":[\"VA\",\"SU\",\"DI\"],\"C01\":[\"TO\",\"VA\",\"LI\"],\"C02\":[\"TO\",\"VA\",\"HO\"],\"C03\":[\"TO\",\"VA\",\"SU\"],\"C04\":[\"TO\",\"VA\",\"DI\"],\"C05\":[\"VA\",\"LI\",\"HO\"],\"C06\":[\"VA\",\"LI\",\"SI\"],\"C07\":[\"VA\",\"LI\",\"SU\"],\"C08\":[\"VA\",\"HO\",\"SI\"],\"C09\":[\"VA\",\"LI\",\"DI\"],\"C10\":[\"VA\",\"HO\",\"SU\"],\"C11\":[\"VA\",\"HO\",\"DI\"],\"C12\":[\"VA\",\"SI\",\"SU\"],\"C13\":[\"VA\",\"SI\",\"DI\"],\"C14\":[\"TO\",\"VA\",\"GD\"],\"C15\":[\"TO\",\"VA\",\"XH\"],\"C16\":[\"VA\",\"LI\",\"GD\"],\"C17\":[\"VA\",\"HO\",\"GD\"],\"C18\":[\"VA\",\"SI\",\"GD\"],\"C19\":[\"VA\",\"SU\",\"GD\"],\"C20\":[\"VA\",\"DI\",\"GD\"],\n\"D01\":[\"TO\",\"VA\",\"N1\"],\"D07\":[\"TO\",\"HO\",\"N1\"],\"D09\":[\"TO\",\"SU\",\"N1\"],\"D10\":[\"TO\",\"DI\",\"N1\"],\"D14\":[\"VA\",\"SU\",\"N1\"],\"D15\":[\"VA\",\"DI\",\"N1\"],\n\"X01\":[\"TO\",\"VA\",\"KTPL\"],\"X02\":[\"TO\",\"VA\",\"TI\"],\"X05\":[\"TO\",\"LI\",\"KTPL\"],\"X06\":[\"TO\",\"LI\",\"TI\"],\"X17\":[\"TO\",\"SU\",\"KTPL\"],\"X21\":[\"TO\",\"DI\",\"KTPL\"],\"X25\":[\"TO\",\"KTPL\",\"N1\"],\"X26\":[\"TO\",\"TI\",\"N1\"],\"X70\":[\"VA\",\"SU\",\"KTPL\"],\"X74\":[\"VA\",\"DI\",\"KTPL\"],\"X78\":[\"VA\",\"KTPL\",\"N1\"],\"X90\":[\"VA\",\"SU\",\"KTPL\"],\n\"M00\":[\"VA\",\"TO\",\"NK1\"],\"T00\":[\"TO\",\"SI\",\"NK2\"],\"T01\":[\"VA\",\"TO\",\"NK2\"],\"T02\":[\"VA\",\"SI\",\"NK2\"],\"T04\":[\"TO\",\"LI\",\"NK2\"],\"T06\":[\"VA\",\"KTPL\",\"NK2\"]\n};\n\n\/\/ Danh m\u1ee5c ng\u00e0nh, t\u1ed5 h\u1ee3p\nconst nganhList = [\n{code:\"7140114\",name:\"Qu\u1ea3n l\u00fd Gi\u00e1o d\u1ee5c\",combos:\"A00;A01;C00;C03;C04;D01;X70;X74\"},\n{code:\"7140201\",name:\"Gi\u00e1o d\u1ee5c m\u1ea7m non\",combos:\"M00\"},\n{code:\"7140202\",name:\"Gi\u00e1o d\u1ee5c Ti\u1ec3u h\u1ecdc\",combos:\"A00;C00;D01\"},\n{code:\"7140205\",name:\"Gi\u00e1o d\u1ee5c ch\u00ednh tr\u1ecb\",combos:\"C00;D01;D14;X01;X25;X70;X74\"},\n{code:\"7140206\",name:\"Gi\u00e1o d\u1ee5c th\u1ec3 ch\u1ea5t\",combos:\"T00;T01;T02;T04;T06\"},\n{code:\"7140209\",name:\"S\u01b0 ph\u1ea1m To\u00e1n h\u1ecdc\",combos:\"A00;A01;D07;X26\"},\n{code:\"7140210\",name:\"S\u01b0 ph\u1ea1m Tin h\u1ecdc\",combos:\"A00;A01;D01;D07;X02\"},\n{code:\"7140211\",name:\"S\u01b0 ph\u1ea1m V\u1eadt l\u00fd\",combos:\"A00;A01;A02;X05\"},\n{code:\"7140212\",name:\"S\u01b0 ph\u1ea1m H\u00f3a h\u1ecdc\",combos:\"A00;B00;C02;D07\"},\n{code:\"7140213\",name:\"S\u01b0 ph\u1ea1m Sinh h\u1ecdc\",combos:\"A02;B00;B08\"},\n{code:\"7140217\",name:\"S\u01b0 ph\u1ea1m Ng\u1eef v\u0103n\",combos:\"C00;D01;D14;D15\"},\n{code:\"7140218\",name:\"S\u01b0 ph\u1ea1m L\u1ecbch s\u1eed\",combos:\"C03;D09;D14;X17;X70\"},\n{code:\"7140219\",name:\"S\u01b0 ph\u1ea1m \u0110\u1ecba l\u00fd\",combos:\"C04;D10;D15;X21;X74\"},\n{code:\"7140231\",name:\"S\u01b0 ph\u1ea1m Ti\u1ebfng Anh\",combos:\"D01\"},\n{code:\"7140247\",name:\"S\u01b0 ph\u1ea1m Khoa h\u1ecdc t\u1ef1 nhi\u00ean\",combos:\"A00;A01;A02;B00;B08\"},\n{code:\"7140249\",name:\"S\u01b0 ph\u1ea1m L\u1ecbch s\u1eed \u0110\u1ecba l\u00fd\",combos:\"C00;D14;D15;X70;X74\"},\n{code:\"7220201\",name:\"Ng\u00f4n ng\u1eef Anh\",combos:\"A01;D01;D14;D15\"},\n{code:\"7220204\",name:\"Ng\u00f4n ng\u1eef Trung Qu\u1ed1c\",combos:\"A01;D01;D04;D15\"},\n{code:\"7229030\",name:\"V\u0103n h\u1ecdc\",combos:\"D14;D15;X70;X74;X78;C00;C03\"},\n{code:\"7310101\",name:\"Kinh t\u1ebf\",combos:\"A00;A01;D01;D07;X25\"},\n{code:\"7310205\",name:\"Qu\u1ea3n l\u00fd nh\u00e0 n\u01b0\u1edbc\",combos:\"D01;D14;X01;X17;X25\"},\n{code:\"7310403\",name:\"T\u00e2m l\u00fd h\u1ecdc gi\u00e1o d\u1ee5c\",combos:\"C00;C03;C04;D01;X01;X17;X70;X74\"},\n{code:\"7310608\",name:\"\u0110\u00f4ng ph\u01b0\u01a1ng h\u1ecdc\",combos:\"C00;D14;D15;D63;D65;X70;X78;X90\"},\n{code:\"7310630\",name:\"Vi\u1ec7t Nam h\u1ecdc\",combos:\"C00;C03;C04;D01;D15;X70\"},\n{code:\"7340101\",name:\"Qu\u1ea3n tr\u1ecb kinh doanh\",combos:\"A00;A01;D01;D07;X01;X25;X26;X78\"},\n{code:\"7340201\",name:\"T\u00e0i ch\u00ednh \u2013 Ng\u00e2n h\u00e0ng\",combos:\"A00;A01;D01;X01;X78\"},\n{code:\"7340301\",name:\"K\u1ebf to\u00e1n\",combos:\"A00;A01;D01;D07;X25;X26\"},\n{code:\"7340301CLC\",name:\"K\u1ebf to\u00e1n CLC\",combos:\"A00;A01;D01;D07;X25;X26\"},\n{code:\"7340302\",name:\"Ki\u1ec3m to\u00e1n\",combos:\"A00;A01;D01;D07;X26;X78\"},\n{code:\"7380101\",name:\"Lu\u1eadt\",combos:\"A01;C00;D01;D14;X01;X25;X70\"},\n{code:\"7440112\",name:\"H\u00f3a h\u1ecdc\",combos:\"A00;A05;A06;B00;C02;C05;C08;D07;D12;X09\"},\n{code:\"7460108\",name:\"Khoa h\u1ecdc d\u1eef li\u1ec7u\",combos:\"A00;A01;D01;D07;X26\"},\n{code:\"7460112\",name:\"To\u00e1n \u1ee9ng d\u1ee5ng\",combos:\"A00;A01;D01;D07;X26\"},\n{code:\"7480103\",name:\"K\u1ef9 thu\u1eadt ph\u1ea7n m\u1ec1m\",combos:\"A00;A01;D01;D07;X26\"},\n{code:\"7480107\",name:\"Tr\u00ed tu\u1ec7 nh\u00e2n t\u1ea1o\",combos:\"A00;A01;D01;D07;X26\"},\n{code:\"7480201\",name:\"C\u00f4ng ngh\u1ec7 th\u00f4ng tin\",combos:\"A00;A01;D01;D07;X26\"},\n{code:\"7510205\",name:\"C\u00f4ng ngh\u1ec7 k\u1ef9 thu\u1eadt \u00f4 t\u00f4\",combos:\"A00;A01;C01;D01;D07;X06;X26\"},\n{code:\"7510401\",name:\"C\u00f4ng ngh\u1ec7 k\u1ef9 thu\u1eadt ho\u00e1 h\u1ecdc\",combos:\"A00;A01;A05;B00;C02;C05;D01;D07;D12;X09\"},\n{code:\"7510605\",name:\"Logistics v\u00e0 qu\u1ea3n l\u00fd chu\u1ed7i cung \u1ee9ng\",combos:\"A00;A01;D01;D10;X01;X21;X25;X26\"},\n{code:\"7520116\",name:\"K\u1ef9 thu\u1eadt c\u01a1 kh\u00ed \u0111\u1ed9ng l\u1ef1c\",combos:\"A00;A01;C01;D01;D07;X06;X26\"},\n{code:\"7520201\",name:\"K\u1ef9 thu\u1eadt \u0111i\u1ec7n\",combos:\"A00;A01;C01;D01;D07;X06;X26\"},\n{code:\"7520207\",name:\"K\u1ef9 thu\u1eadt \u0111i\u1ec7n t\u1eed - vi\u1ec5n th\u00f4ng\",combos:\"A00;A01;C01;D01;D07;X06;X26\"},\n{code:\"7520216\",name:\"K\u1ef9 thu\u1eadt \u0111i\u1ec1u khi\u1ec3n v\u00e0 T\u1ef1 \u0111\u1ed9ng h\u00f3a\",combos:\"A00;A01;C01;D01;D07;X06;X26\"},\n{code:\"7520401\",name:\"V\u1eadt l\u00fd k\u1ef9 thu\u1eadt\",combos:\"A00;A01;A02;A04;C01\"},\n{code:\"7540101\",name:\"C\u00f4ng ngh\u1ec7 th\u1ef1c ph\u1ea9m\",combos:\"A00;A02;A06;B00;B08;C02;C05;C08;D07;D12\"},\n{code:\"7580201\",name:\"K\u1ef9 thu\u1eadt x\u00e2y d\u1ef1ng\",combos:\"A00;A01;C01;D01;D07;X06;X26\"},\n{code:\"7620109\",name:\"N\u00f4ng h\u1ecdc\",combos:\"A02;B01;B03;B08;C08;X13\"},\n{code:\"7760101\",name:\"C\u00f4ng t\u00e1c x\u00e3 h\u1ed9i\",combos:\"C00;C03;C04;D01;D14;X01;X70;X78\"},\n{code:\"7810103\",name:\"Qu\u1ea3n tr\u1ecb d\u1ecbch v\u1ee5 du l\u1ecbch v\u00e0 l\u1eef h\u00e0nh\",combos:\"A00;A01;D01;D04;D09;X01;X17;X21;X25;X78\"},\n{code:\"7810201\",name:\"Qu\u1ea3n tr\u1ecb kh\u00e1ch s\u1ea1n\",combos:\"A00;A01;D01;D04;D09;X01;X17;X21;X25;X78\"},\n{code:\"7850101\",name:\"Qu\u1ea3n l\u00fd t\u00e0i nguy\u00ean v\u00e0 m\u00f4i tr\u01b0\u1eddng\",combos:\"A00;A02;A04;A06;B00;B02;C04;C13;D01;D10;D15;X21;X74\"},\n{code:\"7850103\",name:\"Qu\u1ea3n l\u00fd \u0111\u1ea5t \u0111ai\",combos:\"A00;A01;A02;A04;A06;B00;D07;D10;X05;X09;X21\"}\n];\n\n\/\/ T\u00ean m\u00e3 m\u00f4n\nconst monMap = {\n\"TO\":\"To\u00e1n\",\"LI\":\"V\u1eadt l\u00ed\",\"HO\":\"H\u00f3a h\u1ecdc\",\"SI\":\"Sinh h\u1ecdc\",\"SU\":\"L\u1ecbch s\u1eed\",\"DI\":\"\u0110\u1ecba l\u00ed\",\n\"VA\":\"Ng\u1eef v\u0103n\",\"N1\":\"Ti\u1ebfng Anh\",\"N2\":\"Ti\u1ebfng Nga\",\"N3\":\"Ti\u1ebfng Ph\u00e1p\",\"N4\":\"Ti\u1ebfng Trung\",\n\"N5\":\"Ti\u1ebfng \u0110\u1ee9c\",\"N6\":\"Ti\u1ebfng Nh\u1eadt\",\"N7\":\"Ti\u1ebfng H\u00e0n\",\"GD\":\"Gi\u00e1o d\u1ee5c c\u00f4ng d\u00e2n\",\n\"TN\":\"Khoa h\u1ecdc t\u1ef1 nhi\u00ean\",\"XH\":\"Khoa h\u1ecdc x\u00e3 h\u1ed9i\",\"KTPL\":\"GD Kinh t\u1ebf & PL\",\n\"TI\":\"Tin h\u1ecdc\",\"CNCN\":\"CN C\u00f4ng nghi\u1ec7p\",\"CNNN\":\"CN N\u00f4ng nghi\u1ec7p\",\"NK1\":\"N\u0103ng khi\u1ebfu 1\",\"NK2\":\"N\u0103ng khi\u1ebfu 2\"\n};\n\n\/\/ --------- K\u1ebeT TH\u00daC D\u1eee LI\u1ec6U G\u1ed0C ---------\n\n\/\/ T\u1ea1o giao di\u1ec7n nh\u1eadp t\u1ea5t c\u1ea3 m\u00f4n c\u00f3 th\u1ec3\nfunction renderSubjectInputs() {\n    \/\/ L\u1ea5y t\u1ea5t c\u1ea3 m\u00e3 m\u00f4n th\u1ef1c t\u1ebf xu\u1ea5t hi\u1ec7n\n    let mons = new Set();\n    Object.values(toHopMap).forEach(arr=>arr.forEach(m=>mons.add(m)));\n    let arrMons = Array.from(mons);\n    arrMons.sort((a,b)=>a.localeCompare(b));\n    let html = '';\n    arrMons.forEach(mon=>{\n        html += `<div class=\"col-6 col-md-4 mb-1\">\n            <label class=\"form-label\">${monMap[mon]||mon} <span class=\"text-muted small\">(${mon})<\/span><\/label>\n            <input type=\"number\" step=\"0.01\" min=\"0\" max=\"10\" class=\"form-control mon-input\" id=\"mon_${mon}\">\n        <\/div>`;\n    });\n    document.getElementById(\"subjectInputs\").innerHTML = html;\n}\n\n\/\/ T\u00ednh \u0111i\u1ec3m \u01b0u ti\u00ean\nfunction diemUuTien(kv, dt) {\n    const kvMap = {\"kv1\":0.75,\"kv2-nt\":0.5,\"kv2\":0.25,\"kv3\":0};\n    const dtMap = {\"ut1\":2,\"ut2\":1};\n    return (kvMap[kv]||0)+(dtMap[dt]||0);\n}\n\n\/\/ G\u1ee3i \u00fd ng\u00e0nh ph\u00f9 h\u1ee3p\nfunction suggestMajors() {\n    \/\/ L\u1ea5y \u0111i\u1ec3m nh\u1eadp\n    let monDiem = {};\n    document.querySelectorAll(\".mon-input\").forEach(inp=>{\n        let val = parseFloat(inp.value);\n        if (!isNaN(val)) monDiem[inp.id.replace(\"mon_\",\"\")] = val;\n    });\n    if (Object.keys(monDiem).length === 0) {\n        alert(\"B\u1ea1n c\u1ea7n nh\u1eadp \u00edt nh\u1ea5t 1 \u0111i\u1ec3m m\u00f4n.\");\n        return;\n    }\n    \/\/ \u01afu ti\u00ean\n    let kv = document.getElementById(\"kvSelect\").value;\n    let dt = document.getElementById(\"dtSelect\").value;\n    let diemUu = diemUuTien(kv,dt);\n\n    \/\/ Duy\u1ec7t qua t\u1ea5t c\u1ea3 c\u00e1c ng\u00e0nh\n    let ketQua = [];\n    nganhList.forEach(nganh=>{\n        let combos = nganh.combos.split(\";\").map(x=>x.trim()).filter(Boolean);\n        let best = null;\n        combos.forEach(cb=>{\n            let mons = toHopMap[cb];\n            if (!mons || mons.length!==3) return;\n            \/\/ N\u1ebfu thi\u1ebfu \u0111i\u1ec3m m\u00f4n th\u00ec b\u1ecf qua t\u1ed5 h\u1ee3p n\u00e0y\n            if (!mons.every(m=>monDiem[m]!==undefined)) return;\n            let w = weightedMajors[nganh.code];\n            let score = 0;\n            \/\/ Nh\u00e2n h\u1ec7 s\u1ed1 n\u1ebfu c\u00f3\n            if (w && mons.includes(w.main)) {\n                let idx = mons.indexOf(w.main);\n                let diemMain = monDiem[w.main];\n                let diemOther1 = monDiem[mons[(idx+1)%3]];\n                let diemOther2 = monDiem[mons[(idx+2)%3]];\n                score = (diemMain*2 + diemOther1 + diemOther2)*3\/4;\n            } else {\n                score = mons.map(m=>monDiem[m]).reduce((a,b)=>a+b,0);\n            }\n            let diemUuQC = (score>=22.5&&diemUu>0)?((30-score)\/7.5*diemUu):0;\n            let diemXT = score + (score>=22.5 ? diemUuQC : diemUu);\n            if (!best || diemXT>best.diemXT) {\n                best = {cb,mons,score,diemXT,diemUuQC};\n            }\n        });\n        if (best) {\n            ketQua.push({\n                nganh: nganh.name,\n                code: nganh.code,\n                tohop: best.cb,\n                mon: best.mons,\n                diemTH: best.score,\n                diemUuQC: best.diemUuQC,\n                diemXT: best.diemXT\n            });\n        }\n    });\n    if (!ketQua.length) {\n        document.getElementById(\"suggestBox\").innerHTML = `<div class=\"alert alert-danger\">Kh\u00f4ng ng\u00e0nh n\u00e0o ph\u00f9 h\u1ee3p v\u1edbi c\u00e1c \u0111i\u1ec3m m\u00f4n b\u1ea1n \u0111\u00e3 nh\u1eadp!<\/div>`;\n        document.getElementById(\"suggestCard\").style.display = \"block\";\n        return;\n    }\n    \/\/ S\u1eafp x\u1ebfp theo \u0111i\u1ec3m x\u00e9t tuy\u1ec3n gi\u1ea3m d\u1ea7n\n    ketQua.sort((a,b)=>b.diemXT-a.diemXT);\n\n    \/\/ Hi\u1ec3n th\u1ecb b\u1ea3ng k\u1ebft qu\u1ea3\n    let html = `<div class=\"alert alert-info mb-2 py-2\">C\u00e1c ng\u00e0nh\/t\u1ed5 h\u1ee3p b\u1ea1n c\u00f3 th\u1ec3 \u0111\u0103ng k\u00fd v\u1edbi t\u1ed5 h\u1ee3p \u0111i\u1ec3m cao nh\u1ea5t, \u0111\u00e3 t\u00ednh \u01b0u ti\u00ean KV\/\u0110T.<br>\n    <b>B\u1ea1n n\u00ean \u0111\u0103ng k\u00fd nguy\u1ec7n v\u1ecdng (NV) ng\u00e0nh c\u00f3 \u0111i\u1ec3m x\u00e9t tuy\u1ec3n cao \u0111\u1ec3 t\u1ed1i \u0111a c\u01a1 h\u1ed9i tr\u00fang tuy\u1ec3n.<\/b><\/div>\n    <table class=\"table table-bordered table-min align-middle mt-1\"><thead>\n    <tr>\n        <th>Ng\u00e0nh<\/th><th>M\u00e3<\/th><th>T\u1ed5 h\u1ee3p<\/th><th>M\u00f4n<\/th><th>\u0110i\u1ec3m t\u1ed5 h\u1ee3p<\/th>\n        <th>\u01afu ti\u00ean QC<\/th><th><b>\u0110i\u1ec3m XT<\/b><\/th>\n        <th>Ch\u1ecdn ng\u00e0nh<\/th>\n    <\/tr><\/thead><tbody>`;\n    ketQua.forEach((r,i)=>{\n        html+=`<tr>\n            <td>${r.nganh}<\/td>\n            <td>${r.code}<\/td>\n            <td class=\"${i===0?'score-best':'score-other'}\">${r.tohop}<\/td>\n            <td>${r.mon.map(m=>`${monMap[m]||m} (${m})`).join(\"; \")}<\/td>\n            <td><b class=\"${i===0?'score-best':'score-other'}\">${r.diemTH.toFixed(2)}<\/b><\/td>\n            <td>${r.diemUuQC>0?r.diemUuQC.toFixed(2):\"\"}<\/td>\n            <td><b class=\"${i===0?'score-best':'score-other'}\">${r.diemXT.toFixed(2)}<\/b><\/td>\n            <td><button class=\"btn btn-sm btn-outline-primary\" onclick=\"showDetail('${r.code}','${r.tohop}')\">Xem chi ti\u1ebft<\/button><\/td>\n        <\/tr>`;\n    });\n    html += \"<\/tbody><\/table>\";\n\n    html += `<div class=\"small text-muted\">\u01afu ti\u00ean ch\u1ecdn ng\u00e0nh\/t\u1ed5 h\u1ee3p \u0111i\u1ec3m cao nh\u1ea5t.<br>\u0110i\u1ec3m t\u1ed5 h\u1ee3p: t\u1ed5ng \u0111i\u1ec3m 3 m\u00f4n theo t\u1ed5 h\u1ee3p x\u00e9t tuy\u1ec3n. M\u1ed9t s\u1ed1 ng\u00e0nh\/t\u1ed5 h\u1ee3p c\u00f3 nh\u00e2n h\u1ec7 s\u1ed1, \u01b0u ti\u00ean QC ch\u1ec9 \u00e1p d\u1ee5ng khi t\u1ed5ng t\u1ed5 h\u1ee3p &ge;22.5.<\/div>`;\n    document.getElementById(\"suggestBox\").innerHTML = html;\n    document.getElementById(\"suggestCard\").style.display = \"block\";\n}\n\n\/\/ Xem chi ti\u1ebft ng\u00e0nh\/t\u1ed5 h\u1ee3p \u0111\u00e3 ch\u1ecdn (giao di\u1ec7n nh\u01b0 tra t\u1eebng ng\u00e0nh g\u1ed1c)\nfunction showDetail(code, tohop) {\n    let monDiem = {};\n    document.querySelectorAll(\".mon-input\").forEach(inp=>{\n        let val = parseFloat(inp.value);\n        if (!isNaN(val)) monDiem[inp.id.replace(\"mon_\",\"\")] = val;\n    });\n    let nganh = nganhList.find(n=>n.code===code);\n    let combos = nganh.combos.split(\";\").map(x=>x.trim()).filter(Boolean);\n    let kv = document.getElementById(\"kvSelect\").value;\n    let dt = document.getElementById(\"dtSelect\").value;\n    let diemUu = diemUuTien(kv,dt);\n    let w = weightedMajors[nganh.code];\n    let result = null;\n    combos.forEach(cb=>{\n        if (cb!==tohop) return;\n        let mons = toHopMap[cb];\n        if (!mons || mons.length!==3) return;\n        if (!mons.every(m=>monDiem[m]!==undefined)) return;\n        let score = 0;\n        if (w && mons.includes(w.main)) {\n            let idx = mons.indexOf(w.main);\n            let diemMain = monDiem[w.main];\n            let diemOther1 = monDiem[mons[(idx+1)%3]];\n            let diemOther2 = monDiem[mons[(idx+2)%3]];\n            score = (diemMain*2 + diemOther1 + diemOther2)*3\/4;\n        } else {\n            score = mons.map(m=>monDiem[m]).reduce((a,b)=>a+b,0);\n        }\n        let diemUuQC = (score>=22.5&&diemUu>0)?((30-score)\/7.5*diemUu):0;\n        let diemXT = score + (score>=22.5 ? diemUuQC : diemUu);\n        result = {cb,mons,score,diemUuQC,diemXT};\n    });\n    let html = `<div class=\"alert alert-success mb-2\">Chi ti\u1ebft ng\u00e0nh: <b>${nganh.name} (${nganh.code})<\/b><br>\n    <b>T\u1ed5 h\u1ee3p:<\/b> ${tohop} (${result.mons.map(m=>monMap[m]||m).join(', ')})<br>\n    <b>\u0110i\u1ec3m t\u1ed5 h\u1ee3p:<\/b> ${result.score.toFixed(2)}<br>\n    <b>\u0110i\u1ec3m \u01b0u ti\u00ean QC:<\/b> ${result.diemUuQC.toFixed(2)}<br>\n    <b>\u0110i\u1ec3m x\u00e9t tuy\u1ec3n:<\/b> <span class=\"score-best\">${result.diemXT.toFixed(2)}<\/span>\n    <br><a href=\"#\" onclick=\"document.getElementById('suggestCard').scrollIntoView({behavior:'smooth'})\">Quay l\u1ea1i b\u1ea3ng g\u1ee3i \u00fd<\/a>\n    <\/div>`;\n    document.getElementById(\"suggestBox\").innerHTML = html;\n}\n\n\/\/ Giao di\u1ec7n\nrenderSubjectInputs();\ndocument.getElementById(\"suggestBtn\").onclick = suggestMajors;\n\n<\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>G\u1ee3i \u00fd ng\u00e0nh theo \u0111i\u1ec3m t\u1ed5 h\u1ee3p &#8211; QNU G\u1ee2I \u00dd NG\u00c0NH \u0110\u0102NG K\u00dd THEO \u0110I\u1ec2M T\u1ed4 H\u1ee2P &#8211; QNU 1. Nh\u1eadp \u0111i\u1ec3m c\u00e1c m\u00f4n (l\u1edbp 12) H\u1ecd t\u00ean th\u00ed sinh: Khu v\u1ef1c: KV3 (0)KV2 (0.25)KV2-NT (0.5)KV1 (0.75) \u0110\u1ed1i t\u01b0\u1ee3ng \u01b0u ti\u00ean: Kh\u00f4ng\u01afT2 (1 \u0111i\u1ec3m)\u01afT1 (2 \u0111i\u1ec3m) G\u1ee3i \u00fd ng\u00e0nh ph\u00f9 h\u1ee3p Ch\u1ec9 c\u1ea7n nh\u1eadp&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-4621","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/posts\/4621","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4621"}],"version-history":[{"count":2,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/posts\/4621\/revisions"}],"predecessor-version":[{"id":4625,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=\/wp\/v2\/posts\/4621\/revisions\/4625"}],"wp:attachment":[{"href":"https:\/\/labantrithuc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labantrithuc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}