小米秋招笔试
对选择器权重排序,但是只过了 36%,GPT 也搞不懂哪里不对。
🔍 展开代码
jsconst rl = require("readline").createInterface({ input: process.stdin, }); const inputs = []; rl.on("line", (line) => inputs.push(line)); rl.on("close", () => { const n = +inputs[0]; const selectors = inputs.slice(1).map((s) => s.split(" ")); const result = deal(n, selectors); console.log(result); }); function deal(n, selectors) { const infos = Array.from({ length: n }, () => {}); for (let i = 0; i < n; i++) { const currentSelector = selectors[i]; let value = 0; for (const s of currentSelector) { if (s.startsWith("#")) value += 100; else if (s.startsWith(".")) value += 10; else value += 1; } infos[i] = { value, index: i, }; } infos.sort((a, b) => { if (a.value === b.value) return b.index - a.index; return b.value - a.value; }); let res = ""; for (const i of infos) { res += ` ${i.index + 1}`; } return res.slice(1); }
有 n 次网络攻击,现在分析器会分析得到其中 m 次攻击是不同性质的。并给出这 m 组数据(按照两行格式,每一列的两个数表示这两次攻击不同)。现在要求你对给定的 times 组测试数据检验,分析器的结果是否正确并输出。当且仅当三次攻击的两两组合有且仅有一组是性质不同的,我们才认为分析器结果失误。
只过了 18%,同样也是令 GPT 不觉得错误……
🔍 展开代码
jsconst rl = require("readline").createInterface({ input: process.stdin, }); const inputs = []; rl.on("line", (line) => inputs.push(line)); rl.on("close", () => { const times = +inputs[0]; for (let i = 1; i <= 1 + (times - 1) * 3; i += 3) { const [n, m] = inputs[i].split(" ").map(Number); const case1 = inputs[i + 1].split(" ").map(Number); const case2 = inputs[i + 2].split(" ").map(Number); const result = deal(n, m, case1, case2); console.log(result); } }); function deal(n, m, case1, case2) { const analysis = Array.from({ length: m }, (_, index) => [case1[index], case2[index]].sort((a, b) => a - b), ); const results = []; const used = new Set(); function dfs(path) { if (path.length === 3) { results.push(path.slice()); return; } for (let i = 1; i <= n; i++) { if (used.has(i)) continue; used.add(i); dfs(path.concat(i)); used.delete(i); } } dfs([]); for (const comp of results) { const a = [comp[0], comp[1]].sort((a, b) => a - b); const b = [comp[1], comp[2]].sort((a, b) => a - b); const c = [comp[0], comp[2]].sort((a, b) => a - b); const flag1 = analysis.some((pair) => arraysEqual(pair, a)); const flag2 = analysis.some((pair) => arraysEqual(pair, b)); const flag3 = analysis.some((pair) => arraysEqual(pair, c)); if (flag1 + flag2 + flag3 === 1) return "No"; } return "Yes"; } function arraysEqual(arr1, arr2) { if (arr1.length !== arr2.length) return false; for (let i = 0; i < arr1.length; i++) { if (arr1[i] !== arr2[i]) return false; } return true; }