您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Show some knowledges for beginners on AtCoder.
// ==UserScript== // @name AtCoderNotesForBeginners // @namespace https://github.com/AwashAmityOak // @version 0.2.1 // @description Show some knowledges for beginners on AtCoder. // @author AwashAmityOak // @license MIT // @match https://atcoder.jp/contests/*/tasks/* // @grant none // @copyright 2024 AwashAmityOak (https://github.com/AwashAmityOak) // ==/UserScript== (function () { "use strict"; const getTypeSizeTable = () => { const table = document.createElement("table"); table.classList.add("table"); table.classList.add("table-bordered"); table.classList.add("table-striped"); table.innerHTML = ` <thead> <tr> <th>型</th> <th>範囲</th> </tr> </thead> <tbody> <tr> <td><code>int</code></td> <td> <var>-2^{31}, \\ldots, 2^{31}-1</var> <var>(-2 \\times 10^9, \\ldots, 2 \\times 10^9)</var> </td> </tr> <tr> <td><code>long long</code></td> <td> <var>-2^{63}, \\ldots, 2^{63}-1</var> <var>(-9 \\times 10^{18}, \\ldots, 9 \\times 10^{18})</var> </td> </tr> </tbody> `; table.querySelectorAll("var").forEach(e=>{ e.innerHTML = "\\(" + e.innerHTML + "\\)"; }); renderMathInElement(table, katexOptions); return table; }; const getTimeComplexityTable = () => { const table = document.createElement("table"); table.classList.add("table"); table.classList.add("table-bordered"); table.classList.add("table-striped"); table.innerHTML = ` <thead> <tr> <th>入力サイズ</th> <th>時間計算量</th> </tr> </thead> <tbody> <tr> <td><var>N \\leq 10</var></td> <td><var>O(N!)</var></td> </tr> <tr> <td><var>N \\leq 20</var></td> <td><var>O(2^N)</var></td> </tr> <tr> <td><var>N \\leq 50</var></td> <td><var>O(N^4)</var></td> </tr> <tr> <td><var>N \\leq 500</var></td> <td><var>O(N^3)</var></td> </tr> <tr> <td><var>N \\leq 5000</var></td> <td><var>O(N^2)</var></td> </tr> <tr> <td><var>N \\leq 10^5</var></td> <td><var>O(N)</var> or <var>O(N \\log N)</var></td> </tr> <tr> <td><var>10^5 < N</var></td> <td><var>O(\\log N)</var> or <var>O(1)</var></td> </tr> </tbody> `; table.querySelectorAll("var").forEach(e=>{ e.innerHTML = "\\(" + e.innerHTML + "\\)"; }); renderMathInElement(table, katexOptions); return table; }; const elements = document.querySelectorAll(".part > section"); for (const parent of elements) { if (parent.innerHTML.indexOf("制約") == -1) { continue; } const typeSizeElement = document.createElement("details"); typeSizeElement.appendChild((() => { const s = document.createElement("summary"); s.innerHTML = "型のサイズ"; return s; })()); const typeSizeTable = getTypeSizeTable(); typeSizeTable.style.marginTop = "5px"; typeSizeTable.style.marginBottom = "5px"; typeSizeElement.appendChild(typeSizeTable); typeSizeElement.style.marginBottom = "10px"; parent.appendChild(typeSizeElement); const timeComplexityElement = document.createElement("details"); timeComplexityElement.appendChild((() => { const s = document.createElement("summary"); s.innerHTML = "時間計算量"; return s; })()); const timeComplexityTable = getTimeComplexityTable(); timeComplexityTable.style.marginTop = "5px"; timeComplexityTable.style.marginBottom = "5px"; timeComplexityElement.appendChild(timeComplexityTable); parent.appendChild(timeComplexityElement); } })();