平淡无奇的思维笔记

一个笨脑瓜仰慕并很努力地追上平常人的能力

如何做思维题?

思维过程

以CF1151B Dima and a Bad XOR 为例

1. 自顶向下

1.分析问题的元素:最突出的元素为异或,其次为结果大于零,其次为每行取一个,其次为一个二维数组

2.分析每个元素的特点:

异或:相同取0,不同取1

结果大于零:为什么是零,不是某个数字,如果是零会是什么情况

每行取一个:每行的数字在求解问题中是独立的,在列中是存在关系的(异或关系)

等等……

2. 自底向上

1.分析元素的结论:

异或:

相同的数字异或为零,反之大于零(对应大于零这个元素)
多个数字异或为零不代表所有数字一定相同,但根据上面的结论将一个数字换成一个不同的数,异或结果必大于零

每行取一个:

作用就是换数字,但是有可能所有的数字都是相同的
等等……

3. 总结结论,解决问题

随便找一个选数方案如果结果大于零就可以直接解决问题。但找到了一个为零的选数方案,尝试用其中一个数字同一行的不同的数替换该数字,如果所有数字都找不到对应不同数字(同一行全相同),就解决了问题。

双指针

1.勿默认左指针为主指针,请考虑题意确定主指针。主指针的特点:

  1. 维护较复杂的问题
  2. 变化幅度较小
  3. 次指针维护最值

2.处理答案贡献连续的问题,通常要确定连续边界,第一次满足条件和不满足条件的情况(Unstable String

二分答案

最大的最小 最小的最大

博弈

玄学奇思妙想就行了
1.递推性:总结出递推过程的特点。

Vasya and Chess
我找到了间隔1列的时候可以“逼”对方过不来,什么特点?
对方所在地棋子无时,对方输了。

2.对称性:图形问题,特别是题目给定开始移动位置对称时。(包括对角对称)

只要和先手对称,就能将当前状态递推到最终状态。

全部评论

相关推荐

10-17 09:06
门头沟学院 Java
8527睿:有些地方感觉不太契合实际啊。简单看看第二个项目那里。 比如canal流式读取数据库日志进行缓存同步那里。可不可以加个消息中间件来确保SQL语句的削峰填谷。一般都是canal+消息中间件 双层鉴权登录那里,描述有点模糊,登录是鉴权的前提唉,后面功能都在说是登录,鉴权没有啊
点赞 评论 收藏
分享
26应届求职ing:你这是报了豆音四哥的班?双非本硕拿这两个项目写简历里投100多家嵌软也没什么面试,感觉项目简单了,很多人用
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务