2021 CSP-J复赛 我的备战与游记
备战
2021.10.18
下午班主任找到我,告诉了我一个消息——这一周的下午和晚修全部上信息
我当时十分高兴,但三秒后....
妈耶,我文化课要垮了QAQ
到机房时,老师开始讲强连通分量,太监(tarjan)算法
我傻掉了QAQ
(初赛都这么变态,base64四毛子,复赛怕会普及出黑题.....)
后来晚上初一几个自学三角函数,这是我奋斗的足迹
2021.10.19
在Panda的帮助下搞懂了太监算法,然后做比赛
提高难度,我们进复赛的四个初一全部西内
当中最高是教授和某兔子爱好者,切了一题105
我和王梓烨垫底了QAQ
有一题我以为是树状数组,结果是模拟,痛失15分
不过没事,我们与其他初一又一起做了牛客的模拟赛
(当然并不是同步赛)
然后....全员200可还行
我突然觉得一等无望了....
晚上突然对魔法猪学院起了兴趣.....
72,A* 过不了啊!!
于是暂时放下,安心复习
2021.10.20
又做了做魔法猪学院
想不到有个犇犇告诉我有A* 能过的
秒切
偶然发现中山原来有这么多普及红名大佬?我被暴踩
搞了一会博客园,投入到学习中
老师开了几个复习专题,我先做了高精,切了几道
数据结构,我不会银河英雄传说,我太菜了
在这里复习一下种类并查集
比如食物链
我们用x与y+n有关系表示x吃y
x与y+2*n表示y吃x
这样去连,到时候判断即可
好的,然后是数论,exgcd忘干净了,赶紧复习
推了几次式子,会求\(ax+by=1\)了,不会\(ax+by=c\)
2021.10.21
上午刚好有节信息课,拿来复习
欧拉函数搞懂了!!!又A两道,Great!
复习欧拉函数
中午去做核酸,和王梓烨和教授聊天,不亦乐乎
(我还说我是IFW——International Feet Washing (世界洗脚大赛)的冠军哈哈哈)
下午继续刷题
Panda梅开二度,教我\(ax+by=c\),Orz
复习了哈希
好紧张呀,加油!!!
2021.10.22
参加模拟赛,倒数第二
重测一次,倒数第一
难受,晚饭没吃
然后在vjudge做练习,还是太监算法
我被虐菜
晚上回班收拾作业,好...多...
路上看见一个同学,说,只要我AK了,就请他喝炖汤
怎么可能(AK)?
比赛当日
早上
\(5:50\)醒了,去吃早餐
\(6:45\)出发
\(7:25\)左右到了
想进去看看,结果XC不让进,于是各个学校的OIer就闲聊
线下见面
见到了洛谷上两个大佬!!
之前在洛谷上约好的,终于见面了
非常尬:
“你平常登洛谷吗”
“哦,你是xx”
“啊哈啊哈”
“额哈额啊哈”
正文
开始前上了个厕所,结果xc大声说:
“你干嘛进进出出的”
“我...才出去一次”
然后xc对考官说:
“这种出去的一定要好好查一下”
我 被 搜 身
好强的压迫感....
比赛开始后,老师让我们输密码(结果老师自己打错了)
谢谢JZ提供了一个卡死的Linux模拟机,还没windows稳定....
第一题不是很确定,没想出来(我太菜了)
然后打了一个能过样例的公式,先做其他题
第二题真就题如其名,
一开始以为是树状数组,浪费10分钟
其实不是很难,个人认为最简单(Because 不会第一题)
做完第二题,出去喝了杯牛奶,回去做第三题
第三题其实就是输入恶心,
我调了50分钟的输入
结果灵光一闪————不就scanf的妙用吗
但为了判断前导零,要用sscanf
然后半个小时切了
这时差不多\(11:15\)
啊!!要不是这里浪费了太多时间,第一题我可能就调出来了!!!!
第四题我用了链表做,节省时间
感觉会超时.....
(P.S:我有一个朋友说他用并查集,不知道怎么做的,样例全过Orz)
只对了一下样例,没来得及对拍
然后看第一题,改了一下,搞了一个对拍
对到\(11:45\),老师收各种东西,然后去打文操了
发现第二题调试没删,差点爆零....
比赛后
回家了
测了一下第四题,70分TLE QAQ
一等没了
结果一测其他题:\(100+100+100+70=370\)?!
其他网站都差不多,第四题不同
xx小灵通:第四题50,其他AC
计蒜客:第四题90,其他AC
诡异啊!!!大佬都说我第一题公式不对,对拍也不对,但各个网站都过了?
如果准的话,一等了.....(2021.10.30:说的真准)
估计实际第一题70左右(2021.10.31:其实是60)
赛后总结与讲解
2021.10.30:Ohhhhhh!!360!!
感谢教练!!
三年了!!我出息了!!
简单总结
题目名 | 得分 | 个人定位 | 检查 | 暴力 | 数据全过 |
---|---|---|---|---|---|
candy | \(100\) | 数学,思维 | YES | NO | YES |
sort | \(100\) | 时间复杂度,排序,模拟 | YES | NO | YES |
network | \(100\) | 模拟,哈希,输入技巧 | YES | NO | YES |
fruit | \(60\) | 链表,模拟 | YES | YES | MAYBE |
一开始先把题都看了,所以没有因小失大
第二,第三题发挥稳定,但第三题输入想了\(50min\),是一个巨大的失误
第一题未能推出正解,对排每20个测试点错1个
但是,数据,它!!过!!了!!
第四题暴力顺利水到60分
Candy
小结
第一题未能推出正解,对排每20个测试点错1个
但是,数据,它!!过!!了!!
(感谢CCF出了这么水的数据点!!)
题解
我还是认为我会被强数据hack,不拿自己的trash思路忽悠人了
这是别的犇犇的思路:
其实我们想,最优情况是拿\(n-1\)个——再拿一个就又要分了
但有时不足\(n-1\),我们拿不到那么多,怎么办呢?
我们拿\(r\)个就好了,
因为拿不到\(n-1\)就说明\([ l , r ]\)能拿到的是一个\([1,n-2]\)的一个子区间
也就是说,越往后越优
所以保证拿\(r\)个是最优解
(我考场没想出来QAQ)
参考代码
#include<bits/stdc++.h>
using namespace std;
long long n,l,r;
int main()
{
cin>>n>>l>>r;
if(l%n+r-l>=n)//如果能拿n-1个
{
cout<<n-1;
}
else
{
cout<<r%n;
}
}
赛时代码(可能有错)
只可意会,不可言传
很垃圾,自己看吧.....
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
long long n,l,r;
inline long long read()//手打小垃圾快读
{
char c=getchar();
int f=1;
long long sum=0;
while(c!='-'&&(c<'0'||c>'9'))c=getchar();
if(c=='-')
{
f=-1;
c=getchar();
}
do
{
sum=(sum<<3)+(sum<<1)+c-'0';
c=getchar();
}while(c>='0'&&c<='9');
return sum*f;
}
int main()
{
n=read(),l=read(),r=read();
long long mn=l/n,mx=(l+n-1)/n;
mn*=n,mx*=n;
long long ans=r-mn,ans2=r-mx;
//printf("%d %d %d\n",mn,ans,r);
if(ans>=n||ans2>=n)
{
printf("%d",n-1);
}
else
{
printf("%d",max(ans,max(0*1ll,ans2)));
}
}
优点:
该放手时就放手,在作不出时换题,保证了比赛的 节奏稳定 ,是一个 很好的习惯
最后回来对排,但未找出正解,对排是个好习惯
缺点
- 思维题能力欠缺 ,尤其是这种打卡题
Sort
小结&题解
考前蒙对了,猜中有 时间复杂度 的题
各位想想,有三种做法(正常的)
第一种
暴力,每次修改排一次序,用一个数组记录
这个数组的第x项表示第x项排序后到了哪里,查询\(O(1)\)
复杂度约为:
\(O(mnlog_n+m)\)
但修改最多5000次,所以更正为
\(O(5000nlog_n+m)\)
显然TLE
第二种
对于修改,直接改,\(O(1)\)
对于查询,找一遍所有小于它的,\(O(n)\)
复杂度:
\(O(nm)\)甚至慢过暴力
正解:第三种
先用sort排,
然后对于每次修改,去重新定位这个修改的数,跟插入排序差不多,复杂度\(O(n)\)
查询,只需要输出准备好的一个数组,同做法一,复杂度\(O(1)\)
注意看题,修改最多\(5000\)次,盲猜一堆人以为我这个修改会超,因为他们以为极端数据会修改\(200000\)次,
复杂度:
\(O(nlog_n+5000n+m)\)不会超
所以要 好好看题 呀!!!
话说貌似每年的第二题都要估算时间复杂度....大家可以专门练一下这种题
参考代码:
#include<bits/stdc++.h>
using namespace std;
struct node
{
int num,no;
}b[8005];
long long x,y,z,n,m,a[8005],c[8005];
int cmp(node x,node y)//如果相等,比较编号
{
if(x.num==y.num)
{
return x.no<y.no;
}
return x.num<y.num;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i].num=a[i];
b[i].no=i;
}
sort(b+1,b+n+1,cmp);
for(int i=1;i<=n;i++)
{
c[b[i].no]=i;//预处理数组
}
b[n+1].num=1e10,b[0].num=-1e10;//用来返回的边界
for(int i=1;i<=m;i++)
{
cin>>x>>y;
if(x==2)
{
cout<<c[y]<<endl;
continue;
}
if(x==1)
{
cin>>z;
b[c[y]].num=z;
for(int j=c[y];j<=n;j++)//调整位置
{
if(b[j].num>b[j+1].num||(b[j].num==b[j+1].num&&b[j].no>b[j+1].no))
{
swap(b[j],b[j+1]);
c[b[j].no]--;
}
else
{
c[y]=j;
break;
}
}
for(int j=c[y];j>=1;j--)//注意两边都要试
{
if(b[j].num<b[j-1].num||(b[j].num==b[j-1].num&&b[j].no<b[j-1].no))
{
swap(b[j],b[j-1]);
c[b[j].no]++;//交换后,预处理数组也要更改
}
else
{
c[y]=j;
break;
}
}
}
}
}
优点:
仔细看题,找出解题的关键要素,不漏每个细节,这也是我能AC本题的原因
百折不挠,认真调试,在比赛时,有一个好的心态,去进行复杂的调试
在发现正解,有敢于推翻旧解的心态,我发现正解后立刻删除了旧代码,毫无感情
缺点
- 一言不合暴力,开局打了一个树状数组+离散化,显然不对
Network
小结&题解
这道题是可以\(20min\)搞定的水题
But我浪费了很多时间
难点是输入
但仔细想想也不难
单独发在博客了,会投稿题解
放个网址:
博客园:THIS
Luogu博客:THIS
优点:
- 无,如果非说有,知道的函数(sscanf)救了自己一命
缺点
- 花了太多时间,\(1h10min\)本场比赛最大失误
- 在耗费大量时间时,没有及时跳题,与第一题相反
Fruit
小结
打了暴力
用链表模拟
赛时代码
#include<bits/stdc++.h>
using namespace std;
int n,s,t,sum;
struct node
{
int num,l,next;
}a[200005];
inline long long read()
{
char c=getchar();
int f=1;
long long sum=0;
while(c!='-'&&(c<'0'||c>'9'))c=getchar();
if(c=='-')
{
f=-1;
c=getchar();
}
do
{
sum=(sum<<3)+(sum<<1)+c-'0';
c=getchar();
}while(c>='0'&&c<='9');
return sum*f;
}
int main()
{
n=read();
s=1,t=n;
for(int i=1;i<=n;i++)
{
a[i].num=read();
a[i].l=i-1;
a[i].next=i+1;
}
while(sum!=n)
{
int k=-1;
for(int i=s;i<=t;i=a[i].next)
{
if(a[i].num!=k)
{
k=a[i].num;
sum++;
cout<<i<<' ';
a[a[i].next].l=a[i].l;
a[a[i].l].next=a[i].next;
if(i==s)
{
s=a[i].next;
}
if(i==t)
{
t=a[i].l;
}
}
}
cout<<endl;
}
}
正解
其实大概想到了,但没时间打。
再加一个链表,每项表示一个“水果链”,
每次直接跳下一个水果链,快很多。
优点:
- 能水一分是一分,一种良好的比赛态度
缺点
- 正解很好推,但时间不够(第三题的锅)
总结
根据上述,下次要做到:
- 该放手时就放手,在作不出时换题
- 强化思维题能力
- 仔细看题,找出解题的关键要素,不漏每个细节
- 百折不挠,认真调试
- 在发现正解,有敢于推翻旧解的心态
- 不要一言不合暴力
- 能水一分是一分
- 还是要说——诚信考试!!!
2021 CSP-J复赛 我的备战与游记的更多相关文章
- CSP J/S 初赛总结
CSP J/S 初赛总结 2021/9/19 19:29 用官方答案估计 J 涂卡的时候唯一的一支 2B 铅笔坏了,只能用笔芯一个个涂 选择 \(-6\ pts\) 判断 \(-3\ pts\) 回答 ...
- 【游记】CSP J/S 2019 游记
J 组 \(2:30\)开始, \(2:13\)还在酒店的我看了看手表...飞奔考场. T1 数字游戏 秒切. 下午某中学某大佬说可用线性基(%) T2 公交换乘 用单调队列思想,秒切. T3 纪念品 ...
- CSP J/S 2019受虐记
一枚蒟蒻的游记~ 提高组DAY1 不是说每场考试都有一道签到题吗 那我tm读了三遍题硬是没找到一道水题是怎么回事(是我太弱了吗) 没办法,硬着头皮做T1 暴力写法...期望得分30pts 于是...在 ...
- 【游记】CSP 2021 J2
这次是第一次参加CSP的复赛,所以考的就很LJ. \(DAY-\infty\) 到 \(DAY-14\) 知道了自己苟过了初赛,像个SB一样. (我初赛66分,旁边那位63.5,cao着线过去的) \ ...
- [游记]2020/CSP - S总结
2020 / C S P − S 总 结 2020/CSP - S总结 2020/CSP−S总结 这年的 C S P CSP CSP考的不是很理想,本来稳进的 C S P − J CSP-J CSP− ...
- 背水一战——CSP2021/NOIP2021 游记
洛谷 version 转载本文章的其他链接: 1(S00021 提供) 2(Ew_Cors 提供) \[\texttt{2021.9.10} \] 终于开坑了. 笑死,初赛根本还没开始复习,反正初赛也 ...
- OI记录
这里是蒟蒻xsl的OI记录. 2017 2017.03.?? 开始接触OI 2017.10.14 参加NOIP2017普及组初赛,踩着分数线进入了复赛 2017.11.11 参加NOIP2017普及组 ...
- emacs考场短配置
(set-background-color "gray15") (set-foreground-color "gray") ;;设置颜色 (global-set ...
- 最优运输(Optimal Transfort):从理论到填补的应用
目录 引言 1 背景 2 什么是最优运输? 3 基本概念 3.1 离散测度 (Discrete measures) 3.2 蒙日(Monge)问题 3.3 Kantorovich Relaxation ...
随机推荐
- MySQL 如何优化 DISTINCT?
DISTINCT 在所有列上转换为 GROUP BY,并与 ORDER BY 子句结合使用. SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
- java中线程池创建的几种方式
java中创建线程池的方式一般有两种: 通过Executors工厂方法创建 通过new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize ...
- Eclipse建立Web项目,手动生成web.xml文件
相关文章:https://blog.csdn.net/ys_code/article/details/79156188(Web项目建立,手动生成web.xml文件
- Java 面试问题列表包含的主题?
多线程,并发及线程基础 数据类型转换的基本原则 垃圾回收(GC) Java 集合框架 数组 字符串 GOF 设计模式 SOLID 抽象类与接口 Java 基础,如 equals 和 hashcode ...
- 分享一波dubbo mybatis plus百度云链接
https://pan.baidu.com/s/1VtfoVJwan-XPvmQfBIKMhA
- Netty学习摘记 —— 初步认识Netty核心组件
本文参考 我在博客内关于"Netty学习摘记"的系列文章主要是对<Netty in action>一书的学习摘记,文章中的代码也大多来自此书的github仓库,加上了一 ...
- Python - 分支循环、可迭代对象与迭代器
- c++实现职责链模式--财务审批
内容: 某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20 ...
- java中请给出一个抽象类,可以继承实体类的例子
例1.7.2(抽象类可以继承实体类)- class VehMark_to_win { void steer() { System.out.println("Turn st ...
- Mybatis 多表实现多对一查询、添加操作
Mybatis 多表实现多对一查询.添加操作 学习内容: 1. 多对一之添加操作 1.1.需求 1.2.数据库表(多对一或一对多,数据库外键都是设置在多的一方) 1.3.类设计 1.4.Mapper ...