day-7
第二场牛客多校
k: https://ac.nowcoder.com/acm/contest/11253/K
//栈模拟
const int maxn = 1e5 + 7;
const int mod = 1e9 + 7;
int n, m, k, t, a[maxn], b[maxn];
int main()
{
cin >> n >> k;
for (int i = 1; i <= k; i++) {
cin >> t >> b[t];
}
for (int i = 1; i <= n; i++) {
if (!b[i]) {
b[i] = b[i - 1] + 1;
} else if (b[i] > b[i - 1] + 1) {
cout << -1 << endl;
return 0;
}
}
stack<int> st;
int us = 1;
for (int i = n; i >= 1; i--) {
while (st.size() < b[i])
st.push(us++);
a[i] = st.top();
st.pop();
}
for (int i = 1; i <= n; i++)
cout << a[i] << endl;
}
I:https://ac.nowcoder.com/acm/contest/11253/I
//bfs + 路径打印 + 模拟
std::queue<std::tuple<int, int, int, int>> que;
que.emplace(N - 1, N - 1, N - 1, 0);
auto [x1, y1, x2, y2] = que.front();
//bfs记录前驱,使用一个int记录四个坐标:
g[nx1][ny1][nx2][ny2] = (((x1 * N + y1) * N + x2) * N + y2) * 4 + i;
int x1 = 0, y1 = N - 1, x2 = 0, y2 = 0;
std::string ans;
while (true) {
a[x1][y1] = b[x2][y2] = 'A';
if (f[x1][y1][x2][y2] == 0) {
break;
}
int G = g[x1][y1][x2][y2];
int nx1 = G / 4 / N / N / N;
int ny1 = G / 4 / N / N % N;
int nx2 = G / 4 / N % N;
int ny2 = G / 4 % N;
int d = G % 4;
ans += "DLRU"[d];
x1 = nx1;
y1 = ny1;
x2 = nx2;
y2 = ny2;
}
std::reverse(ans.begin(), ans.end());
F:https://ac.nowcoder.com/acm/contest/11253/F
//化简公式 发现是两球求交
#include <bits/stdc++.h>
const double pi = std::acos(-1);
double sq(double x)
{
return x * x;
}
double cb(double x)
{
return x * x * x;
}
double cos(double a, double b, double c) { return (b * b + c * c - a * a) / (2 * b * c); }
double cap(double r, double h) { return pi * (r * 3 - h) * h * h / 3; }
double dis(double x1, double y1, double z1, double x2, double y2, double z2)
{
return sq(x1 - x2) + sq(y1 - y2) + sq(z1 - z2);
}
double sphere_intersect(double x1, double y1, double z1, double r1, double x2, double y2, double z2, double r2)
{
double d = dis(x1, y1, z1, x2, y2, z2);
//相离
if (d >= sq(r1 + r2))
return 0;
//包含
if (d <= sq(r1 - r2))
return cb(std::min(r1, r2)) * 4 * pi / 3;
//相交
double h1 = r1 - r1 * cos(r2, r1, std::sqrt(d)), h2 = r2 - r2 * cos(r1, r2, std::sqrt(d));
return cap(r1, h1) + cap(r2, h2);
}
ends:多校真的太难打了,静不下来写题目 赶紧调整。。。(虽然觉得学不到啥东西)
还是要多训练 相信自己!
我看见 你