首页 > 其他分享 >OI 方法论

OI 方法论

时间:2024-02-08 15:56:32浏览次数:30  
标签:www 方法论 OI 题解 long https com mod

OI 方法论

  1. 分析问题性质
  2. 问题建模
  3. 加速求解
  4. c++语言实现

分析问题性质

二选一:2-sat

区间问题:树状数组,线段树(优化建图),前缀和,差分

最大的最小值,最小的最大值:二分答案

多个状态的值:可持久化数据结构

往往找出问题性质,是解题的突破口

性质的工具——美妙的数学

注意不等式两边同乘负数变号

注意细节

问题建模

网络流模型

动态规划

转化图论问题

加速求解

矩阵快速幂加速递推

c++语言实现

细节决定成败

c++语言

变量名:

代码结构化技巧:namespace struct class

不要把多个变量设一个名字

空间

数组要开够,空间复杂度要精确到数组,质数判断要注意范围,太大只能根号n

图论:双向边要开两倍空间

时间

大输入问题要快读,大输出要快写

数据范围

十年 O I 一场空,不开 long long 见祖宗

  • long long int 相乘加 1ll

  • 慎用格式强制转换

  • 输出 long double 使用 %Lf

运算符优先级

小心按位与,或,异或 超低的优先级搞坏程序

其他

  • ++it返回it+1;it++返回it

  • a[20]的数组只允许访问a[0~19]调用a[20]会访问无效内存

  • 函数写完要调用,我有一个同学经常线段树build不调用

  • 有返回值的函数写return

考前练习技巧

题解

抄题解不要抄错行

看题解不要只看标程,看思路

不要只看一篇题解

刷题

要审题,有些题目题意相似,但是细节不同

审题部分

取模

  • 加法 a=(a+b)%mod
  • 乘法 a=a*b%mod
  • 减法 a=(a-b+mod)%mod
  • 除法 a=a*inv[b]%mod
  • 快速幂 a=ksm(a,b,mod)

有些题目要求在线,要对应修改ans,以备下次异或。有些特判0输出也要修改答案。

多测

比如建立虚树前把上一个虚树删除

  • 链式前向星,清空tot,清空head,不需要清空edge

有些题目的编号从0开始,要变成自己习惯的输入

调试技巧

原则

调试时一定要究根问底,发现一个bug,但是还要发现更多bug

因为你会不止写出一个bug

核心模块检查优先

  • dp的转移方程式

  • 线段树,平衡树的 pushup pushdown

技巧模块次之

  • 二分的边界 lower_bound还是upper_bound

  • 双指针是空心还是实心(闭区间还是开区间)

清楚代码对象

  • 边还是点

  • 区间还是元素

相近的变量名

  • 不要n,m写错

  • 队列 h 和 t 不要写反

  • 不要ldat,rdat,dat写串

调试效率相关

对于多问先独立出来询问,看是不是多测没清空

对拍

OIer基本技能

参考资料

STO STO STO JULAO ORZ ORZ ORZ

https://www.luogu.com.cn/blog/SpreadWings/oi-xie-ti-ji-ben-fang-fa-lun#

https://www.cnblogs.com/cjyyb

https://www.luogu.com.cn/blog/command-block/

https://www.cnblogs.com/flashhu

标签:www,方法论,OI,题解,long,https,com,mod
From: https://www.cnblogs.com/life-of-a-libertine/p/18011881

相关文章

  • pixel2 Android11 Https 抓包记录
    关键词:pixel2Android11MagiskhttpcanaryHttps最近需要抓HTTPS,手里设备有pixel2,4,6都是高版本。查找了下资料,配置环境,记录下。前置条件1.设备一台已Root,Magisk方案需要物料:1.winadb环境。参见:https://www.cnblogs.com/myred/p/14506909.html2.winopenssl环境。......
  • Android Graphics 多屏同显/异显 - 新年预告
    春节将至,首先祝愿朋友们新年快乐!AndroidGraphics多屏同显/异显-新年预告 -- 点我阅读节前发布最后一篇文章,预告下阶段将要分享的研究成果,主要是Android多屏同显/异显的一些知识。为了能讲清楚底层逻辑,又不要惑于上层复杂的AMS/WMS,特意写作了C++版本的多屏互动的演示......
  • P2585 [ZJOI2006] 三色二叉树
    原题链接总结1.要学会动态规划这种思维方式,即定义状态和状态之间的转移2.本题的难点在于如何将抽象的输入数据转换成树状结构处理和定义状态,这个定义状态让我想到了初中添加几何线,可能要多做题才能有感觉吧3.有一定模拟的部分,这一部分要细心\(Code\)#include<bits/stdc++.h>......
  • android FrameLayout、LinearLayout和RelativeLayout的学习
    一、FrameLayout目的:FrameLayout是一个设计用来存放单个子项的简单容器。它通常被用来堆叠视图,即将多个元素重叠在一起。布局:子视图堆叠在一起,默认情况下都是放置在左上角,但可以通过android:layout_gravity属性改变子视图的位置。性能:由于FrameLayout结构简单,所以相对来说比较......
  • 【洛谷 P2670】[NOIP2015 普及组] 扫雷游戏 题解(模拟)
    [NOIP2015普及组]扫雷游戏题目背景NOIP2015普及组T2题目描述扫雷游戏是一款十分经典的单机小游戏。在行列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的......
  • P9501 RiOI-2 likely
    好好好好好题\(T\)组数据,给定\(n,m,k\),求所有\(2^n\)个大小为\(n\)的由\(\pm1\)组成的有标号环\(a_{0\dotsn-1}\)中,有多少个满足\(\sum_{i=0}^{n-1}\prod_{j=0}^{m-1}a_{(i+j)\\bmod\n}=k\)。对\(998244353\)取模。\(1\leT\le10,2\len,\sumn\le5\tim......
  • CF1408E Avoid Rainbow Cycles 题解
    解题思路第一眼看过去感觉不是很可做……但是我们可以发现,如果有两个点在不同的集合中出现过,那么一定会存在彩虹环,那么两个点最多出现一次。同时我们考虑将题意转化一下,变成求最大能选取的点,使得不出现彩虹环。根据刚刚的性质,我们可以考虑每个点向它所在的集合连一条边权为\(a_......
  • P10125 「Daily OI Round 3」Simple题解
    原题传送门题目概述:给我们一个字符串,不区分大小写,让我们判断此字符串是与Acoipp等价,还是与Svpoll等价,或者是与前两者都不等价,并按题目条件输出。思路分析:我们只需要把此字符串的第一个字符转成大写,其他字符转成小写,并与那两个字符串进行比较就行了代码:#include<bits/st......
  • P8330 [ZJOI2022] 众数 题解
    Description给定一个长度为\(n\)的序列\(a_1,a_2,\dots,a_n\),问选一段区间,它的价值是里面的众数个数\(+\)外面的众数个数,求最大价值,以及所有满足这个最大价值的区间的外面的众数颜色。\(\sumn\leq5\times10^5,n\leq2\times10^5\)。Solution考虑根号分治。定义一个......
  • P10090 [ROIR 2022 Day 2] 幼儿园的新年
    这道题暴力很容易想到就是:枚举\(n\)的倍数\(m\),将每个\(m\)的方案数加起来。具体来说就是,先保证\(a\)比\(b\)小,然后分情况讨论\(m\)。当\(m\)小于等于\(a\)时,很明显\(x\)可以取满\(0\)到\(a\)整个范围,方案数就是\(m+1\)。当\(m\)大于\(a\)时,如果此时\(......