A、签到
print('祝贺祖国成立70周年!')
B、欧涛的烦恼
#include <bits/stdc++.h>
#include <bits/stdc++.h>
using namespace std;
#define js ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define all(__vv__) (__vv__).begin(), (__vv__).end()
#define endl "\n"
#define pai pair<int, int>
#define ms(__x__,__val__) memset(__x__, __val__, sizeof(__x__))
typedef long long ll; typedef unsigned long long ull; typedef long double ld;
inline ll read() { ll s = 0, w = 1; char ch = getchar(); for (; !isdigit(ch); ch = getchar()) if (ch == '-') w = -1; for (; isdigit(ch); ch = getchar()) s = (s << 1) + (s << 3) + (ch ^ 48); return s * w; }
inline void print(ll x, int op = 10) { if (!x) { putchar('0'); if (op) putchar(op); return; } char F[40]; ll tmp = x > 0 ? x : -x; if (x < 0)putchar('-'); int cnt = 0; while (tmp > 0) { F[cnt++] = tmp % 10 + '0'; tmp /= 10; } while (cnt > 0)putchar(F[--cnt]); if (op) putchar(op); }
inline ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : x; }
ll qpow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans *= a; b >>= 1; a *= a; } return ans; } ll qpow(ll a, ll b, ll mod) { ll ans = 1; while (b) { if (b & 1)(ans *= a) %= mod; b >>= 1; (a *= a) %= mod; }return ans % mod; }
const int dir[][2] = { {0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1} };
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int N = 1e5 + 7;
int main() {
int T = 1;
T = read();
while (T--) {
int n = read(), sum = 0;
for (int i = 1; i <= n; ++i) sum += read();
sum = ceil(1.0 * sum / n);
print(sum);
}
return 0;
}
C、欧涛最短路
#include <bits/stdc++.h>
using namespace std;
#define js ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define all(__vv__) (__vv__).begin(), (__vv__).end()
#define endl "\n"
#define pai pair<double, int>
#define ms(__x__,__val__) memset(__x__, __val__, sizeof(__x__))
typedef long long ll; typedef unsigned long long ull; typedef long double ld;
inline ll read() { ll s = 0, w = 1; char ch = getchar(); for (; !isdigit(ch); ch = getchar()) if (ch == '-') w = -1; for (; isdigit(ch); ch = getchar()) s = (s << 1) + (s << 3) + (ch ^ 48); return s * w; }
inline void print(ll x, int op = 10) { if (!x) { putchar('0'); if (op) putchar(op); return; } char F[40]; ll tmp = x > 0 ? x : -x; if (x < 0)putchar('-'); int cnt = 0; while (tmp > 0) { F[cnt++] = tmp % 10 + '0'; tmp /= 10; } while (cnt > 0)putchar(F[--cnt]); if (op) putchar(op); }
inline ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : x; }
ll qpow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans *= a; b >>= 1; a *= a; } return ans; } ll qpow(ll a, ll b, ll mod) { ll ans = 1; while (b) { if (b & 1)(ans *= a) %= mod; b >>= 1; (a *= a) %= mod; }return ans % mod; }
const int dir[][2] = { {0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1} };
const int MOD = 1e9 + 7;
const double INF = 1e18;
const double eps = 1e-4;
const int N = 600 + 7;
struct Node {
double x, y, z;
double calc(const Node& A) const {
return sqrt((x - A.x) * (x - A.x) + (y - A.y) * (y - A.y) + (z - A.z) * (z - A.z));
}
}a[N];
vector<pai> edge[N];
vector<int> ans[N];
int vis[N];
double dis[N];
void dijkstra(int s) {
fill(dis, dis + N, 1e18);
dis[s] = 0.0;
ans[s].clear();
ms(vis, 0);
priority_queue<pai, vector<pai>, greater<pai>> pq;
pq.push({ 0.0,s });
while (pq.size()) {
int u = pq.top().second;
double w = pq.top().first;
pq.pop();
if (vis[u]) continue;
vis[u] = 1;
for (auto& it : edge[u]) {
double w = it.first;
int v = it.second;
if (dis[v] > dis[u] + w) {
dis[v] = dis[u] + w;
pq.push({ dis[v],v });
ans[v] = ans[u];
ans[v].push_back(v);
}
}
}
}
int main() {
int T = 1;
//T = read();
while (T--) {
int n;
double m;
scanf("%d %lf", &n, &m);
scanf("%lf %lf %lf %lf %lf %lf", &a[0].x, &a[0].y, &a[0].z, &a[n + 1].x, &a[n + 1].y, &a[n + 1].z);
for (int i = 1; i <= n; ++i)
scanf("%lf %lf %lf", &a[i].x, &a[i].y, &a[i].z);
++n;
for (int i = 0; i <= n; ++i)
for (int j = i + 1; j <= n; ++j) {
double tmp = a[i].calc(a[j]);
if (tmp <= m) {
edge[i].push_back({ tmp,j });
edge[j].push_back({ tmp,i });
}
}
dijkstra(0);
if (fabs(dis[n] - INF) < eps) puts("-1");
else {
printf("%.3f\n", dis[n]);
printf("Start ");
int len = ans[n].size();
for (int i = 0; i < len - 1; ++i)
printf("%d ", ans[n][i]);
printf("End\n");
}
}
return 0;
}
D、欧涛C 甜甜圈
#include <bits/stdc++.h>
using namespace std;
#define js ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define all(__vv__) (__vv__).begin(), (__vv__).end()
#define endl "\n"
#define pai pair<int, int>
#define ms(__x__,__val__) memset(__x__, __val__, sizeof(__x__))
typedef long long ll; typedef unsigned long long ull; typedef long double ld;
inline ll read() { ll s = 0, w = 1; char ch = getchar(); for (; !isdigit(ch); ch = getchar()) if (ch == '-') w = -1; for (; isdigit(ch); ch = getchar()) s = (s << 1) + (s << 3) + (ch ^ 48); return s * w; }
inline void print(ll x, int op = 10) { if (!x) { putchar('0'); if (op) putchar(op); return; } char F[40]; ll tmp = x > 0 ? x : -x; if (x < 0)putchar('-'); int cnt = 0; while (tmp > 0) { F[cnt++] = tmp % 10 + '0'; tmp /= 10; } while (cnt > 0)putchar(F[--cnt]); if (op) putchar(op); }
inline ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : x; }
ll qpow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans *= a; b >>= 1; a *= a; } return ans; } ll qpow(ll a, ll b, ll mod) { ll ans = 1; while (b) { if (b & 1)(ans *= a) %= mod; b >>= 1; (a *= a) %= mod; }return ans % mod; }
const int dir[][2] = { {0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1} };
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int N = 1e5 + 7;
char s[1007];
int main() {
int T = 1;
T = read();
while (T--) {
scanf("%s", s);
int ans = 0;
for (int i = 0; s[i]; ++i)
if (s[i] == '0' or s[i] == '4' or s[i] == '6' or s[i] == '9')
++ans;
else if (s[i] == '8')
ans += 2;
print(ans);
}
return 0;
}
E、欧涛爬树
#pragma GCC target("avx,sse2,sse3,sse4,popcnt")
#pragma GCC optimize("O2,O3,Ofast,inline,unroll-all-loops,-ffast-math")
#include <bits/stdc++.h>
using namespace std;
#define js ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define all(__vv__) (__vv__).begin(), (__vv__).end()
#define endl "\n"
#define pai pair<int, int>
#define ms(__x__,__val__) memset(__x__, __val__, sizeof(__x__))
typedef long long ll; typedef unsigned long long ull; typedef long double ld;
inline ll read() { ll s = 0, w = 1; char ch = getchar(); for (; !isdigit(ch); ch = getchar()) if (ch == '-') w = -1; for (; isdigit(ch); ch = getchar()) s = (s << 1) + (s << 3) + (ch ^ 48); return s * w; }
inline void print(ll x, int op = 10) { if (!x) { putchar('0'); if (op) putchar(op); return; } char F[40]; ll tmp = x > 0 ? x : -x; if (x < 0)putchar('-'); int cnt = 0; while (tmp > 0) { F[cnt++] = tmp % 10 + '0'; tmp /= 10; } while (cnt > 0)putchar(F[--cnt]); if (op) putchar(op); }
inline ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : x; }
ll qpow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans *= a; b >>= 1; a *= a; } return ans; } ll qpow(ll a, ll b, ll mod) { ll ans = 1; while (b) { if (b & 1)(ans *= a) %= mod; b >>= 1; (a *= a) %= mod; }return ans % mod; }
const int dir[][2] = { {0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1} };
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int N = 5e6 + 7;
const int base = 131; // hash倍数
int head[N], tot = 0;//前向星变量
struct Node {
//int u; //起点
//int w; //权值
int v, next;
} edge[N << 1];
void add(int u, int v) {
tot++;
//edge[tot].u = u;
edge[tot].v = v;
//edge[tot].w = w;
edge[tot].next = head[u];
head[u] = tot;
}
char s[N];
unordered_set<ull> st;
void dfs(int u, int fa, ull val) {
ull now = val * base + s[u]; // 字符串hash值
bool flag = 1;
for (int i = head[u]; i; i = edge[i].next) {
int v = edge[i].v;
if (v == fa) continue;
dfs(v, u, now);
flag = 0;
}
if (flag) st.insert(now); //叶子节点就插入当前字符串的 hash 值
}
int main() {
int n;
//T = read();
while (~scanf("%d", &n)) {
st.clear();
ms(head, 0);
scanf("%s", s + 1);
for (int i = 1; i < n; ++i) {
int u = read(), v = read();
add(u, v);
add(v, u);
}
dfs(1, 0, 0);
print(st.size());
}
return 0;
}
F、欧涛B
#include <bits/stdc++.h>
using namespace std;
#define js ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define all(__vv__) (__vv__).begin(), (__vv__).end()
#define endl "\n"
#define pai pair<int, int>
#define ms(__x__,__val__) memset(__x__, __val__, sizeof(__x__))
typedef long long ll; typedef unsigned long long ull; typedef long double ld;
inline ll read() { ll s = 0, w = 1; char ch = getchar(); for (; !isdigit(ch); ch = getchar()) if (ch == '-') w = -1; for (; isdigit(ch); ch = getchar()) s = (s << 1) + (s << 3) + (ch ^ 48); return s * w; }
inline void print(ll x, int op = 10) { if (!x) { putchar('0'); if (op) putchar(op); return; } char F[40]; ll tmp = x > 0 ? x : -x; if (x < 0)putchar('-'); int cnt = 0; while (tmp > 0) { F[cnt++] = tmp % 10 + '0'; tmp /= 10; } while (cnt > 0)putchar(F[--cnt]); if (op) putchar(op); }
inline ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : x; }
ll qpow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans *= a; b >>= 1; a *= a; } return ans; } ll qpow(ll a, ll b, ll mod) { ll ans = 1; while (b) { if (b & 1)(ans *= a) %= mod; b >>= 1; (a *= a) %= mod; }return ans % mod; }
const int dir[][2] = { {0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1} };
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int N = 1e5 + 7;
int main() {
int T = 1;
T = read();
while (T--) {
bool flag = true;
int t = read(), maxx = read(), maxy = read(), n = read();
int prex = read(), prey = read(), op = read();
int x, y, tmp1 = 0, tmp2 = 0;
while (--n) {
x = read(), y = read(), op = read();
tmp1 += abs((x - prex) * t);
tmp2 += abs((y - prey) * t);
if (tmp1 > maxx or tmp2 > maxy) flag = false;
if (op == 0) tmp1 = 0;
else tmp2 = 0;
prex = x, prey = y;
}
if (flag) puts("YES");
else puts("NO");
}
return 0;
}
G、数据结构
H、谁在说谎
#include <bits/stdc++.h>
using namespace std;
#define js ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define all(__vv__) (__vv__).begin(), (__vv__).end()
#define endl "\n"
#define pai pair<int, int>
#define ms(__x__,__val__) memset(__x__, __val__, sizeof(__x__))
typedef long long ll; typedef unsigned long long ull; typedef long double ld;
inline ll read() { ll s = 0, w = 1; char ch = getchar(); for (; !isdigit(ch); ch = getchar()) if (ch == '-') w = -1; for (; isdigit(ch); ch = getchar()) s = (s << 1) + (s << 3) + (ch ^ 48); return s * w; }
inline void print(ll x, int op = 10) { if (!x) { putchar('0'); if (op) putchar(op); return; } char F[40]; ll tmp = x > 0 ? x : -x; if (x < 0)putchar('-'); int cnt = 0; while (tmp > 0) { F[cnt++] = tmp % 10 + '0'; tmp /= 10; } while (cnt > 0)putchar(F[--cnt]); if (op) putchar(op); }
inline ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : x; }
ll qpow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans *= a; b >>= 1; a *= a; } return ans; } ll qpow(ll a, ll b, ll mod) { ll ans = 1; while (b) { if (b & 1)(ans *= a) %= mod; b >>= 1; (a *= a) %= mod; }return ans % mod; }
const int dir[][2] = { {0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1} };
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int N = 1e5 + 7;
map<pai, int> mp;
vector<int> p[N];
int dp[N];
int main() {
int n = read();
for (int i = 1; i <= n; ++i) {
int l = read() + 1, r = n - read();
if (l > r) continue;
++mp[{l, r}];
if (mp[{l, r}] == 1) p[r].push_back(l);
}
for (int i = 1; i <= n; ++i) {
dp[i] = dp[i - 1];
for (auto& j : p[i])
dp[i] = max(dp[i], dp[j - 1] + min(mp[{j, i}], i - j + 1));
}
print(n - dp[n]);
return 0;
}
I、不要666
#include <bits/stdc++.h>
using namespace std;
#define js ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define all(__vv__) (__vv__).begin(), (__vv__).end()
#define endl "\n"
#define pai pair<int, int>
#define ms(__x__,__val__) memset(__x__, __val__, sizeof(__x__))
typedef long long ll; typedef unsigned long long ull; typedef long double ld;
inline ll read() { ll s = 0, w = 1; char ch = getchar(); for (; !isdigit(ch); ch = getchar()) if (ch == '-') w = -1; for (; isdigit(ch); ch = getchar()) s = (s << 1) + (s << 3) + (ch ^ 48); return s * w; }
inline void print(ll x, int op = 10) { if (!x) { putchar('0'); if (op) putchar(op); return; } char F[40]; ll tmp = x > 0 ? x : -x; if (x < 0)putchar('-'); int cnt = 0; while (tmp > 0) { F[cnt++] = tmp % 10 + '0'; tmp /= 10; } while (cnt > 0)putchar(F[--cnt]); if (op) putchar(op); }
inline ll gcd(ll x, ll y) { return y ? gcd(y, x % y) : x; }
ll qpow(ll a, ll b) { ll ans = 1; while (b) { if (b & 1) ans *= a; b >>= 1; a *= a; } return ans; } ll qpow(ll a, ll b, ll mod) { ll ans = 1; while (b) { if (b & 1)(ans *= a) %= mod; b >>= 1; (a *= a) %= mod; }return ans % mod; }
const int dir[][2] = { {0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1} };
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int N = 1e5 + 7;
int num[25];
ll bs[25];
struct Node {
int cnt = -1;
ll sum = 0;
}dp[25][10][10];
Node dfs(int len, int num1, int num2, bool limit) {
if (!len) {
if (num1 == 0 or num2 == 0) return { 0,0 };
else return { 1,0 };
}
if (!limit && ~dp[len][num1][num2].cnt)
return dp[len][num1][num2];
int up = limit ? num[len] : 9;
Node ans;
ans.cnt = 0;
for (int i = 0; i <= up; ++i) {
if (i == 6) continue;
Node tmp = dfs(len - 1, (num1 + i) % 6, (num2 * 10 + i) % 6, limit && i == up);
ans.cnt = (ans.cnt + tmp.cnt) % MOD;
ans.sum = (ans.sum + tmp.sum + i * bs[len] * tmp.cnt % MOD) % MOD;
}
if (!limit) dp[len][num1][num2] = ans;
return ans;
}
ll slove(ll n) {
int cnt = 0;
while (n) {
num[++cnt] = n % 10;
n /= 10;
}
return dfs(cnt, 0, 0, true).sum;
}
int main() {
ll n, m;
bs[1] = 1;
for (int i = 2; i < 25; ++i) bs[i] = bs[i - 1] * 10 % MOD;
while (~scanf("%lld %lld", &n, &m)) {
printf("%lld\n", (slove(m) - slove(n - 1) + MOD) % MOD);
}
return 0;
}
J、组合技
K、这个勇者明明超强却过分慎重
#include <bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
using namespace std;
#define js ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
typedef long long ll;
inline ll read() { ll s = 0, w = 1; char ch = getchar(); while (ch < 48 || ch > 57) { if (ch == '-') w = -1; ch = getchar(); } while (ch >= 48 && ch <= 57) s = (s << 1) + (s << 3) + (ch ^ 48), ch = getchar(); return s * w; }
const int mod = 666666;
const int N = 2; //矩阵规模
const int M = 2;
struct Node {
ll matrix[N][M];//结构体中的矩阵
Node() {//默认构造函数
memset(matrix, 0, sizeof(matrix));
}
void one() {//单位矩阵
for (int i = 0; i < N; ++i)
matrix[i][i] = 1;
}
Node operator*(Node other) {//矩阵运算重载*运算符
Node ans;//记录乘积
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
for (int k = 0; k < N; k++) {
ans.matrix[i][j] += matrix[i][k] * other.matrix[k][j];
ans.matrix[i][j] %= mod;
}
return ans;
}
};
Node power(Node a, ll b) {//快速幂求a的b次方
Node res;
res.one();//单位矩阵
while (b) {
if (b & 1)
res = res * a;
a = a * a;
b >>= 1;
}
return res;
}
int main() {
Node st, p;
st.matrix[0][0] = 4;
st.matrix[0][1] = 233;
p.matrix[0][1] = 3;
p.matrix[1][0] = 1;
p.matrix[1][1] = 4;
int n, m;
while(~scanf("%d %d", &n, &m))
printf("%d\n", m - (st * power(p, n - 1)).matrix[0][0]);
return 0;
}