CSP-2024游记

news/2024/11/13 10:54:57/文章来源:https://www.cnblogs.com/wann-042013/p/18502974
考前把这个看一遍: 考场策略应该是,10min解压+读题+建文件夹, 先打暴力,别被一道题卡死(!!就比如去年的J组T1) 别死磕,别死磕,别死磕 尤其早上的J组只有3.5h,一定要注意时间分配。 相信自己,心态不要炸,当成正常的模拟赛对待。 如果非常慌可以选择深呼吸或者先打自己会的分。 下考前5min反复检查: 数组大小,long long,freopen,调试删了吗,子任务分治,多测清空 必要时可以选择对拍,s组的目标就是暴力打满别挂! 时刻有紧迫感,强迫自己思考。

至于j/s的大模拟,可以放在最后做,确保自己其他三道题拿不到其他分的时候全力冲刺,且可以先冲子任务。
不要忘记取模,不要打错模数,记得输出-1。

考前复习资料

对拍相关:

点击查看代码
#include<bits/stdc++.h>
using namespace std;int main(){for(int i=2;i<=n;i++){int x=rand()*rand()%(i-1)+1;cout<<x<<" "<<i<<endl;//树 }for(int i=1;i<=m-n+1;i++){int x=rand()*rand()%n+1;int y=rand()*rand()%n+1;if(x==y) continue; cout<<x<<" "<<y<<endl;//先建树再建图 }}

lca:

点击查看代码
//lca
void dfs(int u,int fa){dep[u]=dep[fa]+1;for(int i=0;i<=20;i++){f[u][i+1]=f[f[u][i]][i];}for(int i=head[u];i;i=e[i].nxt){int v=e[i].to;if(v==fa) continue;f[v][0]=u;dfs(v,u);}
}int lca(int x,int y){if(dep[x]<dep[y]) swap(x,y);for(int i=20;i>=0;i--){if(dep[f[x][i]]>=dep[y])//>=!!!x=f[x][i];if(x==y) return x;}for(int i=20;i>=0;i--){if(f[x][i]!=f[y][i]){x=f[x][i],y=f[y][i];}}return f[x][0];
}

最短路:

点击查看代码
bool vis[maxn];
int dis[maxn];
struct node{int dis,pos;bool operator<(const node &x)const{return x.dis<dis;}
};
void dij(int x){memset(vis,0,sizeof(vis));memset(dis,0x7f7f7f7f,sizeof(dis));priority_queue<node> q;dis[x]=0;q.push((node){0,x});while(!q.empty()){node tmp=q.top();q.pop();int u=tmp.pos,d=tmp.dis;if(vis[u]) continue;vis[u]=1;for(int i=head[u];i;i=e[i].nxt){int v=e[i].to;if(dis[v]>dis[u]+e[i].w){dis[v]=dis[u]+e[i].w;if(!vis[v]) q.push((node){dis[v],v});}} }
}

floyd:(可以用来骗分,确信。

点击查看代码
for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){dp[i][j]=min(dp[i][k]+dp[k][j],dp[i][j]);}}}

tarjan缩点:

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=10015;
int n,m,a[maxn],s;
struct edge{int to,nxt,fr;
}e[10*maxn],ed[10*maxn];
int head[maxn],edgenum;
void add_edge(int u,int v){e[++edgenum].nxt=head[u];e[edgenum].fr=u;e[edgenum].to=v;head[u]=edgenum;
}
int low[maxn],dfn[maxn],tim,vis[maxn],vol[maxn];
stack<int> st;
void tarjan(int x){low[x]=dfn[x]=++tim;st.push(x);vis[x]=1;for(int i=head[x];i;i=e[i].nxt){int v=e[i].to;if(!dfn[v]){tarjan(v);low[x]=min(low[x],low[v]);}else if(vis[v]){low[x]=min(low[x],dfn[v]);}}if(dfn[x]==low[x]){int y;while(y=st.top()){st.pop();vol[y]=x;vis[y]=0;if(x==y) break;a[x]+=a[y];}}
}
int h[maxn],in[maxn],dis[maxn];
int topo(){queue<int> q;int tot=0;for(int i=1;i<=n;i++){if(vol[i]==i && !in[i]){q.push(i);dis[i]=a[i];}}while(!q.empty()){int x=q.front();q.pop();for(int i=h[x];i;i=ed[i].nxt){int v=ed[i].to;dis[v]=max(dis[v],dis[x]+a[v]);in[v]--;if(in[v]==0) q.push(v);}}int ans=0;for(int i=1;i<=n;i++) ans=max(ans,dis[i]);return ans;
}
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1,u,v;i<=m;i++){cin>>u>>v;add_edge(u,v);	}for(int i=1;i<=n;i++){if(!dfn[i]) tarjan(i);}for(int i=1;i<=m;i++){int x=vol[e[i].fr],y=vol[e[i].to];if(x!=y){ed[++s].nxt=h[x];ed[s].to=y;h[x]=s;in[y]++;}}cout<<topo()<<endl;
}

拓扑排序:

点击查看代码
#include<bits/stdc++.h>
using namespace std;struct edge{int nxt,to;
}e[1005];int in[1005],head[1005],edgenum;
int n,dep[1005],ans;void add_edge(int u,int v){e[++edgenum].nxt=head[u];e[edgenum].to=v;head[u]=edgenum;
}
void toposort(){queue<int>q;for(int i=1;i<=n;i++) {if(in[i]==0){  //应提前预处理此数组q.push(i);dep[i]=1;}}while(!q.empty()){int x=q.front(); q.pop();cout<<x<<" ";for(int i=head[x];i;i=e[i].nxt) {int v=e[i].to;dep[v]=dep[x]+1; //记录顺序ans=max(ans,dep[v]);in[v]--;  //一定要记得入度减if(in[v]==0) q.push(v); }}
}
int main(){cin>>n;int x;for(int i=1;i<=n;i++){while(cin>>x){if(!x)break;in[x]++;add_edge(i,x);}}toposort();return 0;
}

边双:

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e6+10;
int n,m;
struct edge{int to,nxt;
}e[2*maxn];
int head[maxn],edgenum=1;
void add_edge(int u,int v){e[++edgenum].nxt=head[u];e[edgenum].to=v;head[u]=edgenum;
}
int dfn[maxn],low[maxn],tim,cnt,col[maxn];
int st[maxn],top;
bool b[2*maxn];//i是否为割边 
int tot[maxn];
vector<int> ans[maxn];
stack<int> s;
void tarjan(int u,int fa){dfn[u]=low[u]=++tim;s.push(u);for(int i=head[u];i;i=e[i].nxt){int v=e[i].to;if(!dfn[v]){tarjan(v,i);low[u]=min(low[u],low[v]);if(dfn[u]<low[v]){b[i]=b[i^1]=1;//该边及其反向边均为桥 }}else if(i!=(fa^1))low[u]=min(low[u],dfn[v]);}if(dfn[u]==low[u]){++cnt;while(1){int t=s.top();s.pop();col[t]=cnt;if(u==t) break;}}
}
int main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1,u,v;i<=m;i++){cin>>u>>v;add_edge(u,v);add_edge(v,u);}for(int i=1;i<=n;i++){if(!dfn[i]) tarjan(i,0);}cout<<cnt<<endl;for(int i=1;i<=n;i++){tot[col[i]]++;ans[col[i]].push_back(i);}int now=1;while(tot[now]){cout<<tot[now]<<" ";for(int i=0;i<ans[now].size();i++)cout<<ans[now][i]<<" ";now++;cout<<endl;}
} 

10.26。

疑似要挂分了,T1不保证一定对,T2还不一定有40,160是一个SN稳一等的分数,J组随便考,不挂可以300+

今年比去年考前不焦虑好多,考完焦虑好多,你妈。

为什么这么重视结果呢?可能是我真的努力了,如果真的爆单了我真的会哭的。

好煎熬好痛苦啊,不敢想象APJ国赛day1考完什么心情,这可能就是我和人家的差距。

Update on 11.10:

考完花了将近两天努力把自己从噩梦里努力解脱出来,当然距离今天已经有足足两周的时间了,所以还是决定来补游记。

Day-7--0:

停了两周作业+一周课,考了5场模拟赛,最后两天是全真模拟(写代码确认表那种+文件测试。

印象非常深刻的是有一天只有T1可改,T2是神秘折半搜索,T3的std 27k,T4忘了。

最后一天据说非常简单,然而看完T1之后遂傻眼(下考场发现是萌萌题),据说最高分300+,这个时候觉得自己能考100+不错了,最后达成了目标/kk

Day 1:

前一天很早睡了(没有跟去年一样各种内耗焦虑非常好!)早上起来莫名激动,然而坐上车才开始后知后觉紧张担心自己考不好怎么样,但是被我的困打败了/shui,途中一直在做非常奇怪的梦。

到的很早,没有拍合照环节,走了巨大远的路到了考场楼下,然后在旁边树下把复习资料看了一半,问了同学得知不会考拓扑排序之后遂扔,然后进考场。

哇好巨大的考场,哇在一楼诶。

你说得对但是我挡板呢????

电脑时间不负众望地不准,于是8:25拿到了PDF密码,感谢和蔼可亲的监考员使用先进的极域下发密码的方式省去了我眯着眼睛尝试密码的时间。在D盘写建好文件夹好头文件,开题!

T1疑似签到题啊秒了,T2看起来好长,不过不难差不多也秒了,T3有点意思,像小学数学,T4好神秘!

于是开考前就过了T1T2的大样例:)

T1简单捏,四个数组秒了,谨记考前一天bobo告诉我们一定要养成好习惯存D盘,免得蓝屏,所以初版程序全存D盘了,想着最后再往里面拖(伏笔

诶怎么没过样例,哦是我复制没改完,改一个字符就过了。另存为到下发文件夹(伏笔*2)一下测大样例也过了,扔。

T2简单捏,模拟一下秒了,诶怎么又没过样例,哦是我题读错了,要求能到的个数啊那没事了,改完过了所有样例,重复了和T1一样的存盘过程。

T3不能再送了吧,但是特殊性质暗示都到我脸上了总不能不会,手玩一下找了找规律,发现个别点如10过不去,于是特判了一下。非常担心假了于是写了个搜再写了个拍,拍上了之后又加了几组特判过了拍,稍微安心了一点,看T4!

此时2h+,没事优势在我!

花了10min看懂题,但是不会dp啊只能特殊性质,发现特殊性质1很显然,写写写。写完企图获得更多的分,一直思考到了还剩20min仍然一无所获,于是开始摆烂。

但是我没有发现特殊性质1是有大样例,10min了赶紧测一下,没过!!!急急急但是急不出来了,所以开始检查文件。

文件是监考员一个一个压缩提交的,第一次见,但是在考场上呆了30+min才出,玩了30+min的纸牌成功通关,结果是没时间吃饭了/kk。

下午考S!

和早上一个考场甚至机位都只是往右移了两个。手动调完时间后,拿pdf密码,开题,此时还是有点紧张紧张紧的。

飞速把四道题浏览了一遍,T1看起来很可做啊,T2是物理题,T3不是大模拟嬴赢赢,T4神秘题。

先开T1,诶这不排个序二分一下做完了。等等我没读错题吧,于是再读了两遍1发现没有错于是开写,写完调了一会过了前两个样例。发现自己过不去最后一个样例,输出了一下发现有点假,于是改了一会过了。

T2读懂题花了20min,不会啊,先写特殊性质,写了2h仍然只有40,第一个数二分是明显的,不过第二个数一直不对,调了很久无果。

在心态快崩的时候开了T3,一眼dp,不会先搜一下。过了小样例看T4。

发现看不懂。

于是开始调T2,最后写了30p光荣跑路,特殊性质到最后都不会。:)

最后20min提前开始查文件,把我在D盘存的文件一个一个往文件夹里拖(伏笔),还剩5min的时候反复检查freopen,突然发现没开(但此时我记得我关c++文件的时候全部都开过freopen了),这个时候还没有意识到事情的严重性,慌慌张张开了。

下考,监考员一个一个压缩文件提交。只能在座位上等。

最炸裂的事情这时发生了,在等待的过程中我发现T2的代码不是最后一版代码!!!因为子任务我写了很长,此时我文件夹里的detect.cpp只有40行,我才意识到我的代码被另存为在下发文件里了,把自己真正的文件找了回来之后,监考员看了一眼我18:36更改的文件夹帮我提交了。

然而我刚交完,发现自己T1也出现了这样的问题,把T1拉下来跑一下最后一个点,发现没过!!!

当时急的手都在抖,想申请再交一次,于是慌忙举手。好像在对讲机询问之后同意了。

完了这么写写不出来我的崩溃;-;

我当时一度以为交不了了自己要爆蛋了,整个人差点哭出来,一直在问能不能再交一次,我说代码修改时间没变只是存错了、在得到同意的答复后慌慌张张把自己的T1改过来,把提交的压缩包删了之后再交了一次(为什么可以呢是因为我代码的修改时间没变),感觉整个人都在发抖非常紧张+崩溃。

出考场,回去的路上一直在担心自己存错盘,然后担心着担心着想起早上也是这么干的(伏笔回收),更自闭了。

于是就有了文章开头。

Day ?(11.04):

查分日,期中考试第一天。

CCF鸽了两次后504了很久,最后查到了。

J-280,T1挂了(upd 11.07:时候改了一个字符就过了,应该是最后一版代码另存为的原因:)

S-130,T3搜索挂了,应该也是这个原因哈哈,不过有惊无险T1T2没事。

深深认识到了自己和大家的差距,即使没挂也是机房垫底分,还是人太菜的原因。

希望能苟进noip,进不去的话下个赛季加油;-;

存盘警钟长鸣了属于是,不要在考场上成天干毁自己心态的事:)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/830707.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【日记】你们两个熊孩子,不要叫我叔叔啊啊啊啊(1630 字)

正文今天上午起床,窗外地面湿了。瞬间不想出门吃饭了。挣扎了一会儿,还是带着伞出门了。毕竟昨天说了要出门剪头发。花了一个小时吧好像。指定的那个理发店还挺远。理发师都认识我了,笑了笑,问我怎么剪。我还是说只修一下刘海,不要遮住眉毛和眼睛就行,后面和侧边还要继续…

东商项目mysql实例库(dingding)增量备份的实现

一、钉钉库(dingding)实例全量备份 1.机器:cvlink-xxcc-prd1172.16.50.59cvlink-xxcc-prd2172.16.50.60备注:59是主库,60为从库,因为做了主从,所以两个数据库数据是一致的,直接对从库60的实例钉钉进行备份即可。2.对从库60的实例进行备份: 2.1 登录从库:2.2 进行备份…

安娜的档案(Anna’s Archive)官网最新镜像网站入口(实时更新)

安娜的档案(Anna’s Archive)是一个广受欢迎的在线资源平台,汇集了Z-Library、Library Genesis和Sci-Hub等资源,拥有超过2000万册书籍和9000万篇论文。该网站提供多种下载选项,包括快速、慢速、libgen、IPFS和Tor浏览器下载,以满足不同用户的网络和需求。用户可以无需注册…

STM32的内存(堆和栈)

一般来说单片机的内存指的是FLASH和RAM,当在程序中定义了全局变量、局部变量、只读变量等参数时都是会存放到对应的FLASH或者是RAM中。具体对单片机FLASH和RAM的介绍之后再写,这里只对单片机内存分配,对堆和栈以及变量的存储做一个梳理和记录。1、FLASH(0x0800 0000) FLAS…

使用Boost.asio与Boost.beast基于协程连接ws

目录目录 前言 准备工作 实现初始化io_context并监听信号 启动连接ws的线程并启动io_context 建立tcp链接(以下步骤皆位于ws函数中) ws握手 传输数据 效果总结前言 本文主要介绍一个使用Boost.asio和Boost.beast基于协程连接Websocket(ws)的方法。其中C++版本为20,Boost版本…

使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期

使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期 目录使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期🛠️ 环境准备💡 什么是 Let’s Encrypt?🧠 Let’s Encrypt 证书颁发原理1. 域名验证2. 证书生成3. 证书安装4. 自动续期🛠️ Certbot…

Python爬虫学习笔记

目录基础篇:HTTP:HTTP请求:请求行:请求头:请求体:HTTP响应:状态行:响应头:响应体:Requests库:GET请求:POST请求:HTML:HTML网页结构:HTML标签:网页解析:Regular Expression:元字符:量词:正则表达式:Re解析:实战案例:Beautiful Soup:安装:成员属性/函数…

高级语言程序设计第6次作业

高级语言程序设计课程第六次个人作业 这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C 这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13303 学号:102300303 姓名:梁佳 第1题第2题第3题第4题第5题第6题第7题第8题第9题第10题第11…

【NX/UG】解决:使用重用库的零件,下次打开发现零件丢失问题

NX12.0: 1、找到文件->实用工具->用户默认设置2、基本环境->重用库->可重用组件->更改组件目录[Windows],将目录更改到当前文件工作目录即可-------------------------------------------------------------------------------------------------------------…

腾讯云云服务器数据迁移实战方案

前言 我在三年前购买的腾讯云服务器今年过期咯, 今年的腾讯云双十一活动也是给力优惠攻略极速观看: 刻不容缓腾讯云双十一活动羊毛攻略!!!-腾讯云开发者社区-腾讯云 极速通道购买: 腾讯云11.11上云拼团Go 经过上面的攻略我购买了一个 2h4g 和 4h8g 的云服务器, 我将 Mysql 、Re…

20222418 2024-2025-1 《网络与系统攻防技术》实验四实验报告

1.实验内容 一、恶意代码文件类型标识、脱壳与字符串提取 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下: (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具; (2)使用…

Windows 10 配置为 NTP 时间服务器的操作步骤及解析

之前有过将 Windows 10 配置为 NTP 时间服务器的经历,但是没有做文字记录。 这次又需要做一样的配置,对网上的资料和配置细节不太确定,所以设置完后写了本篇记录。 操作步骤设置服务器类型为 NTP;修改注册表键值 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32…