A - Normal Magic Square
又到了我最喜欢的签到题环节 直接秒
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define xx first
#define yy second
typedef pair<int, int> PII;
const int inf = 0x3f3f3f3f;
const int N = 1e6 + 10;
int v[N], n, m, k, x, t, T;
void ClearFloat()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
signed main()
{
ClearFloat();
cin >> n;
if (n == 1)
cout << "1";
else
cout << n * n * (n * n + 1) / (2 * n);
return 0;
}
D - 38 parrots
下次一定
线段树维护一下 队友对这道题有详细题解 链接🔗
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define xx first
#define yy second
typedef pair<int, int> PII;
const int inf = 0x3f3f3f3f;
const int N = 1e5 + 10;
int n, k, T, cnt, v[N]; // cnt记录插入到第几个了
int tr[N * 4];
priority_queue<PII, vector<PII>, greater<PII>> q;
void ClearFloat()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
void pushup(int u)
{
if (tr[u << 1] == -1 && tr[u << 1 | 1] == -1)
tr[u] = -1;
else if (tr[u << 1] != -1 && tr[u << 1 | 1] == -1)
tr[u] = tr[u << 1];
else if (tr[u << 1] == -1 && tr[u << 1 | 1] != -1)
tr[u] = tr[u << 1 | 1];
else
tr[u] = gcd(tr[u << 1], tr[u << 1 | 1]);
}
void build(int u, int l, int r)
{
if (l == r)
{
tr[u] = -1;
return;
}
int mid = (l + r) >> 1;
build(u << 1, l, mid);
build(u << 1 | 1, mid + 1, r);
pushup(u);
}
void update(int u, int l, int r, int cnt, int x)
{
if (l == r)
{
tr[u] = x;
return;
}
int mid = (l + r) >> 1;
if (cnt <= mid)
update(u << 1, l, mid, cnt, x);
if (cnt > mid)
update(u << 1 | 1, mid + 1, r, cnt, x);
pushup(u);
}
signed main()
{
ClearFloat();
build(1, 1, 100000);
cin >> T;
while (T--)
{
char ch;
cin >> ch;
if (ch == '+')
{
cin >> v[++cnt];
q.push({v[cnt], cnt});
update(1, 1, 100000, cnt, v[cnt]);
}
if (ch == '-')
{
++k;
update(1, 1, 100000, k, -1);
}
if (ch == '?')
{
int f = 1;
while (q.size() && q.top().yy <= k)
q.pop();
if (q.empty() || tr[1] != q.top().xx)
f = 0;
if (f)
cout << "Y" << tr[1] << endl;
else
cout << "N\n";
}
}
return 0;
}
E - Black Box![请添加图片描述](https://i-blog.csdnimg.cn/blog_migrate/527ff49e97210e85877a651c8321c3aa.png)
无语死了家人们 三个人都能读错题 看着别人框框accept 自己一直红
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define xx first
#define yy second
typedef pair<int, int> PII;
const int inf = 0x3f3f3f3f;
const int N = 1e6 + 10;
int v[N], n, m, k, x, t, T;
string s;
void ClearFloat()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
signed main()
{
ClearFloat();
cin >> n;
cin >> s;
x = 1;
for (int i = 0; i < s.size(); i++)
{
if (s[i] == '1' && x)
{
cout << '1';
x = 0;
continue;
}
if (x == 1)
{
cout << "0";
continue;
}
if (s[i] == '1')
cout << '0';
else
cout << '1';
}
return 0;
}
H - Exam
下次一定
DP 做三个判断就行,符合条件的就要给状态方程加上相应数量
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define xx first
#define yy second
typedef pair<int, int> PII;
const int inf = 0x3f3f3f3f;
const int N = 1e6 + 10;
void ClearFloat()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
int read()
{
int s = 0, w = 1;
char ch = getchar();
while (ch < '0' || ch > '9')
{
if (ch == '-')
w = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9')
s = s * 10 + ch - '0', ch = getchar();
return s * w;
}
int v[N], n, m, k, x, t, T;
signed main()
{
n = read(), m = read();
for (int i = 2; i < n; i++)
{
for (int j = 2; j <= n; j++)
v[j] = 0;
v[1] = 1;
for (int j = 1; j <= n; j++)
{
v[j] += v[j - 1];
if (j > i)
v[j] += v[j - i];
if (j % 7 == 0)
v[j] += v[j / 7];
}
if (v[n] == m)
{
cout << i << endl;
return 0;
}
}
cout << '0';
}
I - Hole Punch
大胆猜想 小心求证!! 只有 大胆猜想 的就是 大 s b
被
n
n
n 整除后等于偶数的的所有因子
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define xx first
#define yy second
typedef pair<int, int> PII;
const int inf = 0x3f3f3f3f;
const int N = 1e6 + 10;
int v[N], n, m, k, x, t, T;
void ClearFloat()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
}
set<int> s;
signed main()
{
ClearFloat();
cin >> n;
for (int i = 1; i <= sqrt(n); i++)
{
if (n % i == 0)
{
if ((n / i) % 2 == 0)
s.insert(i);
if (n / (n / i) % 2 == 0)
s.insert(n / i);
}
}
cout << s.size() << endl;
for (auto it = s.begin(); it != s.end(); it++)
{
if (*it == n)
break;
if (it != s.begin())
cout << " ";
cout << *it;
}
return 0;
}
J - Multidimensional Points
非常恶心的一道题!!!居然卡我cin cout 改成scanf就正好967
m
s
ms
ms卡过去了 也可以加快读
用前缀和处理一下就ok了 签到题
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define xx first
#define yy second
typedef pair<int, int> PII;
const int inf = 0x3f3f3f3f;
const int N = 1e6 + 10;
int v[N], n, m, k, x, t, T;
int f[N];
signed main()
{
scanf("%lld", &n);
for (int i = 1; i <= n; i++)
scanf("%lld", &v[i]);
for (int i = 1; i <= n; i++)
{
scanf("%lld", &x);
v[i] -= x;
f[i] += v[i] * v[i] + f[i - 1];
}
cin >> m;
while (m--)
{
int a, b;
scanf("%lld %lld", &a, &b);
double c = sqrt(f[b] * 1.000 - 1.000 * f[a - 1]);
printf("%.6lf\n", c);
}
return 0;
}
∗
∗
下次一定
∗
∗
**下次一定**
∗∗下次一定∗∗