EOJ Monthly 2019.2

时间:2024-08-15 20:03:02

题解

回收卫星

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define y1 y11
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<double, double>
#define mem(a, b) memset(a, b, sizeof(a))
#define debug(x) cerr << #x << " = " << x << "\n";
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//head int main() {
LL l = , r = 2e9, m = l+r+ >> ;
int f;
while(l < r) {
cout << << " " << m << " " << << " " << << endl;
cin >> f;
if(f) l = m;
else r = m-;
m = l+r+ >> ;
}
LL x1 = m;
l = , r = 2e9, m = l+r+ >> ;
while(l < r) {
cout << << " " << -m << " " << << " " << << endl;
cin >> f;
if(f) l = m;
else r = m-;
m = l+r+ >> ;
}
LL x2 = -m;
LL x = (x1+x2)/;
l = , r = 2e9, m = l+r+ >> ;
while(l < r) {
cout << << " " << x << " " << m << " " << << endl;
cin >> f;
if(f) l = m;
else r = m-;
m = l+r+ >> ;
}
LL y1 = m;
l = , r = 2e9, m = l+r+ >> ;
while(l < r) {
cout << << " " << x << " " << -m << " " << << endl;
cin >> f;
if(f) l = m;
else r = m-;
m = l+r+ >> ;
}
LL y2 = -m;
LL y = (y1+y2)/;
l = , r = 2e9, m = l+r+ >> ;
while(l < r) {
cout << << " " << x << " " << y << " " << m << endl;
cin >> f;
if(f) l = m;
else r = m-;
m = l+r+ >> ;
}
LL z1 = m;
l = , r = 2e9, m = l+r+ >> ;
while(l < r) {
cout << << " " << x << " " << y << " " << -m << endl;
cin >> f;
if(f) l = m;
else r = m-;
m = l+r+ >> ;
}
LL z2 = -m;
LL z = (z1+z2)/;
cout << << " " << x << " " << y << " " << z << endl;
return ;
}

解题

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define y1 y11
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<double, double>
#define mem(a, b) memset(a, b, sizeof(a))
#define debug(x) cerr << #x << " = " << x << "\n";
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//head const int N = 1e6 + , M = 5e7 + ;
char s[N];
int pos[M], m;
int main() {
int q;
scanf("%s", s+);
int n = strlen(s+);
scanf("%d", &q);
while(q--) {
scanf("%d", &m);
int now = , l, r;
for (int i = ; i <= m; ++i) pos[i] = ;
int b = ;
for (int i = n; i >= ; i--) {
now = ((s[i]-'')*b + now) % m;
b = (b * ) % m;
if(now == ) {
l = i, r = n;
break;
}
if(pos[now]) {
l = i, r = pos[now]-;
break;
}
pos[now] = i;
}
printf("%d %d\n", l, r);
}
return ;
}

魔板

进制转换

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define y1 y11
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<double, double>
#define mem(a, b) memset(a, b, sizeof(a))
#define debug(x) cerr << #x << " = " << x << "\n";
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//head
const LL INF = 1e18 + ;
LL l, r;
int k, m;
LL solve(LL n) {
LL b = ;
for (int i = ; i <= m; ++i) {
if(INF/k >= b) b *= k;
else {
b = INF;
break;
}
}
LL bb = ;
if(INF/k >= b) bb = b*k;
else bb = INF;
return n/b - n/bb;
}
int main() {
int T;
scanf("%d", &T);
while(T--) {
scanf("%lld %lld %d %d", &l, &r, &k, &m);
printf("%lld\n", solve(r) - solve(l-));
}
return ;
}

中位数

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define y1 y11
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<double, double>
#define mem(a, b) memset(a, b, sizeof(a))
#define debug(x) cerr << #x << " = " << x << "\n";
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//head const int N = 1e6 + ;
const int INF = 0x3f3f3f3f;
vector<int> g[N];
int a[N], d[N], in[N];
int topo[N];
int n, m, u, v;
bool vis[N];
queue<int> q;
stack<int> st;
void Topo() {
for (int i = ; i <= n; ++i) {
if(in[i] == ) q.push(i);
}
int cnt = ;
while(!q.empty()) {
int u = q.front();
topo[++cnt] = u;
q.pop();
for (int v : g[u]) {
in[v]--;
if(in[v] == ) q.push(v);
}
}
}
bool ck(int m) {
for (int i = ; i <= n; ++i) d[i] = -INF;
d[] = ((a[] >= m)? : -);
for (int i = ; i <= n; ++i) {
int u = topo[i];
if(!vis[u]) continue;
for (int v : g[u]) {
d[v] = max(d[v], d[u]+((a[v] >= m)? : -));
}
}
return d[n] >= ;
}
int main() {
scanf("%d %d", &n, &m);
for (int i = ; i <= n; ++i) scanf("%d", &a[i]);
for (int i = ; i <= m; ++i) {
scanf("%d %d", &u, &v);
g[u].pb(v);
in[v]++;
}
Topo();
st.push();
while(!st.empty()) {
int u = st.top();
st.pop();
if(vis[u]) continue;
vis[u] = true;
for (int v : g[u]) {
if(!vis[v]) st.push(v);
}
}
if(!vis[n]) {
puts("-1");
exit();
}
int l = , r = 1e9, mid = l+r+ >> ;
while(l < r) {
if(ck(mid)) l = mid;
else r = mid-;
mid = l+r+ >> ;
}
printf("%d\n", mid);
return ;
}

方差

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#include<bits/stdc++.h>
using namespace std;
#define y1 y11
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pli pair<LL, int>
#define pii pair<int, int>
#define piii pair<pii, int>
#define pdd pair<double, double>
#define mem(a, b) memset(a, b, sizeof(a))
#define debug(x) cerr << #x << " = " << x << "\n";
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//head const LL INF = 0x7f7f7f7f7f7f7f7f;
const int N = 1e6 + , M = 1e3 + ;
int a[N], cnt[M], sum[M];
int main() {
int n, m;
scanf("%d %d", &n, &m);
for (int i = ; i <= n; ++i) scanf("%d", &a[i]);
LL ans = INF, x = , y = ;
sort(a+, a++n);
for (int i = ; i <= n; ++i) {
if(i <= m) {
x += 1LL*a[i]*a[i];
y += a[i];
}
else {
x -= 1LL*a[i-m]*a[i-m];
x += 1LL*a[i]*a[i];
y -= a[i-m];
y += a[i];
}
if(i >= m) ans = min(ans, m*x - y*y);
}
printf("%lld\n", ans);
return ;
}