CSP 2021 总结

PJ

开题顺序:1342

应该先做 T2 ,导致我 T2 直接看错

T1、T3

T1 :直接推规律即可,考场的想法应该正确

T3 :好家伙直接 map 走起

T2

最崩溃的来了 :\(5000\times8000=4e7\) 是吧,愣是给我看成了 \(4e8\)

然后想打插入排序(正解)骗分,发现插入排序不对,就直接 sort

。。。。。。。。

。。。。。。。。

。。。。。。。。

心 态 炸 裂

退役吧

T4

考试时想到双链表,过了小数据,但没过大数据

浪费了太多时间,导致了 T2 直接挂

总结

考试的心态不好,太急了,连 T1 都要好久才沉下心来想

今年的 pj 比较水,没有说什么没想到。

但是代码实现弱 —— T4 挂了,并浪费大量时间

眼花缭乱——四千万看成四亿

TG

T1

直接枚举廊桥+堆,暴力 \(O(nm\log n)\)

正解:设 \(c_i\) 表示 \(i\) 个廊桥能停靠的飞机,则 \(ans=\max c_{1,i}+c_{2,n-i}\)

考虑到每一个廊桥加入都会使得飞机可以停靠。

即 \(c_i=c_{i-1}+x\) , 因为 \(c_0=0\) ,于是可以通过已知 \(c_{i-1}\) 推出 \(c_i\)

考虑求 \(x\) ,因为先到先得,原有的廊桥是被占满的,于是新加的廊桥只会影响没有停廊桥的飞机

模拟,若当前飞机停靠的结束时间是 \(t\) ,每次查询停靠开始时间最接近 \(t\) 的停靠,用一个 set 即可

#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int n,m1,m2,c1[N],c2[N],ans;
struct rg {
int l,r;
bool operator <(rg A) const {
return l<A.l;
}
}x[N],y[N];
set<rg>S;
set<rg>::iterator it;
int main() {
freopen("airport.in","r",stdin);
freopen("airport.out","w",stdout);
scanf("%d%d%d",&n,&m1,&m2);
for(int i=1;i<=m1;i++)scanf("%d%d",&x[i].l,&x[i].r);
for(int i=1;i<=m2;i++)scanf("%d%d",&y[i].l,&y[i].r);
sort(x+1,x+m1+1);
sort(y+1,y+m2+1);
S.clear();
for(int i=1;i<=m1;i++)S.insert(x[i]);
for(int i=1,vl,p;i<=n;i++) {
vl=p=0;
while(1) {
it=S.lower_bound((rg){p,0});
if(it==S.end())break;
++vl,p=it->r,S.erase(it);
}
c1[i]=c1[i-1]+vl;
}
S.clear();
for(int i=1;i<=m2;i++)S.insert(y[i]);
for(int i=1,vl,p;i<=n;i++) {
vl=p=0;
while(1) {
it=S.lower_bound((rg){p,0});
if(it==S.end())break;
++vl,p=it->r,S.erase(it);
}
c2[i]=c2[i-1]+vl;
}
for(int i=0;i<=n;i++)
ans=max(ans,c1[i]+c2[n-i]);
printf("%d",ans);
}

T2

区间 dp ,想到后直接放弃

T3

大模拟,对于第一个是 \(L\) 或 \(R\) 分类讨论

问题简化为两个栈,如何轮流弹出栈顶使序列是个回文序列

可通过奇怪证明,发现若能弹出则一定可以弹出。

于是按照字典序枚举情况即可

考场就想到了正解,但是一些奇怪的错误被 hack 了

。。。。。。。。

。。。。。。。。

。。。。。。。。

心 态 炸 裂

退役吧

参考网络题解:这里可以把栈变成双端队列,每次弹出一对相同的数,组成回文

#include<bits/stdc++.h>
using namespace std;
const int N=500005;
int T,n,x[N<<1],fl,p,ans[N<<1];
struct que {
int q[N<<1],l,r;
inline void clear() { l=1,r=0; }
inline void push(int a) { q[++r]=a; }
inline int Fr() { return q[l]; }
inline int Bk() { return q[r]; }
inline bool empty() { return l>r; }
inline void Pf() { ++l; }
inline void Pb() { --r; }
inline int Sz() { return r-l+1; }
}A,B;
void make(int op) {
int p1=1,p2=n;
if(op==1)++p1;
else --p2;
A.clear(),B.clear();
for(int i=p-1;i>=p1;i--)A.push(x[i]);
for(int i=p+1;i<=p2;i++)B.push(x[i]);
for(int i=2;i<=n/2;i++) {
if(A.empty() && B.empty())break;
if(B.empty()) {
if(A.Fr()!=A.Bk())
return;
ans[i]=ans[n-i+1]=1;
A.Pb(),A.Pf();
} else if(A.empty()) {
if(B.Fr()!=B.Bk())
return;
ans[i]=ans[n-i+1]=2;
B.Pb(),B.Pf();
} else {
if(A.Sz()>1 && A.Fr()==A.Bk())
ans[i]=ans[n-i+1]=1,A.Pb(),A.Pf();
else if(A.Bk()==B.Fr())
ans[i]=1,ans[n-i+1]=2,A.Pb(),B.Pf();
else if(A.Fr()==B.Bk())
ans[i]=2,ans[n-i+1]=1,A.Pf(),B.Pb();
else if(B.Sz()>1 && B.Fr()==B.Bk())
ans[i]=ans[n-i+1]=2,B.Pb(),B.Pf();
else return;
}
}
fl=1;
}
int main() {
scanf("%d",&T);
while(T--) {
scanf("%d",&n),n<<=1;
for(int i=1;i<=n;i++) {
scanf("%d",&x[i]);
}
ans[n]=1;
fl=0;
ans[1]=1;
for(int i=2;i<=n;i++)
if(x[i]==x[1]) {
p=i; break;
}
make(1);
if(!fl) {
ans[1]=2;
for(int i=1;i<n;i++)
if(x[i]==x[n]) {
p=i; break;
}
make(n);
}
if(!fl)puts("-1");
else {
for(int i=1;i<=n;i++) {
if(ans[i]==1)putchar('L');
else putchar('R');
}
puts("");
}
}
}

T4

What?

看懂大意后直接再见

总结

很好——暴力没有挂,至少能有分

我* —— 实现上的失误,还是代码实现能力差

大总结

  1. 代码实现能力弱
  2. 思维不够发散,一些结论不难的题想不到
  3. 考试的心态不够好,过于心急,导致半天一筹莫展

过去的都过去了,希望本蒟蒻以后能专注于训练思维、代码实现

noip 2021 保佑

CSP 2021 总结的更多相关文章

  1. 【游记】CSP 2021 J2

    这次是第一次参加CSP的复赛,所以考的就很LJ. \(DAY-\infty\) 到 \(DAY-14\) 知道了自己苟过了初赛,像个SB一样. (我初赛66分,旁边那位63.5,cao着线过去的) \ ...

  2. CSP 2021 游记

    \(\text{Day -INF}\) 看见了 \(\text{SCP2021}\) 的报名通知,想着应该教练会让我们统一报名,就没放在心上 然后-- 然后过了二十多天教练根本没有提报名的事情,搞得我 ...

  3. [游记]CSP 2021 J/S

    这一次,也许是我的OI生涯的转折点了--能过,学习OI的时间就不会减少:但不能过,就会减少学习OI的时间-- 上午(S组) 6:00起床.去吃早餐,结果因为边喝粥边喝牛奶导致肚子疼.(我在这里劝大家, ...

  4. 后缀自动机(SAM)奶妈式教程

    后缀自动机(SAM) 为了方便,我们做出如下约定: "后缀自动机" (Suffix Automaton) 在后文中简称为 SAM . 记 \(|S|\) 为字符串 \(S\) 的长 ...

  5. 2021.10.19 CSP 模拟赛 总结

    T1 题意: \(n\) 个人摘苹果,跳起高度为 \(a_i\),苹果高度为 \(h_i\),高度小的先摘,摘了就没了 直接排序+双指针,复杂度 \(O(n+m)\) T2 题意:要轰炸一个有向图的所 ...

  6. CSP-J 2021 游记

    今年是本人第一次参加CSP组的竞赛. Day 0 晚上复习了几套初赛试卷,做到晚上十点多结束.其实暑假已经做过不少了. Day 1 早上继续复习noip历年真题,在洛谷有题上面自己做题,一向只能考十几 ...

  7. 【OWASP TOP10】2021年常见web安全漏洞TOP10排行

    [2021]常见web安全漏洞TOP10排行 应用程序安全风险 攻击者可以通过应用程序中许多的不同的路径方式去危害企业业务.每种路径方法都代表了一种风险,这些风险都值得关注. 什么是 OWASP TO ...

  8. CSP J/S 初赛总结

    CSP J/S 初赛总结 2021/9/19 19:29 用官方答案估计 J 涂卡的时候唯一的一支 2B 铅笔坏了,只能用笔芯一个个涂 选择 \(-6\ pts\) 判断 \(-3\ pts\) 回答 ...

  9. CSP的今世与未来

    一.从两个工具说起 最近Google又推出了两款有关CSP利用的小工具,其一为CSP Evaluator,这是一个能够评估你当前输入的CSP能否帮助你有效避免XSS攻击的工具,其用法非常简单,在输入框 ...

随机推荐

  1. Idea中配置Tomcat以及运行maven项目

    maven安装和详细配置 提示:下面是Tomcat9.0版本的下载链接,需要其他版本的去官方网站下载. 链接:https://pan.baidu.com/s/1CONf8KVXM4gyJj4pxjFB ...

  2. Ubuntu系统报错The system is running in low-graphics mode

    Ubuntu系统报错:The system is running in low-graphics mode 我遇到过两次这种请况,这次解决了.很nice! 在csdn上搜到的大部分操作是: 鼠标进入系 ...

  3. PyQt5 基本语法(五)

    目录 2. 输入控件(二) 2.2 步长调节 2.2.1 QAbstractSpinBox 2.2.1.1 描述 2.2.1.2 功能作用 2.2.1.2.1 使用 2.2.1.2.2 主要功能 2. ...

  4. LC-24

    [24. 两两交换链表中的节点](https://leetcode-cn.com/problems/swap-nodes-in-pairs/) 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的 ...

  5. Golang 源码解读 01、深入解析 strings.Builder、strings.Join

    strings.Builder 源码解析. 存在意义. 实现原理. 常用方法. 写入方法. 扩容方法. String() 方法. 禁止复制. 线程不安全. io.Writer 接口. 代码. stri ...

  6. SQL语言详解

    SQL 1. 概述 Structured Query Language 结构化查询语言 结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言, ...

  7. linux创建磁盘阵例10

    Linux创建RAID10 生产环境中用到的服务器一般都配备RAID阵列卡,尽管服务器的价格越来越便宜,但是我们没有必要为了做一个实验而去单独购买一台服务器,而是可以学会使用mdadm命令在Linux ...

  8. 攻防世界-MISC:base64÷4

    这是攻防世界高手进阶区的第一题,题目如下: 点击下载附件一,发现是一个文本文档,打开后得到一串字符串 由题意猜测这些字符串应该是base16加密过的,写个脚本跑一下 import base64 s = ...

  9. Django-----cookie&session

    cookie 保存在用户浏览器端的一个键值对(别人给的凭证) 服务端可以向用户浏览器写cookie 客户端每次发请求会携带cookie去(放在请求头里面) 淘宝的cookie  京东的cookie(h ...

  10. 【mq】从零开始实现 mq-08-配置优化 fluent

    前景回顾 [mq]从零开始实现 mq-01-生产者.消费者启动 [mq]从零开始实现 mq-02-如何实现生产者调用消费者? [mq]从零开始实现 mq-03-引入 broker 中间人 [mq]从零 ...