【赛后反思】洛谷基础赛 #15 &「LAOI」Round 6 考后总结(待补完)

LGR-198-Div.3 考后总结

又要掉分了:

image

展开目录

A [太阳]] 请使用最新版手机 QQ 体验新功能-100pts

因为实际上要截取的内容就是方括号里的,所以扫一遍把首字母提取出来,扫到方括号就跳出就行。

展开代码
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
char s[105], b[105];
int main() {
	scanf("%s", s);
	putchar('/');
	for(int i = 1; i < strlen(s); ++i) {
		if('A' <= s[i] && s[i] <= 'Z') putchar(s[i] + 32);
		if(s[i] == ']') break;
	}
	puts("");
	return 0;
}

B Radiation-100pts

赛时时间卡不过+WA,就想了个很乱搞的优化,结果发现这个优化才是正解。

先填 \(min\{n, m\}\)S,容易发现填到对角线是最优的。

超过这个数的 S 不管放到哪里都对结果没有影响,可以随便放。

展开代码
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 2 * 1e3 + 5;
ll T, n, m, k, l[N], h[N];
char c[N][N];
int main() {
	scanf("%lld", &T);
	while(T--) {
		scanf("%lld%lld%lld", &n, &m, &k);
		for(int i = 1; i <= n; ++i) {
			for(int j = 1; j <= m; ++j) c[i][j] = '.', l[j] = 0;
			h[i] = 0;
		}
//		++k;
		ll r = min(n, m), g = k;
		if(k > r) k = r;
		while(k--) {
			int mini = 0, minj = 0, mina = 0x7fffffff;
			for(int i = 1; i <= n; ++i) if(l[i] < mina) mina = l[i], mini = i;
			mina = 0x7fffffff;
			for(int i = 1; i <= m; ++i) if(h[i] < mina && c[mini][i] == '.') mina = h[i], minj = i;
			++h[minj], ++l[mini], c[mini][minj] = 'S';
//			for(int i = 1; i <= n; ++i) {
//				for(int j = 1; j <= m; ++j) putchar(c[i][j]);
//				puts("");
//			}
//			puts("");
		}
		if(g > r) {
			for(int i = 1; i <= n; ++i) {
				for(int j = 1; j <= m; ++j) {
					if(c[i][j] == '.') c[i][j] = 'S', --g;
					if(g == r) break;
				}
				if(g == r) break;
			}
		}
		for(int i = 1; i <= n; ++i) {
			for(int j = 1; j <= m; ++j) putchar(c[i][j]);
			puts("");
		}
	}
	return 0;
}

C 区间测速-50pts

机房都说是线段树,我说肯定不是,结果真不是。

\(O(nm)\) 的暴力可以荣获 \(50pts\).

展开代码
#include <bits/stdc++.h>
#define ll long long
#define Mywife Cristallo
using namespace std;
const int N = 1e5 + 5;
struct node {
	ll s, t;
} a[N], f[N];
bool cmp(node x, node y) {
	return x.t < y.t;
}
ll n, m, u, v, ans;
int main() {
	scanf("%lld%lld", &n, &m);
	for(int i = 1; i <= n; ++i) scanf("%lld%lld", &a[i].s, &a[i].t);
	for(int i = 1; i <= n; ++i)	f[i] = a[i];
	while(m--) {
		scanf("%lld%lld", &u, &v);
		ll g = a[u].t, num = 0;
		for(int i = 1; i <= n; ++i) if(f[i].t == g) {f[i].t = v; break; }
		sort(f + 1, f + n + 1, cmp);
		for(int i = 1; i <= n; ++i) if(f[i].t == v) {num = i; break; }
		for(int i = 1; i < n; ++i) ans = max(ans, abs(f[i].s - f[i + 1].s) / (f[i + 1].t - f[i].t));
		printf("%lld\n", ans);
		ans = 0, f[num].t = g;
	}
	return 0;
}

D Yet Another Graph Coloration Problem-5pts

面向数据点编程可以荣获 \(5pts\).

展开代码
#include <bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
int T;
int main() {
	scanf("%d", &T);
	while(T--) puts("-1");
	return 0;
}
posted @ 2024-09-07 21:40  _Kiichi  阅读(68)  评论(2)    收藏  举报