SCP 我们读题,思考,摆烂(CSP 注意事项)
有好多是复制的
注意事项
考试风貌
当你来到考场:
上机测试时多敲敲键盘,顺手的键盘都需要敲打一番~(提前熟悉键盘的各个键——经常会与自己学校的不一样)
根据个人需求并在合理时间内待在考场里,熟悉一下气氛。
别理别人。
自始而终别对拿大奖有太大执念,得之我幸失之我命。 执念过深反而是负担。
做个素质人,坚守职业操守,和生活美德。分可以丢,但做人最基本的原则不能没有。是啥应该不用我说(玩烂梗)。
考试ing:
检查文件的扩展名是否显示,若不显示,一定要将扩展名显示出来。
无视旁人,做丫的题。
思考时间超过 就放松一下,一直不停脑袋会乱的。
无论附近的人键盘敲多大声,你都不要管他,实在不行心中默念:“不是我的(指键盘)不是我的不是我的不是我的...”当然不想忍记得举报
好好读题
咱举个例子,你们仔细观察下面这段描述:
具体我不说了,你品,你细品~
拼了你的老命去卡你的代码!
这题你会,不要发出愉悦♂的声音,不会,也不要发出愉悦的♂声音。不要影响其他人
离开时垃圾带走,别落下什么东西。(之前我把饭卡落下了,结果人家托人送回来了,感动 )
考完了:
别 fake。
其他
代码
注意 的编译环境, 等的新用法或改变
如果有非常奥妙的操作,啥数据结构都维护不了,那试试分块吧。
调试
可以定义标识符来进行本地调试
#define FUCK
#ifdef FUCK
//do something interesting
#endif
// or
#ifndef FUCK
//do something interesting
#endif
#ifdef
会检查程序中是否有通过 #define
定义的对应标识符,如果有定义,就会执行下面的内容,#ifndef
相反,在没有定义相应标识符的情况下执行后面的语句。
我们提交程序的时候,只需要将 #define FUCK
一行注释掉即可。
对拍
写了份代码,但是不知道它对不对。
如果时间足够,写对拍。
原料:一份暴力(或其他非正解),一份你写的薛定谔的正解,一份数据生成器
当然,我们不能自己比对两段程序的输出,所以我们需要通过批处理的方法来实现对拍的自动化,要不然太慢了。
每次运行一次数据生成器,将生成的随机数据写入输入文件,通过重定向的方法使两个程序读入数据,并将输出写入指定文件,利用 下的 fc
命令比对文件( 下为 diff
命令)( 讲过),从而检验程序的正确性。
如果发现程序出错,可以直接利用刚刚生成的数据进行调试
模板
#include <bits/stdc++.h>
using namespace std;
signed main () {
//For Windows
while (1) {
system("gen > test.in");//数据生成器将生成数据写入输入文件
system("test1.exe < test.in > a.out"); //获取程序1输出
system("test2.exe < test.in > b.out"); //获取程序2输出
if(system("fc a.out b.out")) {
//该行语句比对输入输出
//fc返回0时表示输出一致,否则表示有不同处
system ("pause"); //方便查看不同处
return 0;
//该输入数据已经存放在test.in文件中,可以直接利用进行调试
}
}
}
关于随机数据生成
- 在使用
rand()
前,别忘了调用srand(time(NULL))
来重置随机数种子。(不重置的话,每次调用rand()
只会得到一套随机数) rand()
的生成随机数范围在 下为 ,在 下为 ,所以如果数据过大,最好手写一个随机数生成器。
防爆
常按 是个不错的习惯。
空间允许的情况下,记得开 ,但不要动不动就 #define int long long
看好空间。
有了更好的思路?当前代码不要删,注释掉或重开一个文件,说不定以后会用。
最后几分钟,查看 ,编译运行一遍。
凡是位运算全部加 () !!!/fn
慎重使用短路评估,位运算等价宏
宏 | 定义为 |
---|---|
and | && |
and_eq | &= |
bitand | & |
bitor | | |
compl | ~ |
not | ! |
not_eq | != |
or | || |
or_eq | |= |
xor | ^ |
xor_eq | ^= |
输入输出量大的记得写快读快出
template <typename T>
inline void read (T &a) {
T x = 0, f = 1;
char ch = getchar ();
while (! isdigit (ch)) {
(ch == '-') and (f = 0);
ch = getchar ();
}
while (isdigit (ch)) {
x = (x << 1) + (x << 3) + (ch ^ '0');
ch = getchar ();
}
a = f ? x : -x;
}
template <typename T, typename ...A>
inline void read (T &t, A &...a) {
read (t), read (a...);
}
template <typename T>
inline void print (T x) {
if (x < 0) putchar ('-'), x = -x;
if (x > 9) print (x / 10);
putchar (x % 10 + '0');
}
signed main () {
int a, b, c;
read (a, b, c);
}
实测自己写 要比 自带的快一丢丢
递归函数不要加 ,逆优化。
最后祝各位
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现