【已补完】【解题报告】【比赛复现】洛谷入门赛#18
洛谷入门赛 #18 题解
今日推歌:《Love it?》LOLUET
很伟大的唱法,建议都去听听(雾
Before
展开目录
A 灵活控分
算
AC代码
展开代码
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e5 + 5;
double a;
int main() {
scanf("%lf", &a);
printf("%.lf", ceil((a / 10.0) * (a / 10.0)));
return 0;
}
After
B 禁止在 int 乘 int 时不开 long long
如题,需要开 long long,直接最小和最小相乘判是否小于下界、最大和最大相乘判是否大于上界即可。
AC代码
展开代码
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e5 + 5;
const ll inf = 2147483648;
ll a, b, c, d;
int main() {
scanf("%d%d%d%d", &a, &b, &c, &d);
if(a * c < -inf || b * d >= inf) puts("long long int");
else puts("int");
return 0;
}
After
C NK
首先这题开 pow 会 TLE,其次这题步长为 1 也会 TLE.而我两个都占(
提前算好
AC代码
展开代码
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e5 + 5;
ll n, k;
int ans;
int main() {
scanf("%d%d", &n, &k);
ll t = 1;
for(int i = 1; i <= n; ++i) t *= n;
for(int i = n; i <= t; i += 10) if(!((i % k) % n)) ++ans;
printf("%d\n", ans);
return 0;
}
After
D 异或构造题?
因为一个数异或它自己一定是
AC代码
展开代码
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e6 + 5;
ll n, a, nn;
int main() {
scanf("%lld", &n);
for(int i = 1; i <= n; ++i) {
scanf("%lld", &a);
// scanf 没加 & 就是说的这个,因为后来我意识到可以把数组简化成一个变量,但是把 a + i 改成 a 了没加 &.
if(i == 1) nn = a;
else nn = (nn ^ a);
}
printf("%lld 0\n", nn);
return 0;
}
E 颜料覆盖
用前缀和(仮)处理出到一层颜料为止的非
一个区域看作一组数据单独求解。
AC代码
展开代码
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e6 + 5;
int n, m, a[N], sum[N];
int main() {
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; ++i) {
int maxa = 0, maxi = 0;
for(int j = 1; j <= m; ++j) {
scanf("%d", a + j), sum[j] = sum[j - 1];
if(a[j]) ++sum[j];
if(a[j] > maxa) maxa = a[j], maxi = j;
}
printf("%d %d\n", maxi, sum[maxi - 1]);
// 多测要换行。
}
return 0;
}
F 函数零点
按照题意模拟。注意当这个点是 0 的时候这个点就是零点。
AC代码
展开代码
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e5 + 5;
ll n, a[N], ans;
int main() {
scanf("%lld", &n);
for(int i = 0; i <= n; ++i) {
scanf("%lld", a + i);
if(a[i] * a[i - 1] < 0) ++ans;
if(!(a[i])) ++ans;
}
printf("%lld\n", ans);
return 0;
}
After
G 铅球杯
用 map 映射 {变量名}
和对应的值,当搜到 {
时输出对应值,并跳到 }
出现的位置。
注意的是这里使用 string.find()
需要传从哪个位置开始搜,不然就会一直在第一个位置转。
AC代码
展开代码
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e5 + 5;
int n, k, b;
string a, c;
map<string, int> mp;
int main() {
// freopen("cup.in", "r", stdin);
cin >> n >> k;
for(int i = 1; i <= n; ++i) {
cin >> a >> b;
mp.insert(make_pair("{" + a + "}", b));
}
getchar();
for(int i = 1; i <= k; ++i) {
getline(cin, c);
for(int j = 0; j < c.size(); ++j) {
int x = c.find('}', j);
cout << mp.find(c.substr(j, x - j + 1)) -> second;
j = x;
} else cout << c[j];
}
putchar('\n');
}
return 0;
}
After
结语
(啊?还有一道?不知道,不认识,没听过。
本文作者:Kiichi
本文链接:https://www.cnblogs.com/Kiichi/p/18020543/rumensai20tijie
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步