CSP 2021 总结
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?
看懂大意后直接再见
总结
很好——暴力没有挂,至少能有分
我* —— 实现上的失误,还是代码实现能力差
大总结
- 代码实现能力弱
- 思维不够发散,一些结论不难的题想不到
- 考试的心态不够好,过于心急,导致半天一筹莫展
过去的都过去了,希望本蒟蒻以后能专注于训练思维、代码实现
noip 2021 保佑
CSP 2021 总结的更多相关文章
- 【游记】CSP 2021 J2
这次是第一次参加CSP的复赛,所以考的就很LJ. \(DAY-\infty\) 到 \(DAY-14\) 知道了自己苟过了初赛,像个SB一样. (我初赛66分,旁边那位63.5,cao着线过去的) \ ...
- CSP 2021 游记
\(\text{Day -INF}\) 看见了 \(\text{SCP2021}\) 的报名通知,想着应该教练会让我们统一报名,就没放在心上 然后-- 然后过了二十多天教练根本没有提报名的事情,搞得我 ...
- [游记]CSP 2021 J/S
这一次,也许是我的OI生涯的转折点了--能过,学习OI的时间就不会减少:但不能过,就会减少学习OI的时间-- 上午(S组) 6:00起床.去吃早餐,结果因为边喝粥边喝牛奶导致肚子疼.(我在这里劝大家, ...
- 后缀自动机(SAM)奶妈式教程
后缀自动机(SAM) 为了方便,我们做出如下约定: "后缀自动机" (Suffix Automaton) 在后文中简称为 SAM . 记 \(|S|\) 为字符串 \(S\) 的长 ...
- 2021.10.19 CSP 模拟赛 总结
T1 题意: \(n\) 个人摘苹果,跳起高度为 \(a_i\),苹果高度为 \(h_i\),高度小的先摘,摘了就没了 直接排序+双指针,复杂度 \(O(n+m)\) T2 题意:要轰炸一个有向图的所 ...
- CSP-J 2021 游记
今年是本人第一次参加CSP组的竞赛. Day 0 晚上复习了几套初赛试卷,做到晚上十点多结束.其实暑假已经做过不少了. Day 1 早上继续复习noip历年真题,在洛谷有题上面自己做题,一向只能考十几 ...
- 【OWASP TOP10】2021年常见web安全漏洞TOP10排行
[2021]常见web安全漏洞TOP10排行 应用程序安全风险 攻击者可以通过应用程序中许多的不同的路径方式去危害企业业务.每种路径方法都代表了一种风险,这些风险都值得关注. 什么是 OWASP TO ...
- CSP J/S 初赛总结
CSP J/S 初赛总结 2021/9/19 19:29 用官方答案估计 J 涂卡的时候唯一的一支 2B 铅笔坏了,只能用笔芯一个个涂 选择 \(-6\ pts\) 判断 \(-3\ pts\) 回答 ...
- CSP的今世与未来
一.从两个工具说起 最近Google又推出了两款有关CSP利用的小工具,其一为CSP Evaluator,这是一个能够评估你当前输入的CSP能否帮助你有效避免XSS攻击的工具,其用法非常简单,在输入框 ...
随机推荐
- 居中select中的option选项
select经常有长短不一的选项:选择不同的选项居中不会生效: 使用text-align:center;text-align-last: center; 可以让所有选项都居中: 关于text-dec ...
- 设计模式学习笔记(十五)命令模式及在Spring JdbcTemplate 中的实现
命令(Command)模式是指将请求封装成为一个对象,使发出请求和执行请求的责任分割开,方便将命令对象进行存储.传递.调用.增加与管理. 也就是将发送者.接收者和调用命令封装成独立的对象,来供客户端调 ...
- docker将jar打包镜像文件
1.首先需要编写dockerfile文件,通过dockerfile文件将jar包打成镜像 编写dockerfile文件 # 定义父镜像 FROM java:8 # 维护者信息 MAINTAINER c ...
- linux部署项目访问mysql问题
springboot以war包形式传到webapps下面,mysql创建库和表,war包里配置数据源是localhost,然后运行tomcat是没有问题的,可以访问通mysql正常请求服务. ssm以 ...
- 《码处高效:Java开发手册》之代码风格
流水淡,碧天长,鸿雁成行.编码风格,简捷清爽,反引无限风光. 在美剧<硅谷>中有这样一个经典镜头,主人公 Richard 与同为开发工程师的女友闹分手,理由是两人对缩进方式有着截然不同的编 ...
- ASP.NET Core的几种服务器类型[共6篇]
作为ASP.NET CORE请求处理管道的"龙头"的服务器负责监听和接收请求并最终完成对请求的响应.它将原始的请求上下文描述为相应的特性(Feature),并以此将HttpCont ...
- Hyperledger Fabric无系统通道启动及通道的创建和删除
前言 在Hyperledger Fabric组织的动态添加和删除中,我们已经完成了在运行着的网络中动态添加和删除组织,但目前为止,我们启动 orderer 节点的方式都是通过系统通道的方式,这样自带系 ...
- ArcGIS使用技巧(五)——批量裁剪
新手,若有错误还请指正! 最近用到了,所以记下来,用同一矢量范围裁剪多幅栅格数据.用到了ArcGIS中的迭代模型(图1): 图 1 首先,需要做一个准备工作,就是把需要裁剪的栅格数据放在同一数据库中( ...
- 【职场必备】6个免费良心网站&职场办公网站(收藏血赚)
1.随机自动生成头像的网站:https://www.tool22.com/Tools-SJTX.html2.迅捷PDF转换器:https://app.xunjiepdf.com/3.全网音乐下载:① ...
- SQL语言详解
SQL 1. 概述 Structured Query Language 结构化查询语言 结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言, ...