今天用windows下的GUIDE打了一些板子,以下是我遇到的问题。

语言

未定义返回值类型的函数

inline isnum(char ch)
{
return ch>='0'&&ch<='9';
}
inline int read()
{
int x=0,fu=1;
char ch=getchar();
while(!isnum(ch)&&ch!='-') ch=getchar();
if(ch=='-') fu=-1,ch=getchar();
while(isnum(ch)) x=x*10+ch-'0',ch=getchar();
return x*fu;
}

上面是一个快读。isnum(char)忘记写返回值了,但是信息查看栏里面

--------开始编译--------
编译成功.

居然没有报错。

交到洛谷上

ISO C++ 不允许声明无类型的‘isnum’ [-fpermissive]
inline isnum(char ch)

这就很麻烦了啊。考试的时候别看见inline就忘记返回值了!


其实c++有一个在<cstdio>内的函数isdigit(char)可以用来判断是否为数字。

这是我一般写的快读(没有负数)

inline int read()
{
int x=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
x=ch-'0';ch=getchar();
while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
return x;
}

读入string

大家应该都知道,读入string字符串一般用cin>>string。但是如果想要快一点的话,如何读入呢?用scanf

使用scanf的话,格式符是"%s",并且string变量名不能像char数组那样当作首元素的指针了,应该使用取地址符来进行读入。

string a;
scanf("%s",&a[0]);

看似很完美也很快的方法,结果读入了什么都没有!这是为什么?

因为string属于\(STL\)的容器,这些容器以开始都是没有分配内存的,需要手动分配内存。

string a;
a.resize(10);//这个长度要手动设置
scanf("%s",&a[0]);

所以我还是打算老老实实的使用cin呢。

当然有人要问,为什么不用getchar()再插入。因为string.push_back()是\(C++11\)的语言了,csp应该是不能用。。。

栈大小

编译开大:

-Wl,-stack=67108864

总体开大:

sudo -s//管理员权限
ulimit -s unlimited//开大
ulimit//检查

算法

快速幂

可能会遇到模数为1的情况。所以别忘记给ans先%一个p或最后再%p一次

一般写法:

for(ans=1;b;b>>=1,a=a*a%p) if(b&1) ans=a*ans%p;

要改成

for(ans=1%p;b;b>>=1,a=a*a%p) if(b&1) ans=a*ans%p;

for(ans=1;b;b>>=1,a=a*a%p) if(b&1) ans=a*ans%p;ans%=p;

hack:1 0 1

因为b=0,故使用第一种程序时,不会取模,导致答案错误期望0,读到1

质数筛

埃氏筛没有问题,但是在洛谷上跑的时候最多40pts(不加快写20pts),这里就体现了快写线性筛的必要性。

book[1]=1;
for(re LL i=2;i<=n;i++)
{
if(!book[i]) prime[size++]=i,write(i);
for(re LL j=0;j<size&&i*prime[j]<=n;j++)
{
book[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}

树状数组

树状数组有个O(1)插入的方法

for(re int i=1;i<=n;i++)
{
a[i]+=read();
if(i+(i&-i)<=n) a[i+(i&-i)]+=a[i];
}

结果我两次把\(1\)看成\(i\),一次忘记判断i+(i&-i)<=n,挂的可快了!

单调队列

这里只列出来求区间最小值。

  • 一定要先判断队列不为空

  • 队尾出不单调元素

  • 插入下标进队尾

  • 队头出过期元素

记着这些应该就没问题。

while(!mn.empty()&&a[mn.back()]>a[i]) mn.pop_back();
mn.push_back(i);
while(!mn.empty()&&mn.front()+k<=i) mn.pop_front();
if(i>=k) cout<<a[mn.front()]<<" ";

KMP

还是char好用,char下标可以从1开始

for(int i=2,j=0;i<=tl;i++)
{
while(j&&t[i]!=t[j+1]) j=nxt[j];
if(t[i]==t[j+1]) j++;
nxt[i]=j;
}
for(int i=1,j=0;i<=pl;i++)
{
while(j&&(p[i]!=t[j+1])) j=nxt[j];
if(p[i]==t[j+1]) j++;
if(j==tl) cout<<i-tl+1<<endl,j=nxt[j];
}

string只能从0开始,好可怜。。。

int j=-1;
nxt[0]=-1;
for(int i=1;i<b.size();i++)
{
while(j>-1&&b[i]!=b[j+1]) j=nxt[j];
if(b[i]==b[j+1]) j++;
nxt[i]=j;
}
j=-1;
for(int i=0;i<a.size();i++)
{
while(j>-1&&a[i]!=b[j+1]) j=nxt[j];
if(a[i]==b[j+1]) j++;
if(j==b.size()-1){
cout<<i-b.size()+2<<endl;
j=nxt[j];
}
}

逆元

记住三种就好

快速幂

\[a^{-1}=a^{p-2}(\texttt {mod }p)
\]

拓展欧几里得

void exgcd(int a,int b,LL &x,LL &y)
{
if(!b)
{
x=1;
y=0;
return;
}
exgcd(b,a%b,y,x);
y-=a/b*x;
}
//------------
exgcd(a,p,x,y);
x=(x%p+p)%p;
cout<<x;

线性

LL inv[100000010];
LL n,p=998244352;
int main()
{
cin>>n;
inv[0]=1;
inv[1]=1;
for(LL i=2;i<=n;i++)
{
inv[i]=(p-p/i)*inv[p%i]%p;
}
for(int i=1;i<=n;i++) cout<<inv[i]<<" ";
return 0;
}

End

检查long long,不确定就全开吧!

检查数组大小,无向图双倍,线段树四倍

删除Debug

检查freopen和选手文件夹

赛时

死磕T1,1h30min后估30pts无从下手优化;

看到T2,貌似是组合数学,直接\(pass\)

看到T3,想到暴力——线段树——vector存展开指令——1h30min写完暴力继续T1;

继续T1,优化至能过50pts。再用手动倍增(2000years,10k、100k、1000k、10000kyear)预估时间复杂度为\(O(q*log_{10} n)\),但是大样例3,它\(1s\)只能过一半!

卡常,检查,于是。。。

有所感动的是,赛后代码都正常……呵呵!

无论自己现在做什么,日子还是要接着过,明天的太阳还是会正常升起。

过去的事情就让它过去吧。

After-story

CSP2020复赛后日志

以及待更新

CSP2020复赛前小结的更多相关文章

  1. CSP2020复赛游记

    CSP2020复赛游记 由于本蒟蒻侥幸通过PJ和TG的分数线并且侥幸的拿了一等,所以侥幸的来参加复赛 11.04~11.05 期中考,挂 11.06 对答案,炸 11.07 开始了第一次CSP复赛 坐 ...

  2. csps前小结

    冒着题没改完颓废被发现的风险来写博客 好像离csps只剩两天了,然而没啥感觉 最近考试有时考得还算可以,有时也会很炸 今天考试事实上心态啥崩,因为T1结论题一直没思路,想了一个小时连暴力都没打 过了一 ...

  3. TypeScript体系调研报告

    作者简介:aoto 蚂蚁金服·数据体验技术团队 Q:为什么要写这边文章?这篇文章要表达什么? A:我们考虑在SPA应用中使用TS作为开发语言,我们需要一篇系统性介绍TS本身及周边的文章来论证在项目中使 ...

  4. Python(三)——文件操作

    在我们用语言的过程中,比如要往文件内进行读写,那么势必要进行文件操作,那么咋操作呢?用眼睛直接看么?今天就定个小目标,把文件读写那些事扯一扯 文件操作 把大象放进冰箱分几步? 第一步:打开冰箱 第二步 ...

  5. 从柯洁对战AlphaGo,看商业智能

    [摘要]李开复赛前说,AlphaGo和李世石的人机大战是第一次,可能还有悬念,那今天的AlphaGo已经在围棋的世界中彻底甩开了人类,不再拥有任何其他的可能.并指出,AlphaGo和柯洁的比赛并非没有 ...

  6. 达梦产品技术支持-DM8-数据库安装

    (该文档只适合个人环境搭建,未涉及到数据库的各种参数配置,未涉及到数据库规划,若需要企业环境搭建请咨询专业人员) 基于Windows的安装 windows下安装是图形化界面,与linux下的图形化界面 ...

  7. dm8数据库的安装 for linux

    目录 dm8数据库的安装 for linux 1.创建用户 2.修改limit的文件 3.解压文件安装包 4.挂载iso镜像 5.对于安装介质和目录进行权限授予 6.切换用户安装数据库软件 7.dm数 ...

  8. 达梦数据库学习(一、linux操作系统安装及数据库安装)

    达梦数据库学习(一.linux操作系统安装及数据库安装) 环境介绍: 使用VM12+中标麒麟V7.0操作系统+达梦8数据库 一.linux系统搭建 本部分没有需要着重介绍,注意安装时基本环境选择&qu ...

  9. Luogu 2017 Autumn Camping 游记

    颓得不行的我到D2才想起来自己可以写一篇low得不能再low的游记,然后就动笔了...... Day0 愉快地看着三联,想着别人放一天我放四天的悠闲生活,内心甚是平静.然而晚上回到家就开始浪了,看完了 ...

  10. DM8数据库单机安装

    一.系统概要 表1 部署情况一览表 操作系统 Windows10 数据库版本 DM8(开发版) 数据库类型 单机 磁盘挂载 无 Key信息 无 二.操作系统信息检查 2.1 操作系统版本 [root@ ...

随机推荐

  1. redmine 迁移后邮箱配置

    https://blog.csdn.net/love8753/article/details/126380927 步骤一 修改配置文件 步骤二 redmine 页面配置信息 步骤一 修改配置文件 打开 ...

  2. Web前端入门第 12 问:HTML 常用属性一览

    HELLO,这里是大熊学习前端开发的入门笔记. 本系列笔记基于 windows 系统. HTML 常用属性大约 70 个,是否又头大了?脸上笑嘻嘻,心里嘛...嘿嘿... 温馨提示:属性不用死记硬背, ...

  3. Vim编辑windows格式文件出现的[noeol][dos]的含义、解决方法及方法解释

    文章目录 前言 [dos] [noeol] 前言 最近想要将保存再windows的文件传到linux上,传进去保存文件之后,用vim打开发现在文件的底下出现了[dos] [noeol]这两个标志.然后 ...

  4. 使用word模板的科研论文编写

    编写SCD论文等的时候,可能出现官网的论文模板不够全面.一般我们使用latex作为论文编写模板,格式等都方便控制和编写,而word模板操作起来较为复杂.但是官网有些时候可能找不到latex的模板内容, ...

  5. angular项目中修改nz-zorro组件库字体大小

    有时候我们开发时使用到的组件库,可能样式不是符合我们的需求,我试着从谷歌调试工具获取组件的类,给他设置样式,如下我设置tabset的样式 .ant-tabs-nav .ant-tabs-tab { f ...

  6. linux中如何判断一个rpm是手动安装还是通过yum安装的

    现状 对于一个不熟悉的服务器或者是虽然是自己的服务器,但历史比较久远,对于上面安装了的一些软件包,我们记忆都慢慢模糊了. 我今天遇到一个情况,在安装一个工具x2openEuler时,安装失败,提示依赖 ...

  7. 几个技巧,教你去除文章的 AI 味!

    最近有不少朋友在利用 AI 写毕业设计论文,几秒钟一篇文章就刷出来的,爽的飞起. 结果万万没想到,人家论文查重服务也升级了,是不是用 AI 写的论文大概率都能被查出来... 这可如何是好啊?救救我救救 ...

  8. Portainer安装配置

    什么是portainer 官网:https://www.portainer.io/ Portainer(基于 Go) 是一个轻量级的Web管理界面,可让您轻松管理 Docker 主机 或 Swarm ...

  9. base64编码与一般的ASCII码和二进制编码有什么不同?base64详解

    在密码学实践中,经常会用到Base64编码.比如大名鼎鼎的密码学挑战题"Matasano Crypto Challenges"的第一集合的第一题,就是要求把一个Hex编码的字符串转 ...

  10. 《机器人SLAM导航核心技术与实战》先导课:如何安装Ubuntu系统

    <机器人SLAM导航核心技术与实战>先导课:如何安装Ubuntu系统 视频讲解 [先导课]2.如何安装Ubuntu系统-视频讲解 [先导课]2.1.如何安装Ubuntu系统-操作系统概念- ...