首页 > 其他分享 >做题思考总结

做题思考总结

时间:2023-07-14 19:12:00浏览次数:39  
标签:总结 可以 等效 做题 思考 数学题 dp

$ 做题总结 $

每次做之前看一看。做题千万不要分心,不要做一下这道题就去干别的事。

OI思想:正反,抽象,等效,益少,独立

对于OI思想的一些思考与理解

独立:对于那些会改变的值,比如说数组之类的,显然他的下标的关联越少越好。比如f[k]和f[i-j]相比,肯定是前者更好,因为前者更为固定,通常可以通过前缀和或是其他的方式来优化。又或是那些由枚举得到的值,显然预处理存起来后会更好。

抽象:这是最好理解的,就是把一些实际问题转化成图或是一些现实不存在的东西,方便使用各种算法去求解

正反:有的题目从正向不好操作,就可以反过来看看是不是更好求解,比如让你移动棋子可以变成移动空格

益少:显然,状态数越少,分类的情况越少,会是更优的。

等效:这就需要很好的感觉,要能发现什么情况几种东西其实是等价的,可以减少很多讨论。

总体:

1.一定要想写好思路,并且确定思路的可行性,并在脑海中理清楚代码如何实现后在写。可以避免全部白打。!!!一定要确保可行性后再写,不要写假了。
在遇到难点的时候把问题打出来,对着问题去找解决方案。

2.读懂题意后再写

3.预处理可以几种预处理一起使用,可以事先存储出尽量多的数据

4.可以边做边列做题记录。记录格式:

xx题目
特殊性质:
(这道题有什么特殊的点)
1.莫一维特别小
=>可以从这一维去枚举,dp
大致思路:
怎么做,代码怎么打
问题点:
1.需要区间修改。
=>使用线段树
......

做题时如何思考

思考一定要深入,不断思考本质

1.可以把操作,问题分开讨论。比如可以通过 $ 分论讨论 $ 将问题转化为几种好处理的情况。(如环上问题就可以转化为链,再讨论有没有过端点)
\(=> 分类思想\)

2.不等式可以尽量转换出一些特属的值,比如说0之类的

3.做题时可以找每一道题的特殊点,有什么特别的地方。

4.可以自己画一画图,手模一下。

5.敢于大胆猜测结论

6.用等效的思维,什么情况下是等效的 $ => 等效思想$

7.一个值如果可以单独表示的话,尽量单独表示,不要由前面的值推来,这样可以方便优化(如前缀和) $ => 独立存在,减少依赖$

8.一些结论题可以用过打表来找结论

9.可以反着从不同的角度看问题。比如找一段和小于p的数可以变成去找一个区间和小于p $ =>正反思考 $

贡献最值

思考说明情况下会有贡献,贡献是如何变化的

数学题

1.看到整个题都是一些数学,并且不好跟图之类转换时,一般就是数学题,就需要去推式子(虽然不是数学题有的也要推式子)

2.数学推出了比较重要的式子时一定要去想有什么用,该怎么写代码

dp

1.觉得当前状态无法转移的时候,可以多保存几个状态,看看是否可以转移了

数位dp

1.一定要记得讨论前导0!!不要觉得可以不要

2.要记得清空dp数组。

3.通常是答案跟每个数的组成有关,可以用数位dp

4.数位dp转移中的ans+=dfs(...)。表示的含义是所有i(dp[x])的答案(idp[x])是一个数

状压dp

1.一般情况下有一维很小且只有两种状态

一些杂碎的小技巧

1.平均数可以都减掉一个数变成0,变成前缀和

标签:总结,可以,等效,做题,思考,数学题,dp
From: https://www.cnblogs.com/shadom/p/17554785.html

相关文章

  • 每日总结2023年7月14日
    今日学习:完全图的概念,有向完全图和无向完全图。邻接矩阵的概念,邻接矩阵怎么画。邻接表怎么存储图的信息;图的遍历:深度优先、广度优先;拓扑排序:把有向边表示活动开始的先后关系。这种有向图称为用顶点表示活动网咯,成为AOE网络;图的最小生成树(普利姆算法Prime);明天的计划:把图和基础算法......
  • 关于单元测试的一些思考
    单元测试作为软件质量的重要一环,往往在整个开发流程中被大多数开发人员所忽略,本文旨在分析如何写好单元测试并探索一些测试驱动开发的应用。单元测试原则在写单元测试前,先要明确什么是单元测试,单元测试的原则是什么?明确这些问题前不妨先参考一下前人总结的单元测试First原则。......
  • 【考后总结】7 月多校国赛模拟赛 3
    7.14冲刺国赛模拟36T1染色题关键性质是奇数偶数位上可以放置的只有两种,若\(i\)和\(i-2\)选的颜色不同,那么在\(i\)位置放一个球,\([l,r]\)的限制等价于\([l+2,r]\)中奇数位和偶数位不同时有球。设\(f_i\)为\(i\)放置一个球的合法方案数,这样直接枚举上一个球所在......
  • Android Binder总结
    Binder总结首先感谢参考的博客AndroidBinder原理,下面是我个人的总结,方便加深理解1.0系统服务启动在servicemanager.rc中启动在servicemanager服务调用binder_open函数用于打开binder设备文件,并申请128k字节大小的内存空间调用binder_become_context_manager函数,将servi......
  • 测试学习总结
    1.敏捷测试测试往往被期望承担项目质量控制的职责。这点很难做到,测试既不能控制代码如何编写,也不能控制开发人员测试他们编写的代码,但所有的质量把控都被期望能压缩在开发之后的测试阶段完成。 在敏捷项目中,测试人员不再被动等待工作降临,而是主动寻找在整个开发周期中都贡献价......
  • 20230714练习总结
    LOJ3686/JOISC2022DAY1京都观光考虑从\((x1,y1)\)只转一次弯到\((x2,y2)\)。先向南走当且仅当:\[\boxed{\frac{a_{x1}-a_{x2}}{x1-x2}<\frac{b_{y1}-b_{y2}}{y1-y2}}\]很容易想到斜率相关。但是如果只是对比两行,因为有列的条件参与,无法判断某一行是否一定不会被走过,于是......
  • 刷力扣高频SQL50题(基础)总结
    此随笔仅总结个人刷SQL题时,突然不会使用的某函数或某方法,大佬勿看勿喷regexp'正则表达式'一般用于邮箱校验例题:查找拥有有效邮箱的用户select*fromuserswheremailregexp'^[a-zA-Z]+[a-zA-Z0-9_\\./\\-]*@leetcode\\.com$'窗口函数窗口函数讲解函数+over(pa......
  • Web测试方法总结
           ......
  • 日常总结
    0.JavaSE(JavaStandardEdition)标准版以前称为J2SE,定位在个人计算机使用,用来开发C/S架构软件JavaEE(JavaPlatformEnterpriseEdition)企业版以前称为J2EE,定位在服务器端应用JavaWeb很多时候,javaweb与javaee是混用的,两者的概念并不能准确区分。对javaweb的理......
  • P5044 [IOI2018] meetings 会议 思考--zhengjun
    在NFLS模拟赛上遇到的,赛后订正过的。隔了蛮长时间的,总结一下。首先转化为笛卡尔树上后缀前缀的问题。然后考虑如何转移,发现转移形如\(f(x)=\min\{f(x)+C,kx+b\}\)的形式。可以直接线段树维护每个点的最优直线,在update的时候:如果\(f(x)+C\lekx+b\)恒成立(左右......