logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【例题2】The XOR Largest Pair(信息学奥赛一本通- P1472)

pow函数的精度刺客:使用<cmath>里的pow(2,k)计算 2 的次幂,返回的是浮点数。在位数较高时,极易因浮点精度丢失导致最终转成int时少 1。必须使用位运算1<<k来代替。字典树通道有效性判定:判断一个节点是否存在,是看它的nxt是否被分配过有效编号,即nxt[v]!=0,不能写成nxt[v]==1(这会导致只认第一个分配的节点,丢弃后续所有路径)。0 的边界死角:如果采用除 2 取余

#算法
【例题2】The XOR Largest Pair(信息学奥赛一本通- P1472)

pow函数的精度刺客:使用<cmath>里的pow(2,k)计算 2 的次幂,返回的是浮点数。在位数较高时,极易因浮点精度丢失导致最终转成int时少 1。必须使用位运算1<<k来代替。字典树通道有效性判定:判断一个节点是否存在,是看它的nxt是否被分配过有效编号,即nxt[v]!=0,不能写成nxt[v]==1(这会导致只认第一个分配的节点,丢弃后续所有路径)。0 的边界死角:如果采用除 2 取余

#算法
Radio Transmission(信息学奥赛一本通- P1467)Radio Transmission 无线传输(洛谷-P4391)

哈希暴力法的枚举上限:由于允许循环节残缺,原串长度可能不足两个完整循环节(如abcdabc周期为4),因此枚举上限必须是len,绝不能写成len/2。KMP的0-base越界:获取全串最长前后缀必须是nxt[len-1]。在0-base中,写成nxt[len]会直接读取未知内存导致RE或WA。大数据量的I/O阻塞:本题字符串长度高达 10^6,如果不加cin.tie(0);,容易在读取长字符串时超

#算法#KMP
【例题2】Power Strings(信息学奥赛一本通- P1466)

多组数据切忌滥用memset: 本题是多组测试数据,且最大长度达10^6。在KMP代码中,如果每读入一个字符串就,会引发海量的无用内存擦除,容易导致超时。因为pre()函数内部的for循环是严格基于索引逐个赋值的,会自动覆盖旧数据,因此无需清空。哈希匹配的内层break: 哈希校验时,一旦发现当前分块sum和基准块ans2不等,必须立刻将flag2置0并break出内层循环。若缺少此break,在

#算法#KMP
【例题1】剪花布条(信息学奥赛一本通- P1465)

多组数据读入的阻塞陷阱题目规定以单个结束。很多同学习惯写。当最后一行只有一个时,s1会读入,而程序会阻塞等待s2的输入,虽然信息学奥赛一本题可以通过,但容易导致评测机卡死报超时。先读取s1探路,判断若为则立刻break,确认安全后再读取s2。KMP的Next 数组赋值位置在求next数组时,nxt[i]记录的是以索引i结尾的子串的最长公共前后缀长度。必须写成nxt[i]=j,切忌笔误写成nxt[j

#算法#KMP
A Horrible Poem(信息学奥赛一本通- P1460) [POI 2012] OKR-A Horrible Poem(洛谷-P3538)

哈希区间提取边界:提取闭区间[l, r]的哈希值,公式必须是,千万不能写成减去ans[l],否则会把第l个字符给删掉。素数的最小质因数:在欧拉筛中,不要只给合数标记minprim。当扫描到一个素数时,必须明确记录它的最小质因数就是它自己 (),否则后续查表会遇到0导致死循环或运行错误。海量I/O卡常,输出量极大,必须关闭流同步cin.tie(0);,否则算法再优也可能会超时。自然溢出被出题人针对:

#算法
Seek the Name, Seek the Fame(信息学奥赛一本通- P1458)

题目明确说明“输入若干行”,必须使用。如果只读一次就会直接WA。使用(ull) 让计算机在超过2^64−1时自动截断,相当于自动对2^64取模。千万不要再手动去某个大质数,不仅拖慢运行速度,代码还容易写错。字符串很长且测试数据多,建议在main刚开始加上cin.tie(0);,否则容易被cin和cout卡常数导致超时。前缀的末尾是i,后缀的起点是N−i+1。这两个坐标在草稿纸上画一下就能确认,切忌

#算法
星际信号塔 —— 单调栈经典应用详解

栈内存下标还是存高度?这是初学者最容易犯的错误。栈中必须存下标,因为题目要求输出的是阻挡塔的编号(即下标),且我们需要通过下标去更新结果数组。在while循环中,千万不要写成。s.top()是下标,h[s.top()]才是高度!必须用高度和高度比较。在C++中,定义在main函数外的全局数组默认初始化全为0。虽然利用这个特性可以省去最后一步清空栈并赋值为0的操作,但为了算法逻辑的严密性和可移植性,

#算法#数据结构
【例 3】校门外的树(信息学奥赛一本通- P1537)

在写update函数时,我们经常用一个变量x传入目标坐标,但在内部的i <=n;循环中,真正需要被累加更新的是游标i,千万不能写成对固定坐标x累加。(即c[i]+=val,绝不能是c[x]+=val数据量达到数万级别,main函数的第一行必须焊死cin.tie(0);,否则容易被卡常数超时。涉及树状数组的前缀累加,统一使用long long声明。

#算法#数据结构
公司下属(信息学奥赛一本通- P2141)

链式前向星的初始化h数组存的是头指针,必须全部初始化为-1(使用),否则遍历时找不到终止条件,会陷入死循环或越界。I/O速度瓶颈:数据规模达到 20 万,如果使用原始的cin/cout,在时间限制较紧(如 1.0s)的判题机上极易因为输入输出过慢而TLE(超时)。建议在main函数开头加上解除同步流的代码cin.tie(0);。树的遍历方向:虽然是无环图,但如果自作聪明建了双向边(和),DFS 时

#算法#数据结构
    共 11 条
  • 1
  • 2
  • 请选择