做题
Roar Boil
这个作者很懒,什么都没留下…
展开
-
一些数论题
洛谷P1338 末日的传说 题目链接 题目分析: 题意即为求字典序最小且逆序对数为M的数列。本题做法比较巧妙(开始我也没想到 )。我们已知n个数最多可以产生n(n-1)/2个逆序对,而在这里对于已知n个数,若n-1个数最多能产生的逆序对能大于等于M,那么最优情况便是把序列中最小的数放在第一位,以此往复。如果到某个时刻之后n-1个数无法满足,那么便把最小数放在最后,因为那样可以产生最多的逆序对数,...原创 2019-08-02 20:00:21 · 143 阅读 · 0 评论 -
一些记忆化搜索
洛谷P1514 引水入城 题目链接 题面较长,这里不放截图了 题目分析: 比较典型的记忆化搜索题,如果不记忆化的话将有大量重复计算严重影响效率。这个用dp也比较复杂,因为这里涉及到一些路径可能往回走。这里每次保存起始点能够走到最底层的左端点和右端点(这里可以证明如果下面一排全能走到那么每个起始点所覆盖的区间一定是连续的,想一想,为什么?)用一个be数组来判断该点是否已经经过,若已经经过就直接返回以...原创 2019-08-03 18:25:57 · 111 阅读 · 0 评论 -
一些dp进阶题
洛谷P1373 小a和uim之大逃离 题目链接 题目分析: 一道经典的dp题。这里的关键在于对于一种状态我们只关心两个人之间魔液之间的差值,而对他们手里具体有多少并不关心,从而大大减小时间和空间复杂度。从而dp的四个纬度分别是坐标i,j和差值以及最后拿的那个人是谁(这里也可以根据题目特性一次走两步再减少一个纬度,但因为实际上并没有优化效果故不采用)。其他还有一些需要注意的细节:①每次坐对于差值纬...原创 2019-08-04 13:14:30 · 177 阅读 · 0 评论 -
一些dp基础题
洛谷P1025数的划分 题目链接 题目大意: 给定数n分成k份有几种分法 题目分析: 相当于把n个小球放入k个盒子中,其中每个盒子都不能为空。 这里分成两种情况 1、有盒子里有一个球 2、所有盒子中球的个数都大于等于两个 从而列出转移方程:dp[n][k]=dp[n-1][k-1]+dp[n-k][k] AC代码 #include <iostream> #include <al...原创 2019-07-28 14:03:34 · 229 阅读 · 0 评论 -
一些博弈题
洛谷P1288 取数游戏II 题目链接 题面较长,这里不贴图了 题目分析: 一道比较基础的博弈题,关键在于,如果起始点距离与0边相连点之间存在奇数条边时则先手存在必胜策略,反之则先手必败。 AC代码: #include <iostream> #include <algorithm> #include <iomanip> #include <cmath>...原创 2019-08-15 22:24:48 · 199 阅读 · 0 评论 -
Python序列与文件编程练习
练习一: 使用以下语句存储一个字符串: string = ‘My moral standing is: 0.98765’ 将其中的数字字符串转换成浮点数并输出。 代码: # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ s = "My moral standing is: 0.98765"...原创 2019-08-26 19:09:37 · 1936 阅读 · 0 评论