补题场链接:https://pintia.cn/problem-sets/1373141720280027136
本次选拔赛除后三题以外,其余的题目难度都不是很大,简单筛选一下大家的基础。请大家这段时间加油刷题,好好准备 4月24日 的天梯赛正赛。
L1-1 买不起的肥宅水
Solution
直接算即可,因为瓶数一定是整数所以取整。
Code
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
typedef pair<double, int> PDI;
const int N = 6e6 + 7, M = 5e6 + 7, mod = 1e9 + 7, INF = 0x3f3f3f3f;
const double PI = acos(-1.0), eps = 1e-8;
double n;
signed main()
{
scanf("%lf", &n);
cout << int(50 / n) <<endl;
return 0;
}
L1-2 分解分解再分解
Solution
分解质因数模板题。
Code
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> PII;
typedef pair<double, int> PDI;
const int N = 6e6 + 7, M = 5e6 + 7, mod = 1e9 + 7, INF = 0x3f3f3f3f;
const double PI = acos(-1.0), eps = 1e-8;
int n, m;
int ans[N], tot;
signed main()
{
scanf("%lld", &n);
for(int i = 2; i <= n / i; ++ i) {
if(n % i == 0) {
ans[ ++ tot] = i;
while(n % i == 0) n /= i;
}
}
if(n > 1) ans[ ++ tot] = n;
cout << tot << endl;
for(int i = 1; i <= tot; ++ i) {
printf("%lld%s", ans[i], i == tot ? "\n" : " ");
}
return 0;
}
L1-3 阅览室
直接模拟即可。
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
typedef pair<double, int> PDI;
const int N = 1e4 + 7, M = 5e6 + 7, mod = 1e9 + 7, INF = 0x3f3f3f3f;
const double PI = acos(-1.0), eps = 1e-8;
double sum;
int Time[N];
bool vis[N];
int t, tot;
signed main()
{
scanf("%d", &t);
char ch;
int id, h, m;
while(scanf("%d %c %d:%d", &id, &ch, &h, &m) != EOF) {
if(id == 0) {
memset(vis, 0, sizeof vis);
memset(Time, 0, sizeof Time);
if(tot == 0) puts("0 0");
else printf("%d %d\n", tot, int(sum / tot + 0.5));
sum = 0.0, tot = 0;
}
if(ch == 'S') {
vis[id] = 1;
Time[id] = h * 60 + m;
}
else if(ch == 'E' && vis[id]) {
vis[id] = 0;
sum += h * 60 + m - Time[id];
++ tot;
}
}
return 0;
}
L1-4 桥短几何
直接爆搜即可。
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int INF = 0x3f3f3f3f;
const double eps = 1e-4;
typedef long long ll;
typedef pair<int, int> pii;
int n, mp[110][110], dx[4] = {
0, 1, 0, -1}, dy[4] = {
1, 0, -1, 0};
int island1[10000], island2[10000], idx1, idx2;
void bfs(int x, int y, int color)
{
queue<pii> q;
q.push({
x, y});
mp[x][y] = color;
while(q.size())
{
pii t = q.front();
q.pop();
for (int i = 0; i < 4; i ++)
{
int nx = t.first + dx[i], ny = t.second + dy[i];
if (nx < 1 || nx > n || ny < 1 || ny > n) continue