• 「2019.8.11 考试」一套把OI写的很诗意的题


    这次写的更惨了,T2暴力再次挂掉了。

    先写了T1的75暴力,然后写了T2的70分暴力(挂成了25),T3啥也不会骗了12分。T3看完题一点思路没有,心态爆炸了,一直在观察数据,忽略的思考的重要性,以至于一点都没打出来,总的来说这次考试还是挺失败的。

    入阵曲:写一个式子:$(sum[r]-sum[l-1])equiv 0 (mod k)$

    那么我们$O(n^2)$枚举两行,再$O(m)$扫中间,会得到一个$sum$值,查询桶里相同的值,然后再把这个值插入桶中。

    将军令:很简单的贪心,我又又又又写了dp,可能还是联赛题做的太少了吧,考点永远想不到。把节点按照深度排序,找到最深的儿子的K倍爹,从这个爹开始进行K层迭代限制的dfs,标记路上所有的点,然后接着找未被标记的最深点,循环进行即可。

    下次考试多想想贪心,少想想dp。

    星空:

    神题。原题可以转化为:一个01串,上面有k个1,让你通过m种长度的取反操作把这个串全变成0。

    接着想。一段区间的操作可以转化为差分的单点操作,那么我们把原序列换为差分的形式,上面至多有2k个1,这个时候,问题转化成了:一个长度为n+1的01串,上面有k个1,每次操作可以把一段长度为$b_i+1$的区间的两个端点同时取反,问最小操作数。

    然后我们可以发现,如果这个区间的端点只有一个是1,那么其实是相当于把这个1移动了一下,而两个1移动到一起会一起变成0。

    这个东西的代价可以用$bfs O(nmk)$处理,这样就重新转化问题。

    有2k个物品,每次可以选择两个物品,购买两个物品有一定的代价,要求每个都要买,问怎么样代价最小。

    经典的状压$dp$,可以在$O(k2^k)$解决。

    总复杂度$O(nmk+k2^k)$

    这道题其实是在考我们转化题意的能力,依旧是一道思维题,思路的转换让人耳目一新,谁能想到差分啊。$Orz$

    转化题意的能力非常重要,是应当着重培养的。

  • 相关阅读:
    Django基础(一)_URLconf、Views、template、ORM
    MySQL数据库(8)_MySQL数据库总结
    MySQL数据库(6)_用户操作与权限管理、视图、存储过程、触发器、基本函数
    前端基础之jquery_mouse相关操作与不同
    前端基础之jquery
    前端基础之JavaScript_(5)_DOM对象总结
    前端基础之JavaScript_(4)_js的作用域
    前端基础之JavaScript_(3)_DOM对象
    MSB与LSB Big Endian Little Endian
    samba配置
  • 原文地址:https://www.cnblogs.com/Lrefrain/p/11337591.html
Copyright © 2020-2023  润新知