diff options
author | crupest <crupest@outlook.com> | 2021-11-19 11:57:35 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-11-19 11:57:35 +0800 |
commit | 205f243379919b7830726f9dcc4ae7d33c84e857 (patch) | |
tree | b18b433bcd9d1d9bb38e6da18c880f8fddb1cea9 /works/life | |
parent | 3c9273676b785c6ba4fc11e865851ba2319f41bf (diff) | |
download | crupest-205f243379919b7830726f9dcc4ae7d33c84e857.tar.gz crupest-205f243379919b7830726f9dcc4ae7d33c84e857.tar.bz2 crupest-205f243379919b7830726f9dcc4ae7d33c84e857.zip |
import(life): Add algorithm experiment 5.
Diffstat (limited to 'works/life')
-rw-r--r-- | works/life/algorithm-experiment/.DS_Store | bin | 6148 -> 0 bytes | |||
-rw-r--r-- | works/life/algorithm-experiment/5.1a.cpp | 25 | ||||
-rw-r--r-- | works/life/algorithm-experiment/5.1b.cpp | 25 | ||||
-rw-r--r-- | works/life/algorithm-experiment/5.1c.cpp | 24 | ||||
-rw-r--r-- | works/life/algorithm-experiment/5.2a.cpp | 31 | ||||
-rw-r--r-- | works/life/algorithm-experiment/5.2b.cpp | 28 |
6 files changed, 133 insertions, 0 deletions
diff --git a/works/life/algorithm-experiment/.DS_Store b/works/life/algorithm-experiment/.DS_Store Binary files differdeleted file mode 100644 index 58e50b9..0000000 --- a/works/life/algorithm-experiment/.DS_Store +++ /dev/null diff --git a/works/life/algorithm-experiment/5.1a.cpp b/works/life/algorithm-experiment/5.1a.cpp new file mode 100644 index 0000000..d0d442f --- /dev/null +++ b/works/life/algorithm-experiment/5.1a.cpp @@ -0,0 +1,25 @@ +#include <bitset> +#include <ios> +#include <iostream> + +std::bitset<10000000> f; + +int main() { + std::ios_base::sync_with_stdio(false); + std::cin.tie(nullptr); + + while (true) { + long long current; + std::cin >> current; + + auto b = f[current - 10000000]; + if (b) { + std::cout << current; + break; + } else { + b = true; + } + } + + return 0; +} diff --git a/works/life/algorithm-experiment/5.1b.cpp b/works/life/algorithm-experiment/5.1b.cpp new file mode 100644 index 0000000..a6dd32e --- /dev/null +++ b/works/life/algorithm-experiment/5.1b.cpp @@ -0,0 +1,25 @@ +#include <bitset> +#include <ios> +#include <iostream> + +std::bitset<10000000> f; + +int main() { + std::ios_base::sync_with_stdio(false); + std::cin.tie(nullptr); + + long long current; + + while (std::cin >> current) { + f[current - 10000000].flip(); + } + + for (int i = 1; i < 10000000; ++i) { + if (f[i]) { + std::cout << i + 10000000; + break; + } + } + + return 0; +} diff --git a/works/life/algorithm-experiment/5.1c.cpp b/works/life/algorithm-experiment/5.1c.cpp new file mode 100644 index 0000000..f38d199 --- /dev/null +++ b/works/life/algorithm-experiment/5.1c.cpp @@ -0,0 +1,24 @@ +#include <bitset> +#include <ios> +#include <iostream> + +std::bitset<10000000> f; + +int main() { + std::ios_base::sync_with_stdio(false); + std::cin.tie(nullptr); + + long long current; + + while (std::cin >> current) { + f[current - 10000000].flip(); + } + + for (int i = 1; i < 10000000; ++i) { + if (!f[i]) { + std::cout << i + 10000000 << '\n'; + } + } + + return 0; +} diff --git a/works/life/algorithm-experiment/5.2a.cpp b/works/life/algorithm-experiment/5.2a.cpp new file mode 100644 index 0000000..f458a90 --- /dev/null +++ b/works/life/algorithm-experiment/5.2a.cpp @@ -0,0 +1,31 @@ +#include <iostream> +#include <unordered_map> +#include <vector> + +int main() { + std::vector<long long> votes; + + long long v; + while (std::cin >> v) { + votes.push_back(v); + } + + std::unordered_map<long long, long long> counts; + for (auto v : votes) { + counts[v]++; + } + + long long max_count = 0; + long long max_id = 0; + + for (auto it = counts.begin(); it != counts.end(); ++it) { + if (it->second > max_count) { + max_count = it->second; + max_id = it->first; + } + } + + std::cout << max_id << std::endl; + + return 0; +}
\ No newline at end of file diff --git a/works/life/algorithm-experiment/5.2b.cpp b/works/life/algorithm-experiment/5.2b.cpp new file mode 100644 index 0000000..d062ae0 --- /dev/null +++ b/works/life/algorithm-experiment/5.2b.cpp @@ -0,0 +1,28 @@ +#include <iostream> +#include <unordered_map> +#include <vector> + +int main() { + std::vector<long long> votes; + + long long v; + while (std::cin >> v) { + votes.push_back(v); + } + + std::unordered_map<long long, long long> counts; + for (auto v : votes) { + counts[v]++; + } + + // Get ids with votes greater than half of the total votes. + long long half_votes = votes.size() / 2; + + for (auto it = counts.begin(); it != counts.end(); ++it) { + if (it->second > half_votes) { + std::cout << it->first << std::endl; + } + } + + return 0; +} |