1.21 && 第二场模拟赛记
写在前面:非常好模拟赛,9 道题,3 道不用写,三道原题,两道原题,一道东方题。
根据等量代换可得有 5 道原题。
- t2 原题 CF739A
赛时理解错题意了,具体咋想的我也忘了,但是我的构造方法是每个区间从 0 开始构造,如果不在区间内则任意输出。
但是正解是找到最小区间然后按区间循环输出即可。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int INF=0x3f3f3f3f;
signed main()
{
int n,m,l,r,mex=INF;
cin>>n>>m;
while(m--)
{
cin>>l>>r;
mex=min(mex,r-l+1);
}
for(int i=1;i<=n;++i)
cout<<i%mex<<" ";
}
但是这做法假了,具体挂多少分不清楚。
预估 10pts
- t3 坦克世界(不是
直接完蛋,又把题意理解错了QAQ,我认为若 \(n>m\) 的话显然不可能有解,所以直接输出 0。
但是显然一根指头可以操纵多辆坦克,所以需要继续贪心做法,但是我不会。
预估 40pts
暴力 DFS 好像可以拿 50,洛天依写法。
- t4 校内模拟赛原题 最大生成树
正解贪心。
#include<bits/stdc++.h>
const int N=1e6;
using namespace std;
#define int long long
int a[N],n,ans;
signed main()
{
int n;
cin>>n;
for(int i=1;i<=n;++i)
cin>>a[i];
sort(a,a+n+1);
ans+=a[n]-a[1];
for(int i=2;i<n;++i)
ans+=max(a[n]-a[i],a[i]-a[1]);
cout<<ans;
}
正确性证明略过,赛时打的 \(n^2\) 复杂度贪心,导致跟拿最小生成树写的一样分是 70pts
预估 70pts
- t5
高贵的 \(\Huge \textbf {K8He}\) 说:区间DP
但是我赛时用的 4 个 flag 判断然后输出 4 个 flag 累加即可。
但是暂且认为它是错的。
被一组 hack 轻松hack 了,挂分!
正解
#include <bits/stdc++.h>
using namespace std;
const int N=110,inf=0x3f3f3f3f;
char s[N];
int f[N][N]; // f[i][j]代表将i~j个字符变成GBE的所有方案的集合的最小值
bool check(int a, int b)
{
if (s[a] == '[' && s[b] == ']' || s[a] == '(' && s[b] ==')')
return true;
return false;
}
int main()
{
scanf("%s",s+1);
int n=strlen(s+1);
for (int len = 1; len <= n; len++)
for (int l=1;l+len-1<=n;l++)
{
int r=l+len-1;
if (len==1) f[l][r]=1;
else
{
f[l][r]=inf;
if (check(l,r)) f[l][r] = min(f[l][r],f[l+1][r-1]);
for (int k=l;k<=r;k++)
f[l][r]=min(f[l][r],f[l][k]+f[k+1][r]);
}
}
cout<<f[1][n]<<endl;
}
预估 ?pts
哈哈,赛事写了 5 种写法 hack 了自己 5 次,😭😭😭
- t6 暑假模拟赛原题 校门外的树
正解显然线段树,但是我不会写😅😅😅
赛事 bulid 写挂了直接爆破,暴力模拟拿了 30 就润了。
预估 30pts
洛天依拿线段树维护 50pts 强!
- t7 XOR 暂时没发现是不是原题
但是暴力可拿 60pts😋😋😋
果断拿了 60pts 开始罚坐,最后一直在看 t2 也没改对,哎。
正解是二维树状数组(?)
反思:考时自我感觉良好,写过的题不愿意去改也不愿意 hack,导致自己挂分很严重但是每道题都是差一点想出正解但是都挂分挂得很严重,直接把我梦幻的梦戳得粉碎。
应该是选不上了吧,这么菜。
我会继续努力的。
洛天依未卜先知!Huge考之前说“没事复习什么考什么,没复习的都不考!”
说的挺对的,我复习的除了线段树都没考,但是线段树还没用上,我不会打。
挺有趣的一个点。

浙公网安备 33010602011771号