Posts

Pokemon trainer#include using namespace std;const int maxn = 300011;char s[maxn];int deg[maxn], d[maxn];vector w[maxn];int Find(int u, int c) { if (d[u] != -1) return d[u]; d[u] = 0; for (int v : w[u]) { d[u] = max(d[u], Find(v, c)); } d[u] += (s[u] == c + 'a'); return d[u];}int main() { int n, m; scanf("%d%d", &n, &m); scanf("%s", s + 1); for (int i = 1; i <= m; ++i) { int u, v; scanf("%d%d", &u, &v); w[u].push_back(v); ++deg[v]; } int ct = 0; queue que; for (int i = 1; i <= n; ++i) { if (!deg[i]) que.push(i), ++ct; } while (!que.empty()) { int u = que.front(); que.pop(); for (int v : w[u]) { if (--deg[v] == 0) que.push(v), ++ct; } } if (ct < n) { puts("-1"); } else { int ans = 0; for (int c = 0; c < 26; ++c) { memset(d, 0xff, sizeof d); for (int i = 1; i <= n; ++i) ans = max(ans, Find(i, c)); } printf("%dn", ans); } return 0;}

GEM collector program java,python ,c+++ GEM COLLECTOTOR#include #include #include using namespace std;int nSk(int n, int k){ if (n < 2) return 1; if (k > n-2) return 0; vector numbers; numbers.reserve(n - 2); for (int i = 0; i < n - 2; ++i){ numbers.push_back(i + 2); } std::vector v(numbers.size()); std::fill(v.end() - k, v.end(), true); int ret = 0; do { int tmpnum = 1; for (int j = 0; j < numbers.size(); ++j) { if (v[j]) { tmpnum *= numbers[j]; } } ret = tmpnum; } while (std::next_permutation(v.begin(), v.end())); return ret;}int main(){ int n, d; cin >> n; cin >> d; int sum = 0; for (int k = 0; k < d; ++k){ sum += nSk(n, k); } //sum = 2; cout<< sum;}