【反思】Sadness Fan Club Round 3 赛后反思

发布时间 2023-08-04 14:36:55作者: _Kiichi

Sadness Fan Club Round 3 赛后反思

被薄纱了:

图挂了就是没有了

推歌:Bao The Whale《Cirtus Love》

小鲸鱼粉色那个皮好可爱好可爱(献花(爱心

展开目录

A 进行一个拆的解

面向数据编程

\(10pts\) Solution

特判全 \(0\) 情况,不放心的话也可以改成特判全相等

展开代码
for(int i = 1; i < n; ++i) if(a[i] != a[i + 1]) {flag = 1; break; }
if(!flag) {printf("NO\n"); continue; }

Another \(45pts\) Solution

我们可以把重复出现的每种子序列分别看成 1,2,3,...

由此可以把 \(n\) 是偶数的情况直接看成 \(n = 2\) 的情况:

n = 2
1 1
1 2

可以发现,\(n\) 是偶数时,只要把原序列从中间拆开,左侧的子序列和右侧的子序列不相等,那这个序列就可以被拆开。

特判偶数,由此可以得到一款 \(45pts\)(包含 \(subtask\ 1\)\(subtask\ 2\))的代码:

展开代码
//l预处理,是 n / 2
if(!(n % 2)) {
    for(int i = 1; i <= l; ++i) if(a[i] != a[i + l]) {flag = 1; break; }
    if(flag) printf("YES\n");
    else printf("NO\n");
} else {
    for(int i = 1; i <= l; ++i) if(a[i] != a[n - i + 1]) {flag = 1; break; }
    if(flag) printf("YES\n");
    else printf("NO\n");
} 

\(100pts\) Solution

咕咕咕

B 进行一个列的排

看不懂题,咕咕咕

C 进行一个走的行

暴力出奇迹

\(10pts\) Solotion

直接暴力模拟可得优秀的 \(10pts\)

展开代码
#include<bits/stdc++.h>
#define ll long long
#define MyWife Cristallo
using namespace std;
const int N = 1e6 + 5;
int n, m, a[N], b[N], v[N], x, l, r;
ll ans;
int main() {
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; ++i) scanf("%d%d%d", a + i, b + i, v + i);
    while(m--) {
        ans = 0;
        scanf("%d%d%d", &l, &r, &x);
        for(int i = l; i <= r; ++i) {
            if(b[i] == -1 && x - a[i] > 0) x -= a[i], ans += v[i];
            if(b[i] != -1 && ((x <= b[i] && x >= a[i])||(x >= b[i] && x <= a[i]))) ans += v[i];
        }
        printf("%lld\n", ans);
    }
	return 0;
}

\(100pts\) Solution

咕咕咕

D 进行一个魔的除

应该也能暴力骗一点分,但是赛时精神状态一言难尽,所以咕咕咕

%%%: