A
#include <bits/stdc++.h>
#define sc(x) scanf("%lld", &(x))
#define pr(x) printf("%d\n", (x))
#define rep(i, l, r) for (int i = l; i <= r; ++i)
using namespace std;
typedef long long ll;
const int N = 1e5 + 7;
const int mod = 1e9 + 7;
bool chk(int n) {
while (n) {
if (n % 10 == 2) return 1;
n /= 10;
}
return 0;
}
int main() {
int res = 0;
rep(i, 1, 2020) res += chk(i);
pr(res); // 563
return 0;
} B
#include <bits/stdc++.h>
#define pr(x) printf("%d\n", (x))
#define rep(i, l, r) for (int i = l; i <= r; ++i)
using namespace std;
typedef long long ll;
#define id(x) x + 2500
const int N = id(5007);
bool a[N][N];
void spread(int x, int y, int sz = 2020) {
rep(i, 0, 2020) {
a[y + i][x] = 1;
a[y - i][x] = 1;
rep(j, 1, sz) {
a[y + i][x + j] = 1;
a[y + i][x - j] = 1;
a[y - i][x + j] = 1;
a[y - i][x - j] = 1;
}
--sz;
}
}
int main() {
spread(id(0), id(0));
spread(id(2020), id(11));
spread(id(11), id(14));
spread(id(2000), id(2000));
int res = 0;
for (int i = 0; i < N; ++i)
for (int j = 0; j < N; ++j)
if (a[i][j]) ++res;
pr(res); // 20312088
return 0;
} C
#include <bits/stdc++.h>
#define pr(x) printf("%lld\n", (x))
#define rep(i, l, r) for (int i = l; i <= r; ++i)
using namespace std;
typedef long long ll;
const int N = 105;
vector<int> primes;
bitset<N> isPrime;
void sieve() {
isPrime.set();
isPrime[0] = isPrime[1] = 0;
for (int i = 2; i < N; ++i) {
if (isPrime[i]) primes.emplace_back(i);
for (int p : primes) {
if (i * p >= N) break;
isPrime[i * p] = 0;
if (i % p == 0) break;
}
}
}
map<int, ll> cnt;
void div(int n) {
for (int p : primes) {
if (n % p == 0)
while (n % p == 0) n /= p, ++cnt[p];
if (isPrime[n]) {
++cnt[n];
return;
}
}
}
int main() {
sieve();
rep(i, 1, 100) div(i);
ll res = 1;
for (auto p : cnt) res *= p.second + 1; // 每个幂次都可以选或者不选
pr(res); // 39001250856960000
return 0;
} D
#include <bits/stdc++.h>
#define sc(x) scanf("%lld", &(x))
#define pr(x) printf("%lld\n", (x))
#define rep(i, l, r) for (int i = l; i <= r; ++i)
using namespace std;
typedef long long ll;
const int N = 207;
const int mod = 1e9 + 7;
char s[N] =
" tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoa"
"pdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvf"
"madvrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl";
ll dp[N], ans;
set<char> vis[N];
int main() {
// scanf("%s", s + 1);
int n = strlen(s + 1);
rep(i, 1, n) {
dp[i] = 0;
if (!vis[0].count(s[i])) dp[i] += 1, vis[0].insert(s[i]);
for (int j = 1; j < i; ++j) {
if (s[i] > s[j]) {
if (!vis[j].count(s[i])) {
dp[i] += dp[j];
vis[j].insert(s[i]);
}
}
}
ans += dp[i];
}
pr(ans); // 3616159
return 0;
} E
#include <bits/stdc++.h>
#define sc(x) scanf("%lld", &(x))
#define pr(x) printf("%lld\n", (x))
#define rep(i, l, r) for (int i = l; i <= r; ++i)
using namespace std;
typedef long long ll;
const int N = 5;
const int mod = 1e9 + 7;
int a[5][5], ans;
int dx[] = {0, 0, -1, 1};
int dy[] = {1, -1, 0, 0};
void dfs(int id, int x, int y) {
a[x][y] = id;
if (id == 16) {
++ans;
return;
}
rep(i, 0, 3) {
int xx = x + dx[i];
int yy = y + dy[i];
if (xx >= 1 and xx <= 4 and yy >= 1 and yy <= 4 and !a[xx][yy]) {
dfs(id + 1, xx, yy);
a[xx][yy] = 0;
}
}
}
int main() {
rep(i, 1, 4) rep(j, 1, 4) {
memset(a, 0, sizeof a);
dfs(1, i, j);
}
printf("%d", ans); // 552
return 0;
} F
G
#include <bits/stdc++.h>
#define sc(x) scanf("%lld", &(x))
#define pr(x) printf("%lld\n", (x))
#define rep(i, l, r) for (int i = l; i <= r; ++i)
using namespace std;
typedef long long ll;
const int N = 1e5 + 7;
const int mod = 1e9 + 7;
#define sub(l, r) s.substr(l, r - l + 1)
struct node {
string s;
int id;
int ord;
};
vector<node> a;
int LIS(int a[], int n) {
int len = 1;
int d[N];
d[1] = a[1];
rep(i, 2, n) {
if (a[i] > d[len])
d[++len] = a[i];
else {
int j = lower_bound(d + 1, d + 1 + len, a[i]) - d;
d[j] = a[i];
}
}
}
int main() {
string s = "WoAiLanQiaoBei";
int lst = 0;
for (int i = 1, n = s.length(); i < n; ++i)
if (isupper(s[i])) {
a.push_back({sub(lst, i - 1), 0, 1});
lst = i;
}
a.push_back({s.substr(lst), 0, 1});
for (int i = 0; i < a.size(); ++i) a[i].id = i + 1;
sort(a.begin(), a.end(), [&](node u, node v) { return u.s < v.s; });
for (int i = 1, n = a.size(); i < n; ++i)
if (a[i - 1].s < a[i].s)
a[i].ord = a[i - 1].ord + 1;
else
a[i].ord = a[i - 1].ord;
sort(a.begin(), a.end(), [&](node u, node v) { return u.id < v.id; });
// LIS
return 0;
} H
#include <bits/stdc++.h>
#define sc(x) scanf("%lld", &(x))
#define pr(x) printf("%lld\n", (x))
#define rep(i, l, r) for (int i = l; i <= r; ++i)
using namespace std;
typedef long long ll;
const int N = 1e3 + 7;
const int mod = 1e9 + 7;
struct node {
int pre, e;
} a[N];
int n, u, v;
ll cal() {
ll res = 0, now = 0;
rep(i, 1, n) {
now += a[i].pre;
res += now;
now += a[i].e;
}
return res;
}
int main() {
scanf("%d", &n);
rep(i, 1, n) {
scanf("%d%d%d", &u, &v, &a[i].e);
a[i].pre = u + v;
}
sort(a + 1, a + 1 + n,
[&](node u, node v) { return u.pre + u.e < v.pre + v.e; });
ll res = cal();
rep(i, 1, n - 1) {
swap(a[i], a[n]);
res = min(cal(), res);
swap(a[i], a[n]);
}
pr(res);
return 0;
}
/*
3
10000 10000 10000
20000 50000 20000
30000 20000 30000
*/ 
京公网安备 11010502036488号