oi解题策略

一、寻找特殊点

有一些题目根据题目模拟是和正解一点关系都没有的,需要找到一种不通用的方法。

例:

1、noi2017 整数

首先,只有加和减,于是直接想到对位减和对位加于是就有进位和退位操作,这时就变成了区间操作问题

然后数据范围 30*10^5  一般线段树都是1e5,为什么这个题是30?  然后发现30≈2^31,然后就可以压位线段树了

2、noip2005 过河

首先,任何基于距离的算法都一定会T,因为距离很长

然后石子数<=100,所以正解一定和石子有关,然后一定是有大段的距离是可以无视的,无视的距离一定是按某个规律排下去的

同时l和r也比较小,所以无视的距离和l、r有关,列一下能到达的点就可以发现lcm覆盖所有点

3、sdoi2017序列计数

题目要求比较有特色:至少有一个质数。如果直接枚举质数和质数个数是指数级的

所以,这种至少有一个符合要求的就相当于  在 0~n 中 求1~n的值,由于0~n是全排列  0是单独一种,所以简单容斥

4、scoi2005 王室联邦

题目要求范围是b~3b,显然是在放宽或限制什么,然后尝试每个卡下限,就发现最差情况也是<3b的,所以就好做了

5、 t joi2013 循环格

这个题需要挖掘题目本身的隐藏条件:每个格子只会被流入一次,只会被流出一次,所以在分析题目的时候有一些操作有可能具有满足某种条件

6、haoi2007 覆盖问题

这个题要求用3个正方形,为什么是3个,于是根据3个去考虑方案特点,会发现一定有一个正方形卡住两边


根据数据范围判断算法

例:所有状压dp+矩乘dp


特殊点可能出现的3种情况:

1、条件  2、问题  3、题目的操作

有时较小的数据也可能成为突破口


二、离散

对于一类计数问题,必须尽量弃掉所有不影响的因素,甚至上组合数统计

例:

1、地精部落

枚举每个数字是什么是没有前途的,所以要不计前面数字是什么的情况下求出答案

然后  由第一块说的 题目的操作 思考,发现只有上一个数列的最后一个数和上升下降有关系

所以可以只表示最后一位,前面的数都可以离散,因为无论插入哪个数,都一定可以和前面的一个数替换

2、中国象棋

由于每一列、每一行在放置情况相同时都是等价的,而放置情况只与个数有关,所以就按照个数 离散进去

3、problem c

离散的是人的位置,其实就是把数据集中了一下,然后一起处理


三、方程

有一些限制比较繁琐,有比较明显的运算关系的题可以列+推式子

例:

1、方格取数

两种颜色的个数统计,抽成数字0,1,然后就变成了异或和0、1,得到这四个数对各自的影响     ,然后需要知道每个数受到的的影响

注意它给的是2*2,就相当于4个一个单位,然后往外扩,然后发现任何a*b的关系都是可以限制的,所以就维护相等与不同的关系即可

2、翻硬币

由于各个因素互相影响,所以列出异或方程,表示关系,然后找解即可

3、圆上的整点

先列出圆的方程,然后因式分解。。然后利用平方来回化。就是说等价的式子,形式不一样,求解的难度也不一样


四、单调性

利用某种属性的单调性,可以得出贪心做法

例:二分检验、单调队列、


套路:

1、限制因素有很多,只取其中一个

2、适当枚举,转化问题




常见套路也可能会导致思维定式

跳出思维定势,需要:

抛弃想法中的某一步,换成结论代替










  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值