diff --git a/OnlineJudges/lydsy/1800.cpp b/OnlineJudges/lydsy/1800.cpp new file mode 100644 index 0000000..76a304c --- /dev/null +++ b/OnlineJudges/lydsy/1800.cpp @@ -0,0 +1,16 @@ +#include +int len[25], ans; +int main() +{ + int n; + scanf("%d", &n); + for (int i = 1; i <= n; i++) scanf("%d", &len[i]), len[i] += len[i - 1]; + for (int i = 0 + 1; i <= n; i++) + for (int j = i + 1; j <= n; j++) + for (int k = j + 1; k <= n; k++) + for (int l = k + 1; l <= n; l++) + if (len[j] - len[i] == len[l] - len[k] && len[n] - len[l] + len[i] == len[k] - len[j]) + ans++; + printf("%d", ans); + return 0; +} \ No newline at end of file diff --git a/OnlineJudges/lydsy/2048.cpp b/OnlineJudges/lydsy/2048.cpp new file mode 100644 index 0000000..74c204f --- /dev/null +++ b/OnlineJudges/lydsy/2048.cpp @@ -0,0 +1,18 @@ +#include +#include +const double eps = 1e-10, r = 0.5772156649; +typedef long long ll; +int main() +{ + double ans; + ll n, m; + ans = n = m = 0; + scanf("%lld%lld", &n, &m); + if (n <= 10000) + for (int i = 1; i <= n; i++) + ans += 0.5 / i; + else + ans = log(n + 1.0) + r, ans /= 2.0; + ans *= m; + printf("%d\n", (int)(ans - eps)); +} \ No newline at end of file diff --git a/OnlineJudges/lydsy/2120.cpp b/OnlineJudges/lydsy/2120.cpp new file mode 100644 index 0000000..256397b --- /dev/null +++ b/OnlineJudges/lydsy/2120.cpp @@ -0,0 +1,34 @@ +#include +int a[10010], f[20010], map[1001001], idx; +int main() +{ + int n, m; + scanf("%d%d", &n, &m); + for (int i = 1, x; i <= n; i++) + { + scanf("%d", &x); + if (!map[x]) + map[x] = ++idx; + a[i] = map[x]; + } + for (int i = 1, x, y; i <= m; i++) + { + char ch; + scanf("%s%d%d", &ch, &x, &y); + if (ch == 'R') + { + if (!map[y]) + map[y] = ++idx; + a[x] = map[y]; + } + else + { + int ans = 0; + for (int j = x; j <= y; j++) + if (f[a[j]] != i) + ans++, f[a[j]] = i; + printf("%d\n", ans); + } + } + return 0; +} \ No newline at end of file diff --git a/OnlineJudges/lydsy/2208.cpp b/OnlineJudges/lydsy/2208.cpp new file mode 100644 index 0000000..b2eb7e6 --- /dev/null +++ b/OnlineJudges/lydsy/2208.cpp @@ -0,0 +1,39 @@ +#include +#include +int n, ans; +int next[2010 * 2010], to[2010 * 2010], head[2010], idx; +char buf[2010]; +bool vis[2010]; +void addEdge(int f, int t) +{ + idx++; + next[idx] = head[f]; + head[f] = idx; + to[idx] = t; +} +void dfs(int x) +{ + ans++; + vis[x] = true; + for (int cur = head[x]; cur; cur = next[cur]) + if (!vis[to[cur]]) + dfs(to[cur]); +} +int main() +{ + scanf("%d\n", &n); + for (int i = 0; i < n; i++) + { + fgets(buf, 2010, stdin); + for (int j = 0; j < n; j++) + if (buf[j] == '1') + addEdge(i + 1, j + 1); + } + for (int i = 1; i <= n; i++) + { + memset(vis, 0, sizeof(vis)); + dfs(i); + } + printf("%d", ans); + return 0; +} \ No newline at end of file diff --git a/OnlineJudges/lydsy/4195.cpp b/OnlineJudges/lydsy/4195.cpp new file mode 100644 index 0000000..817eb06 --- /dev/null +++ b/OnlineJudges/lydsy/4195.cpp @@ -0,0 +1,36 @@ +#include +#include +#include +inline void readInt(int &x) +{ + int ch = x = 0; + while (!isdigit(ch = getchar())); + for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0'; +} +int fa[2000010], I[1000010], J[1000010], E[1000010]; +int Find(int x) { return fa[x] == x ? x : fa[x] = Find(fa[x]); } +int main() +{ + int t, n; + readInt(t); + while (t--) + { + readInt(n); + for (int i = 0; i < 200005; i++) fa[i] = i; + std::map H; + for (int i = 0; i < n; i++) + { + readInt(I[i]), readInt(J[i]), readInt(E[i]); + if (H.find(I[i]) == H.end()) H[I[i]] = H.size() + 1; + if (H.find(J[i]) == H.end()) H[J[i]] = H.size() + 1; + if (H.find(E[i]) == H.end()) H[E[i]] = H.size() + 1; + } + for (int i = 0, x, y; i < n; i++) + if (E[i]) if ((x = Find(H[I[i]])) != (y = Find(H[J[i]]))) fa[x] = y; + bool flag = true; + for (int i = 0, x, y; i < n && flag; i++) + if (E[i] ^ 1) if ((x = Find(H[I[i]])) == (y = Find(H[J[i]]))) flag = false; + puts(flag ? "YES" : "NO"); + } + return 0; +} \ No newline at end of file