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攻击的工具,其用法非常简单,在输入框 ...
随机推荐
- CentOS7 Network Setting
#display devices[root@localhost ~]# nmcli d #set ipv4 address[root@localhost ~]# nmcli c modify eth0 ...
- ruby 版本管理RVM (ruby version manager)
macOS. 自带的ruby 版本目录权限比较高, 经常有很多 操作需要权限而不能执行 虽然 macOS 自带了一个 ruby 环境,但是是系统自己使用的,所以权限很小,只有 system. 而/Li ...
- URLDNS反序列化链学习
URLDNS URLDNS跟CommonsCollections比起来真是眉清目秀,该链主要用于验证漏洞,并不能执行命令,优点就是不依赖任何包. 1.利用链 * Gadget Chain: * Has ...
- axios路径变量传到后端没有被解析的问题
目录就这一个(/-/) 这是一个小小的坑,大家注意一下就好,先上代码 //监听用户状态 async userStateChange(userInfo) { console.log(userInfo); ...
- docker下将容器按照端口号分配
问题情境:现在有一个服务器主机,安装了docker,想给成员分配各自的容器,但不想成员通过宿主机进入容器.那么成员如何直接访问容器呢? 成员可以通过ip加端口号访问 因此,需要生成一个容器,将容器的2 ...
- 《java基础——对象的拷贝》
java基础--对象的拷贝 一.浅拷贝: 规则: 1. 浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化. 2. 浅拷贝相当于两个对象共用一套实例. 格式: 类名 对象 ...
- MySQL启动过程详解三:Innodb存储引擎的启动
Innodb启动过程如下: 1. 初始化innobase_hton,它是一个handlerton类型的指针,以便在server层能够调用存储引擎的接口. 2. Innodb相关参数的检车和初始化,包括 ...
- 我的树莓派 Raspberry Pi Zero 2W 折腾笔记,记录一些遇到的问题和解决办法
0x00 前言说明 最近买了一块Raspberry Pi Zero 2W来玩,目的是想搭建一台远程运行的个人服务器,上面放个博客.点个灯啥的.于是就有了这篇文章. 树莓派官网地址:https://ww ...
- vue package.json 详解
示例: { "name": "scrm", "version": "0.1.0", "private" ...
- Excel文件读写操作1(xls)
一.Python-Excel常用的库:xlrd(read).xlwt(write).xlutils.openpyxl 1.xlrd 读取Excel文件,支持 .xls 和 .xlsx 格式. 2.x ...