aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Gia Phong <vn.mcsinyx@gmail.com>2019-11-11 17:55:52 +0700
committerNguyễn Gia Phong <vn.mcsinyx@gmail.com>2019-11-11 17:55:52 +0700
commitb38d9929f7a015b56b847fde7e83f814f354497e (patch)
treedef6101df9623550d2d826831504ef93c54b0297
parentcacc165173d67fa110766a555afe3020967d220c (diff)
downloadcp-b38d9929f7a015b56b847fde7e83f814f354497e.tar.gz
One does not simply do CP well in NNN
-rwxr-xr-xcodechef/hrdseq.py9
-rwxr-xr-xcodechef/sc31.py6
-rw-r--r--codechef/sc31.raku1
-rw-r--r--cpptour/Vector-test.cc9
-rw-r--r--cpptour/Vector.cc23
-rw-r--r--cpptour/Vector.h3
-rw-r--r--cpptour/weirdo.cc83
m---------paip/book0
8 files changed, 129 insertions, 5 deletions
diff --git a/codechef/hrdseq.py b/codechef/hrdseq.py
new file mode 100755
index 0000000..a47ef2d
--- /dev/null
+++ b/codechef/hrdseq.py
@@ -0,0 +1,9 @@
+#!/usr/bin/env python3
+seq = [0, 0, 1, 0, 2, 0, 2, 2, 1, 6, 0, 5, 0, 2, 6, 5, 4, 0, 5, 3, 0, 3, 2, 9,
+ 0, 4, 9, 3, 6, 14, 0, 6, 3, 5, 15, 0, 5, 3, 5, 2, 17, 0, 6, 11, 0, 3, 8,
+ 0, 3, 3, 1, 42, 0, 5, 15, 20, 0, 4, 32, 0, 3, 11, 18, 0, 4, 7, 0, 3, 7,
+ 3, 2, 31, 0, 6, 31, 3, 6, 3, 2, 8, 33, 0, 9, 56, 0, 3, 8, 7, 19, 0, 5,
+ 37, 0, 3, 8, 8, 1, 46, 0, 6, 23, 0, 3, 9, 21, 0, 4, 42, 56, 25, 0, 5,
+ 21, 8, 18, 52, 0, 6, 18, 4, 13, 0, 5, 11, 62, 0, 4, 7]
+for t in range(int(input())):
+ print((lambda n: seq[:n].count(seq[n-1]))(int(input())))
diff --git a/codechef/sc31.py b/codechef/sc31.py
new file mode 100755
index 0000000..470c294
--- /dev/null
+++ b/codechef/sc31.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+from functools import reduce
+
+for t in range(int(input())):
+ print(bin(reduce(int.__xor__, (int(input(), 2)
+ for i in range(int(input()))))).count('1'))
diff --git a/codechef/sc31.raku b/codechef/sc31.raku
new file mode 100644
index 0000000..6aab576
--- /dev/null
+++ b/codechef/sc31.raku
@@ -0,0 +1 @@
+put [+] ([+^] (^get).map: {:2(get)}).base(2).comb for ^get
diff --git a/cpptour/Vector-test.cc b/cpptour/Vector-test.cc
index b49ff85..fbdf129 100644
--- a/cpptour/Vector-test.cc
+++ b/cpptour/Vector-test.cc
@@ -1,3 +1,4 @@
+#include <cassert>
#include <iostream>
#include <stdexcept>
@@ -13,8 +14,16 @@ neg_length ()
catch (bad_alloc) { cout << "BIG OOF!" << endl; }
}
+void
+init ()
+{
+ Vector v {7.4, 3.2, 5.2, 6.9, 9.5, 4.2, 21.7};
+ assert(v[5] == 4.2);
+}
+
int
main ()
{
neg_length ();
+ init ();
}
diff --git a/cpptour/Vector.cc b/cpptour/Vector.cc
index aa09eef..8f94345 100644
--- a/cpptour/Vector.cc
+++ b/cpptour/Vector.cc
@@ -12,14 +12,27 @@ Vector::Vector (int s)
sz = s;
}
-double& Vector::operator[] (int i)
+Vector::Vector (initializer_list<double> lst)
+: elem {new double[lst.size()]}, sz {static_cast<int> (lst.size())}
{
- if (i < 0 || size() <= i)
- throw out_of_range{"Vector::operator[]"};
- return elem[i];
+ copy(lst.begin(), lst.end(), elem);
+}
+
+Vector::~Vector ()
+{
+ delete[] elem;
}
-int Vector::size () noexcept
+int
+Vector::size () noexcept
{
return sz;
}
+
+double&
+Vector::operator[] (int i)
+{
+ if (i < 0 || size() <= i)
+ throw out_of_range{"Vector::operator[]"};
+ return elem[i];
+}
diff --git a/cpptour/Vector.h b/cpptour/Vector.h
index c7bbc68..8508503 100644
--- a/cpptour/Vector.h
+++ b/cpptour/Vector.h
@@ -1,8 +1,11 @@
class Vector {
public:
Vector (int s);
+ Vector (std::initializer_list<double>);
+ ~Vector ();
double& operator[] (int i);
int size () noexcept;
+ void push_back (double);
private:
double* elem;
int sz;
diff --git a/cpptour/weirdo.cc b/cpptour/weirdo.cc
new file mode 100644
index 0000000..f79336c
--- /dev/null
+++ b/cpptour/weirdo.cc
@@ -0,0 +1,83 @@
+#include <iostream>
+#include <set>
+#include <stdexcept>
+#include <string>
+#include <unordered_map>
+
+using namespace std;
+
+typedef unordered_map<char, size_t> charmap;
+typedef set<char> charset;
+
+constexpr double INF = 1e7;
+const charset VOWELS {'a', 'e', 'i', 'o', 'u'};
+
+inline size_t
+sqr (size_t i)
+{
+ return i * i;
+}
+
+bool
+isvowel (const string& s, size_t i)
+{
+ try { return VOWELS.count (s.at (i)); }
+ catch (out_of_range const& e) { return true; }
+}
+
+void
+update (const string& s, charmap& x, charmap& f)
+{
+ charset b;
+ for (const auto& c : s)
+ {
+ f[c]++;
+ b.insert (c);
+ }
+ for (const auto& c : b)
+ x[c]++;
+}
+
+int
+main ()
+{
+ size_t t, l;
+ string s;
+
+ cin >> t;
+ while (t--)
+ {
+ charmap xa, fa, xb, fb;
+ cin >> l;
+ while (l--)
+ {
+ cin >> s;
+ size_t i = s.size ();
+ bool a = true;
+
+ while (i--)
+ if (isvowel (s, i - 1) + isvowel (s, i) + isvowel (s, i + 1) < 2)
+ {
+ update (s, xb, fb);
+ a = false;
+ break;
+ }
+ if (a)
+ update (s, xa, fa);
+ }
+
+ double sc = 1.0;
+ for (const auto& p : xa)
+ sc *= p.second;
+ for (const auto& p : fa)
+ sc /= sqr (p.second);
+ for (const auto& p : xb)
+ sc /= p.second;
+ for (const auto& p : fb)
+ sc *= sqr (p.second);
+ if (sc > INF)
+ cout << "Infinity" << endl;
+ else
+ cout << sc << endl;
+ }
+}
diff --git a/paip/book b/paip/book
-Subproject 190a5c33aea5591698686c1db5fe44b0619e1b9
+Subproject 142d97f52b76bb8a02551636972db8b0747e165