diff --git a/.wakatime-project b/.wakatime-project deleted file mode 100644 index 5fd3436..0000000 --- a/.wakatime-project +++ /dev/null @@ -1 +0,0 @@ -Noisy Shadow 59 \ No newline at end of file diff --git a/1224/CMakeLists.txt b/20181224/CMakeLists.txt similarity index 95% rename from 1224/CMakeLists.txt rename to 20181224/CMakeLists.txt index 17e13f8..7511e15 100644 --- a/1224/CMakeLists.txt +++ b/20181224/CMakeLists.txt @@ -1,11 +1,11 @@ -cmake_minimum_required(VERSION 3.0) -set(CMAKE_CXX_STANDARD 17) -if(MSVC) - add_compile_options("/Zc:__cplusplus") -endif() -include_directories("C:\\Programs\\GCC\\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\\lib\\gcc\\x86_64-w64-mingw32\\8.1.0\\include\\c++\\x86_64-w64-mingw32") -add_executable(P01 P01.cpp) -add_executable(P02 P02.cpp) -add_executable(P03 P03.cpp) -add_executable(P04 P04.cpp) +cmake_minimum_required(VERSION 3.0) +set(CMAKE_CXX_STANDARD 17) +if(MSVC) + add_compile_options("/Zc:__cplusplus") +endif() +include_directories("C:\\Programs\\GCC\\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\\lib\\gcc\\x86_64-w64-mingw32\\8.1.0\\include\\c++\\x86_64-w64-mingw32") +add_executable(P01 P01.cpp) +add_executable(P02 P02.cpp) +add_executable(P03 P03.cpp) +add_executable(P04 P04.cpp) add_executable(P05 P05.cpp) \ No newline at end of file diff --git a/1224/P01.cpp b/20181224/P01.cpp similarity index 96% rename from 1224/P01.cpp rename to 20181224/P01.cpp index e1bad49..3799878 100644 --- a/1224/P01.cpp +++ b/20181224/P01.cpp @@ -1,21 +1,21 @@ -#define _CRT_SECURE_NO_WARNINGS -#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING -#include -using namespace std; -const int N = 1e5 + 50; -int l[N], r[N]; -int main() -{ - int n; - scanf("%d", &n); - for (int i = 1; i <= n; i++) - scanf("%d%d", l + i, r + i); - int L = *min_element(l + 1, l + n + 1); - int R = *max_element(r + 1, r + n + 1); - int ans = -1; - for (int i = 1; i <= n; i++) - if (l[i] == L && r[i] == R) - ans = i; - printf("%d", ans); - return 0; -} +#define _CRT_SECURE_NO_WARNINGS +#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING +#include +using namespace std; +const int N = 1e5 + 50; +int l[N], r[N]; +int main() +{ + int n; + scanf("%d", &n); + for (int i = 1; i <= n; i++) + scanf("%d%d", l + i, r + i); + int L = *min_element(l + 1, l + n + 1); + int R = *max_element(r + 1, r + n + 1); + int ans = -1; + for (int i = 1; i <= n; i++) + if (l[i] == L && r[i] == R) + ans = i; + printf("%d", ans); + return 0; +} diff --git a/1224/P02.cpp b/20181224/P02.cpp similarity index 96% rename from 1224/P02.cpp rename to 20181224/P02.cpp index 3929cf1..4333afe 100644 --- a/1224/P02.cpp +++ b/20181224/P02.cpp @@ -1,22 +1,22 @@ -#define _CRT_SECURE_NO_WARNINGS -#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING -#include -using namespace std; -const int N = 55; -int a1[N], a2[N], b[N], d[N]; -int main() -{ - int n; - scanf("%d", &n); - for (int i = 1; i < n; i++) - scanf("%d", a1 + i), a1[i] += a1[i - 1]; - for (int i = 1; i < n; i++) - scanf("%d", a2 + i), a2[i] += a2[i - 1]; - for (int i = 0; i < n; i++) - scanf("%d", b + i); - for (int i = 0; i < n; i++) - d[i] = a1[i] + b[i] + (a2[n - 1] - a2[i]); - sort(d, d + n); - printf("%d", d[0] + d[1]); - return 0; -} +#define _CRT_SECURE_NO_WARNINGS +#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING +#include +using namespace std; +const int N = 55; +int a1[N], a2[N], b[N], d[N]; +int main() +{ + int n; + scanf("%d", &n); + for (int i = 1; i < n; i++) + scanf("%d", a1 + i), a1[i] += a1[i - 1]; + for (int i = 1; i < n; i++) + scanf("%d", a2 + i), a2[i] += a2[i - 1]; + for (int i = 0; i < n; i++) + scanf("%d", b + i); + for (int i = 0; i < n; i++) + d[i] = a1[i] + b[i] + (a2[n - 1] - a2[i]); + sort(d, d + n); + printf("%d", d[0] + d[1]); + return 0; +} diff --git a/1224/P03.cpp b/20181224/P03.cpp similarity index 96% rename from 1224/P03.cpp rename to 20181224/P03.cpp index 1257ba3..4ca7145 100644 --- a/1224/P03.cpp +++ b/20181224/P03.cpp @@ -1,30 +1,30 @@ -#define _CRT_SECURE_NO_WARNINGS -#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING -#include -using namespace std; -const int N = 1 << 20; -char buf[N]; -int diff[N]; -int calc(char a, char b) -{ - if (a > b) swap(a, b); - return min(b - a, a + 26 - b); -} -int main() -{ - int n, p; - scanf("%d%d%s", &n, &p, buf); - p--; - if (p >= (n >> 1)) p = n - p - 1, reverse(buf, buf + n); - for (int i = 0; i < (n >> 1); i++) diff[i] = calc(buf[i], buf[n - i - 1]); - int L = p, R = p; - for (int i = p; i >= 0; i--) - if (diff[i]) L = i; - for (int i = p; i < (n >> 1); i++) - if (diff[i]) R = i; - int base_ans = accumulate(diff + L, diff + R + 1, 0); - if (L == p) return printf("%d", base_ans + R - p), 0; - if (R == p) return printf("%d", base_ans + p - L), 0; - printf("%d", base_ans + R - L + min(R - p, p - L)); - return 0; -} +#define _CRT_SECURE_NO_WARNINGS +#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING +#include +using namespace std; +const int N = 1 << 20; +char buf[N]; +int diff[N]; +int calc(char a, char b) +{ + if (a > b) swap(a, b); + return min(b - a, a + 26 - b); +} +int main() +{ + int n, p; + scanf("%d%d%s", &n, &p, buf); + p--; + if (p >= (n >> 1)) p = n - p - 1, reverse(buf, buf + n); + for (int i = 0; i < (n >> 1); i++) diff[i] = calc(buf[i], buf[n - i - 1]); + int L = p, R = p; + for (int i = p; i >= 0; i--) + if (diff[i]) L = i; + for (int i = p; i < (n >> 1); i++) + if (diff[i]) R = i; + int base_ans = accumulate(diff + L, diff + R + 1, 0); + if (L == p) return printf("%d", base_ans + R - p), 0; + if (R == p) return printf("%d", base_ans + p - L), 0; + printf("%d", base_ans + R - L + min(R - p, p - L)); + return 0; +} diff --git a/1224/P04.cpp b/20181224/P04.cpp similarity index 96% rename from 1224/P04.cpp rename to 20181224/P04.cpp index 39078c9..af90ea9 100644 --- a/1224/P04.cpp +++ b/20181224/P04.cpp @@ -1,21 +1,21 @@ -#define _CRT_SECURE_NO_WARNINGS -#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING -#include -using namespace std; -const int N = 1 << 20; -char buf[N]; -int main() -{ - scanf("%s", buf); - int len = strlen(buf); - bool flag = false; - putchar(buf[0]); - for (int i = 1; i < len;) - if (memcmp(buf + i, "dot", 3) == 0 && i + 3 < len) - putchar('.'), i += 3; - else if (!flag && memcmp(buf + i, "at", 2) == 0 && i + 2 < len) - putchar('@'), i += 2, flag = true; - else - putchar(buf[i]), i++; - return 0; -} +#define _CRT_SECURE_NO_WARNINGS +#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING +#include +using namespace std; +const int N = 1 << 20; +char buf[N]; +int main() +{ + scanf("%s", buf); + int len = strlen(buf); + bool flag = false; + putchar(buf[0]); + for (int i = 1; i < len;) + if (memcmp(buf + i, "dot", 3) == 0 && i + 3 < len) + putchar('.'), i += 3; + else if (!flag && memcmp(buf + i, "at", 2) == 0 && i + 2 < len) + putchar('@'), i += 2, flag = true; + else + putchar(buf[i]), i++; + return 0; +} diff --git a/1224/P05.cpp b/20181224/P05.cpp similarity index 95% rename from 1224/P05.cpp rename to 20181224/P05.cpp index 4b3d7e6..a1d2e49 100644 --- a/1224/P05.cpp +++ b/20181224/P05.cpp @@ -1,29 +1,29 @@ -#define _CRT_SECURE_NO_WARNINGS -#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING -#include -using namespace std; -const int N = 1 << 10; -int w[N], b[N]; -int p[N]; -bool u[N]; -int main() -{ - int n, m; - scanf("%d%d", &n, &m); - for (int i = 1; i <= n; i++) - scanf("%d", w + i); - for (int i = 1; i <= m; i++) - scanf("%d", b + i); - memset(p, 0, sizeof(p)); - long long ans = 0; - for (int i = 1; i <= m; i++) - { - memset(u, 0, sizeof(u)); - for (int j = p[b[i]] + 1; j < i; j++) - if (!u[b[j]]) - ans += w[b[j]], u[b[j]] = true; - p[b[i]] = i; - } - printf("%lld", ans); - return 0; -} +#define _CRT_SECURE_NO_WARNINGS +#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING +#include +using namespace std; +const int N = 1 << 10; +int w[N], b[N]; +int p[N]; +bool u[N]; +int main() +{ + int n, m; + scanf("%d%d", &n, &m); + for (int i = 1; i <= n; i++) + scanf("%d", w + i); + for (int i = 1; i <= m; i++) + scanf("%d", b + i); + memset(p, 0, sizeof(p)); + long long ans = 0; + for (int i = 1; i <= m; i++) + { + memset(u, 0, sizeof(u)); + for (int j = p[b[i]] + 1; j < i; j++) + if (!u[b[j]]) + ans += w[b[j]], u[b[j]] = true; + p[b[i]] = i; + } + printf("%lld", ans); + return 0; +} diff --git a/TmplPatch_2019Nanjing/proof_of_inv_table.md b/TmplPatch_2019Nanjing/proof_of_inv_table.md deleted file mode 100644 index 2613716..0000000 --- a/TmplPatch_2019Nanjing/proof_of_inv_table.md +++ /dev/null @@ -1,15 +0,0 @@ -```cpp -invT[1] = 1; -for (int i = 2; i < N; i++) - invT[i] = (mod - mod / i) * invT[mod % i] % mod; -``` - -$$ -p=ax+b \\ -ax+b \equiv 0 \pmod p\\ -ab^{-1}+x^{-1} \equiv 0 \pmod p \\ -x^{-1} \equiv -ab^{-1} \pmod p \\ -x^{-1} \equiv -\left \lfloor \frac{p}{x} \right \rfloor (p\bmod x)^{-1} \pmod p \\ -x^{-1} \equiv (p-p/x) (p\bmod x)^{-1} \pmod p \\ -$$ - diff --git a/java/1.java b/java/1.java deleted file mode 100644 index 67b73a7..0000000 --- a/java/1.java +++ /dev/null @@ -1,20 +0,0 @@ -import java.io.PrintStream; -import java.math.BigInteger; -import java.util.Scanner; -import java.util.StringTokenizer; - -class Main { - public static void main(String[] argv) { - String sp = System.getProperty("line.separator"); - PrintStream cout = System.out; - try (Scanner cin = new Scanner(System.in)) { - int T = cin.nextInt(); - for (int t = 1; t <= T; t++) { - BigInteger ba = cin.nextBigInteger(), bb = cin.nextBigInteger(); - cout.printf("Case %d:%s%s + %s = %s%s", t, sp, ba, bb, ba.add(bb), sp); - if (t != T) - cout.println(); - } - } - } -} \ No newline at end of file diff --git a/nw/sock/client.py b/nw/sock/client.py deleted file mode 100644 index 8a0ee7c..0000000 --- a/nw/sock/client.py +++ /dev/null @@ -1,11 +0,0 @@ -from socket import * -from struct import * - -while True: - st = input(">>> ") - s = socket(AF_INET, SOCK_STREAM) - s.connect(("127.0.0.1", 8888)) - s.sendall(pack("!i", len(st.encode()))) - s.sendall(st.encode()) - print(s.recv(len(st)).decode()) - s.close() \ No newline at end of file diff --git a/nw/sock/server.py b/nw/sock/server.py deleted file mode 100644 index 7b829f1..0000000 --- a/nw/sock/server.py +++ /dev/null @@ -1,18 +0,0 @@ -from socket import * -from struct import * -from threading import * -s = socket(AF_INET, SOCK_STREAM) -s.bind(('', 8888)) -s.listen(100) - - -def proc(cs): - msglen = unpack("!i", cs.recv(4))[0] - msg = cs.recv(msglen) - cs.sendall(msg.decode().upper().encode()) - - -while True: - (cs, addr) = s.accept() - # Thread(None, proc, args=(cs, )).start() - proc(cs) diff --git a/str/presentation.pdf b/str/presentation.pdf deleted file mode 100644 index 6122d89..0000000 Binary files a/str/presentation.pdf and /dev/null differ diff --git a/tmp/1.cpp b/tmp/1.cpp deleted file mode 100644 index c2a5bea..0000000 --- a/tmp/1.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include -using namespace std; -uint8_t encode[48] = { - 0x96, 0x62, 0x53, 0x43, 0x6D, 0xF2, 0x8F, 0xBC, - 0x16, 0xEE, 0x30, 0x05, 0x78, 0x00, 0x01, 0x52, - 0xEC, 0x08, 0x5F, 0x93, 0xEA, 0xB5, 0xC0, 0x4D, - 0x50, 0xF4, 0x53, 0xD8, 0xAF, 0x90, 0x2B, 0x34, - 0x81, 0x36, 0x2C, 0xAA, 0xBC, 0x0E, 0x25, 0x8B, - 0xE4, 0x8A, 0xC6, 0xA2, 0x81, 0x9F, 0x75, 0x55}; -int main() -{ - for (int j = 0; j < 6; j++) - { - uint64_t x = *(uint64_t *)&encode[j << 3]; - for (int i = 0; i < 64; i++) - if (x & 1) - x = (x ^ 0xB0004B7679FA26B3uLL) >> 1 | (1ll << 63); - else - x >>= 1; - char *pt = (char *)&x; - for (int i = 0; i < 8; i++) - putchar(pt[i]); - } - return 0; -} \ No newline at end of file diff --git a/tmp/2.cpp b/tmp/2.cpp deleted file mode 100644 index 1b95088..0000000 --- a/tmp/2.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#define _CRT_SECURE_NO_WARNINGS -#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING -#include -using namespace std; -#define CRP(t, x) const t &x -#define OPX(op, t, x) operator op(CRP(t, x)) -#define OPL(t, x) bool OPX(<, t, x) const -#define FIL(x, v) memset(x, v, sizeof(x)) -#define CLR(x) FIL(x, 0) -#define NE1(x) FIL(x, -1) -#define INF(x) FIL(x, 0x3f) -#ifndef _DEBUG -#define _DEBUG 0 -#endif // !_DEBUG -#define IFD if (_DEBUG) -typedef int64_t ll, i64; -typedef uint64_t ull, u64; -template -using enable_if_arithmetic = typename enable_if::value>::type; -template -using enable_if_integral = typename enable_if::value>::type; -inline char getchar(int) -{ - static char buf[64 << 20], *S = buf, *T = buf; - if (S == T) T = fread(S = buf, 1, 64 << 20, stdin) + S; - return S == T ? EOF : *S++; -} -template > -inline void read(T &x) -{ - int ch = x = 0, f = 1; - while (!isdigit(ch = getchar())) - if (ch == '-') f = -1; - for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0'; - x *= f; -} -template > -inline void read(T &x, Args &... args) { read(x), read(args...); } -ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); } -ll fpow(ll a, ll b, ll m) -{ - ll r = 1; - for (; b; b >>= 1, a = a * a % m) - if (b & 1) r = r * a % m; - return r; -} -constexpr double eps = 1e-8; -inline int sgn(double x) { return x > eps ? 1 : x < -eps ? -1 : 0; } -const int N = 2e6 + 50; -char strs[6][N]; -char *ptrs[6]; -char harbin[] = "harbin"; -int main() -{ - int T, n, k; - read(T); - while (T--) - { - for (int i = 0; i < 6; i++) scanf("%s", ptrs[i] = strs[i]); - bool flag = false; - do - { - bool flag2 = true; - for (int i = 0; i < 6 && flag2; i++) - flag2 = flag2 && (strchr(ptrs[i], harbin[i]) != NULL); - flag = flag || flag2; - } while (next_permutation(ptrs, ptrs + 6)); - puts(flag ? "Yes" : "No"); - } - return 0; -} \ No newline at end of file diff --git a/tmp/3.cpp b/tmp/3.cpp deleted file mode 100644 index 8eccb18..0000000 --- a/tmp/3.cpp +++ /dev/null @@ -1,124 +0,0 @@ -#define _CRT_SECURE_NO_WARNINGS -#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING -#include -#include -#include -#include -using namespace std; -#define CRP(t, x) const t &x -#define OPX(op, t, x) operator op(CRP(t, x)) -#define OPL(t, x) bool OPX(<, t, x) const -#define FIL(x, v) memset(x, v, sizeof(x)) -#define CLR(x) FIL(x, 0) -#define NE1(x) FIL(x, -1) -#define INF(x) FIL(x, 0x3f) -#ifndef _DEBUG -#define _DEBUG 0 -#endif // !_DEBUG -#define IFD if (_DEBUG) -typedef int64_t ll, i64; -typedef uint64_t ull, u64; -template -using enable_if_arithmetic = typename enable_if::value>::type; -template -using enable_if_integral = typename enable_if::value>::type; -inline char getchar(int) -{ - static char buf[64 << 20], *S = buf, *T = buf; - if (S == T) T = fread(S = buf, 1, 64 << 20, stdin) + S; - return S == T ? EOF : *S++; -} -template > -inline void read(T &x) -{ - int ch = x = 0, f = 1; - while (!isdigit(ch = getchar())) - if (ch == '-') f = -1; - for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0'; - x *= f; -} -template > -inline void read(T &x, Args &... args) { read(x), read(args...); } -ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); } -ll fpow(ll a, ll b, ll m) -{ - ll r = 1; - for (; b; b >>= 1, a = a * a % m) - if (b & 1) r = r * a % m; - return r; -} -constexpr double eps = 1e-8; -inline int sgn(double x) { return x > eps ? 1 : x < -eps ? -1 : 0; } -const int N = 1e6 + 50; -//__gnu_pbds::gp_hash_table mps[N]; -//map mps[N]; -//__gnu_pbds::tree, __gnu_pbds::ov_tree_tag> mps[N]; -vector mps[N]; -pair ch[N]; -ll cnt[N]; -int ops[N]; -int main() -{ - int T, n, op; - read(T); - while (T--) - { - read(n); - for (int i = 1; i <= n; i++) - { - auto &&curMap = mps[i]; - cnt[i] = 0; - read(op); - ops[i] = op; - if (op == 1) - { - curMap.clear(); - int k, x; - read(k); - while (k--) read(x), curMap.push_back(x); - } - if (op == 2) - { - int x, y; - read(x, y); - ch[i] = {x, y}; - } - } - cnt[n] = 1; - for (int i = n; i; i--) - if (ops[i] == 2) cnt[ch[i].first] += cnt[i], cnt[ch[i].second] += cnt[i]; - /*map endMap; - for (int i = n; i; i--) - if (ops[i] == 1) - for (auto &&p : mps[i]) - endMap[p] += cnt[i]; - pair mx = {0, 0}; - ll len = 0, ans = 0; - for (auto &&p : endMap) mx = max(mx, {p.second, p.first}), len += p.second;*/ - ll mx = 0, mxcnt = 0, len = 0; - for (int i = 1; i <= n; i++) - if (ops[i] == 1 && cnt[i]) - for (auto j : mps[i]) - { - if (mx == 0) - mx = j, mxcnt += cnt[i]; - else if (mx == j) - mxcnt += cnt[i]; - else - { - if (cnt[i] > mxcnt) - mx = j, mxcnt = cnt[i] - mxcnt; - else - mxcnt -= cnt[i]; - } - len += cnt[i]; - } - ll tot = 0; - for (int i = 1; i <= n; i++) - if (ops[i] == 1 && cnt[i]) - for (auto j : mps[i]) - if (j == mx) tot += cnt[i]; - printf("%lld\n", (tot << 1) <= len ? len : (len - tot) << 1); - } - return 0; -} \ No newline at end of file diff --git a/tmp/K.cpp b/tmp/K.cpp deleted file mode 100644 index 4a3594e..0000000 --- a/tmp/K.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#define _CRT_SECURE_NO_WARNINGS -#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING -#include -using namespace std; -#define CRP(t, x) const t &x -#define OPX(op, t, x) operator op(CRP(t, x)) -#define OPL(t, x) bool OPX(<, t, x) const -#define FIL(x, v) memset(x, v, sizeof(x)) -#define CLR(x) FIL(x, 0) -#define NE1(x) FIL(x, -1) -#define INF(x) FIL(x, 0x3f) -#ifndef _DEBUG -#define _DEBUG 0 -#endif // !_DEBUG -#define IFD if (_DEBUG) -typedef long long ll, i64; - -constexpr double eps = 1e-8; -int sgn(double x) -{ - if (x > eps) - return 1; - if (x < -eps) - return -1; - return 0; -} -template -using enable_if_arithmetic = typename enable_if::value>::type; -template -using enable_if_integral = typename enable_if::value>::type; -template > -struct Point -{ - T x, y; - Point OPX(-, Point, rhs) const { return {x - rhs.x, y - rhs.y}; } - T OPX(*, Point, rhs) const { return x * rhs.x + y * rhs.y; } - T OPX (^, Point, rhs) const { return x * rhs.y - y * rhs.x; } - T len2() const { return x * x + y * y; } - double len() const { return sqrt(len2()); } -}; -template -struct Line -{ - Point s, e; - T len2() const { return (s - e).len2(); } - double len() const { return (s - e).len(); } - bool contains(CRP(Point, p)) const { return sgn((s - p) ^ (e - p)) == 0 && sgn((s - p) * (e - p)) <= 0; } -}; -#define Point Point -#define Line Line -double area(CRP(Point, p1), CRP(Point, p2), CRP(Point, p3)) -{ - return abs((p3 - p1) ^ (p2 - p1)); -} -int main2() -{ - Point p[3], e; - while (~scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &p[0].x, &p[0].y, &p[1].x, &p[1].y, &p[2].x, &p[2].y, &e.x, &e.y)) - { - Line ls[3] = {{p[1], p[2]}, {p[0], p[2]}, {p[0], p[1]}}; - bool flag = true; - for (int i = 0; i < 3 && flag; i++) - if (ls[i].contains(e)) - { - int l = (i + 2) % 3, r = (i + 1) % 3; - int near = (e - p[l]).len2() < (e - p[r]).len2() ? l : r; - int other = l + r - near; - double len = ls[i].len() * ls[near].len() / 2 / (e - p[other]).len(); - double fulllen = ls[near].len(); - Point dif = p[i] - p[other]; - printf("%.12lf %.12lf\n", p[other].x + dif.x * len / fulllen, p[other].y + dif.y * len / fulllen); - if (sgn(area(p[other], e, {p[other].x + dif.x * len / fulllen, p[other].y + dif.y * len / fulllen}) * 2 - area(p[0], p[1], p[2]))) - return -1; - flag = false; - } - if (flag) - puts("-1"); - } - return 0; -} -int main() -{ - Point p[3], e; - while (~scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &p[0].x, &p[0].y, &p[1].x, &p[1].y, &p[2].x, &p[2].y, &e.x, &e.y)) - { - Line ls[3] = {{p[1], p[2]}, {p[0], p[2]}, {p[0], p[1]}}; - bool flag = true; - for (int i = 0; i < 3 && flag; i++) - if (ls[i].contains(e)) - { - int l = (i + 2) % 3, r = (i + 1) % 3; - int near = (e - p[l]).len2() < (e - p[r]).len2() ? l : r; - int other = l + r - near; - double len = sqrt(ls[i].len2() * ls[near].len2() / 4 / (e - p[other]).len2()); - double fulllen = ls[near].len(); - Point dif = p[i] - p[other]; - printf("%.12lf %.12lf\n", p[other].x + dif.x * len / fulllen, p[other].y + dif.y * len / fulllen); - if (sgn(area(p[other], e, {p[other].x + dif.x * len / fulllen, p[other].y + dif.y * len / fulllen}) * 2 - area(p[0], p[1], p[2]))) - return -1; - flag = false; - } - if (flag) - puts("-1"); - } - return 0; -} \ No newline at end of file diff --git a/tmp/s01.cpp b/tmp/s01.cpp deleted file mode 100644 index 8a24859..0000000 --- a/tmp/s01.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#define _CRT_SECURE_NO_WARNINGS -#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING -#include -using namespace std; -#define CRP(t, x) const t &x -#define OPX(op, t, x) operator op(CRP(t, x)) -#define OPL(t, x) bool OPX(<, t, x) const -#define FIL(x, v) memset(x, v, sizeof(x)) -#define CLR(x) FIL(x, 0) -#define NE1(x) FIL(x, -1) -#define INF(x) FIL(x, 0x3f) -#ifndef _DEBUG -#define _DEBUG 0 -#endif // !_DEBUG -#define IFD if (_DEBUG) -typedef int64_t ll, i64; -typedef uint64_t ull, u64; -template -using enable_if_arithmetic = typename enable_if::value>::type; -template -using enable_if_integral = typename enable_if::value>::type; -inline char getchar(int) -{ - static char buf[64 << 20], *S = buf, *T = buf; - if (S == T) T = fread(S = buf, 1, 64 << 20, stdin) + S; - return S == T ? EOF : *S++; -} -template > -inline void read(T &x) -{ - int ch = x = 0, f = 1; - while (!isdigit(ch = getchar())) - if (ch == '-') f = -1; - for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0'; - x *= f; -} -template > -inline void read(T &x, Args &... args) { read(x), read(args...); } -ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); } -ll fpow(ll a, ll b, ll m) -{ - ll r = 1; - for (; b; b >>= 1, a = a * a % m) - if (b & 1) r = r * a % m; - return r; -} -constexpr double eps = 1e-8; -inline int sgn(double x) { return x > eps ? 1 : x < -eps ? -1 : 0; } -const int N = 1e4 + 50; -int minfac[N], primes[N], pcnt; -int main() -{ - for (ll i = 2; i < N; i++) - { - if (minfac[i] == 0) - minfac[i] = i, primes[pcnt++] = i; - for (int j = 0; j < pcnt && primes[j] <= minfac[i] && i * primes[j] < N; j++) - minfac[i * primes[j]] = primes[j]; - } - return 0; -} \ No newline at end of file diff --git a/tmp/test1.ipynb b/tmp/test1.ipynb deleted file mode 100644 index fe40569..0000000 --- a/tmp/test1.ipynb +++ /dev/null @@ -1,49 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 2, - "metadata": { - "language_info": { - "name": "python", - "codemirror_mode": { - "name": "ipython", - "version": 3 - } - }, - "orig_nbformat": 2, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "npconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": 3 - }, - "cells": [ - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "array([[0., 0., 0.],\n [0., 0., 0.],\n [0., 0., 0.],\n [0., 0., 0.],\n [0., 0., 0.]])" - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.zeros((5,3))" - ] - } - ] -} \ No newline at end of file diff --git a/tmpl2020/Graph.cpp b/tmpl2020/Graph.cpp deleted file mode 100644 index a047e36..0000000 --- a/tmpl2020/Graph.cpp +++ /dev/null @@ -1,19 +0,0 @@ -template -struct Graph -{ - // Basic - struct Edge - { - int nxt, to, len; - }; - int adj[N], ecnt; - Edge E[M]; - void addEdge(int f, int t, int l) - { - E[++ecnt] = {adj[f], t, l}; - adj[f] = ecnt; - } - // Dijkstra - - // ISAP -}; \ No newline at end of file