刷题
文章平均质量分 65
zealscott
https://tech.zealscott.com
展开
-
UVa11300分金币-中位数方法
题目链接:点击这里 此题刚开始做时没有什么思路,也不知道这么下手,但不可能穷举。由于对于任意一个人xixix_i,只可能向xi−1xi−1x_{i-1}或者xi+1xi+1x_{i+1}分金币,因此定义xixix_i为编号为iii的人向编号为i−1i−1i-1的人给多少金币,如果xi<0xi<0x_ii−1i−1i-1的人向编号为iii的人−xi−xi-x_i个金币。 现假设...原创 2018-02-08 22:35:13 · 566 阅读 · 0 评论 -
LA3902树形网络递归
经典题,需要温习。题目链接:点击这里总体思路此题是网络结构,好久没做过这种题了。需要注意的是,这里有n个点,只有n-1条边,一定是无环图。因此,此题是无根树。处理无根树比较麻烦,我们只知道一台server的编号,可以从这个server出发进行DFS,找到在其k距离范围内能达到的叶子节点(client)。但接下来怎么做呢?如何找到剩余叶子节点的最小server数呢?因此,可...原创 2018-04-25 21:08:20 · 280 阅读 · 0 评论 -
UVa11520字典序循环
题目链接:点击这里。思路本题思路比较简单,由于要求字典序最小,因此从第一个位置开始,每次从A开始试错,如果可以满足,则进行下一位。代码我使用了int类型进行存储,事实证明比标准AC麻烦了。虽然很多时候字符串要转换为int类型便于处理,但这里不需要,直接把每行当成一个字符串就够了。类似于AC标准答案,我们可以定义一个template类型,使得任意类型都可进行类似字典比...原创 2018-04-15 16:46:38 · 209 阅读 · 0 评论 -
LA3871二分最大最小值
题目链接:点击这里 解题思路此题题目描述的很简单,就是让我们用有限的预算找到最小品质因子最大的电脑组件,并且每种组件必须都要买。这种求“最小值最大”的常用方法就是二分:若猜想的答案为xxx,则取所有品质因子大于xxx的组件进行组装,如果能不超过预算,则说明正确答案>=x>=x>=x。因此,我们只需要枚举所有的品质因子,当第一个不满足题意的xxx出现时,则解题结束。 但需要注...原创 2018-03-06 10:51:54 · 204 阅读 · 0 评论 -
UVa3635派-二分法
题目链接:点击这里 解题思路本题初一看感觉很简单,不就是多个派不同的人来分嘛。那就直接二分好了: 先得到最大的派的面积作为二分的右临界值,再让0当作左临界值,然后设置人数约束,看是否所有条件都满足即可注意由于此题需要精度输出,需要牢记C++里面的精度输出需要使用头文件#include<iomanip>,并在cout<<fix<<setp...原创 2018-03-13 09:53:09 · 211 阅读 · 0 评论 -
UVa10795新汉诺塔-深入了解递归
题目链接:点击这里。 汉诺塔问题回顾递推思路首先我们想想最开始学递归时的汉诺塔问题。首先,我们并不是细致到每一步去看到底应该如何移动,而是把前面n−1n−1n-1个盘子看成整体,这样,我们只需把前面n−1n−1n-1个盘子移动到BBB,最大的盘子移动到CCC,然后把剩下的n−1n−1n-1个盘子移动到CCC即可。 其实很多递归的问题的解决思路都是这样,不需要你去把整个步骤...原创 2018-03-05 10:10:56 · 308 阅读 · 0 评论 -
UVa11464-Even Parity开关问题
题目链接:点击这里 初步思路第一次看见这种问题,没有太多思路,就想直接枚举+剪枝。但如何剪枝呢?首先,如果直接枚举所有的情况,很明显是不可能的,若为15∗1515∗1515*15的矩阵,则需要枚举215∗15215∗152^{15*15}种方法,实在是太大。因此剪枝成为了必要选择。可以想到,若我们已经确定了第一排的所有元素,则第二排也已经被确定了–因为第二排的元素将决定第一排的每个...原创 2018-02-25 20:17:56 · 197 阅读 · 0 评论 -
UVa11384简单递归
题目链接:点击这里 解题思路此题最好的做法应该是首先动手算一遍。例如,当N=3时,第一步最好的方法应该是对{2,3}每个数减去2,这样得到的数列为{1,0,1},我们发现这个数列和N=1时的最少操作次数相同。同样,我们验证当N=6时,第一步对{3,4,5}每个数减去3,得到的数列为{1,2,3,0,1,2},与N=3时的最少操作次数相同。因此,我们得到递推关系式: DN=DN/...原创 2018-03-02 09:33:11 · 265 阅读 · 0 评论 -
LA2995-Image Is Everything
题目链接:点击这里 结题思路此题实在是不会。。。后面看书看了好久才慢慢明白,赶紧拿小本本记下来。 思路是这样的: 首先,如果有能穿透的位置,则当前位置所对应的所有单位立方体都不存在。 如果同一个位置的单位立方体,从不同视图上看颜色不一样,则这个单位立方体不存在。 书上用数学归纳法证明了可以通过同个位置不同视图的颜色不一致来找到最多能删除的个数。 因此,结题的关键首先是要将6...原创 2018-02-16 22:15:53 · 193 阅读 · 0 评论 -
UVa112992-贪心算法
题目链接:点击这里 此题可用简单的贪心算法,具体可见CLRS中的贪心算法介绍。 可使用Exchange策略进行证明:当对执行任务进行递减排序并且依次执行时,可以达到最优解。 解题的基本思路:首先利用结构体存储每个部下的交代任务和执行任务的时间,然后进行操作符重载,使得可以直接使用内置sort函数进行排序,然后就能很愉快的AC了。 注意:进行操作符重载时只能重载<号。 问题:书...原创 2018-02-08 11:40:56 · 214 阅读 · 0 评论 -
UVa10881蚂蚁
题目链接:点击这里 这是一道很有意思的题。如果我们完全按照题意,最simple的想法就是把每个蚂蚁的位置用数组表示,然后每一时刻就更新位置。这种方法固然可行,但实现起来较为麻烦,而且我们并不需要蚂蚁的中间过程位置,浪费时间。 如果我们把例题中的每一秒的蚂蚁位置画出来,不难发现: 其蚂蚁的相对位置始终是不变的。也就是说,如果蚂蚁B最开始处于蚂蚁A或者蚂蚁C之间,最终的位置只有两种情况:1.fe...原创 2018-02-14 18:53:44 · 239 阅读 · 0 评论 -
UVa11210回溯法递归
题目链接:点击这里 解题思路对于不懂麻将的我来说,此题花了不少时间去揣摩题意。不过其实题目简化了规则:手上有13张牌,要摸一张胡牌,叫你求摸哪一张可以胡牌。由于整副牌只能拆成一个将(两张相同的牌),不限数量个刻子或顺子。因此,我们可以想象,任意摸一张牌后,除去将,还有12张牌,正好分为4组(3张为一组)刻子或顺子。 因此,此题首先应该是遍历所有可能摸到的牌,然后检查当前牌是否可能胡牌。...原创 2018-02-27 10:06:23 · 323 阅读 · 0 评论 -
UVa112992-贪心算法
题目链接:点击这里 此题可用简单的贪心算法,因为要找能砍掉某个头的能力值最小的骑士,可以先排序,再对每个头进行选择,选择能砍它的最小骑士,则为答案。 算法复杂度为MAX[ O(mlgm),O(nlgn) ]。 C++代码如下:#include #include using namespace std;int man[20000];int head[20000];int原创 2018-02-06 22:17:05 · 348 阅读 · 0 评论 -
LA3401-Colored Cubes枚举技巧
题目链接:点击这里 初步思路遇见立方体的题总是没太好的思路,但此题题目比较简单,最暴力的方法就是直接枚举,毕竟也只有6个面,立方体最多也只有4个。但如何枚举呢?我们注意到,一个立方体不管如何旋转,相对应的面总是不变的。因此,我最开始的思路就是确定哪些面是相对应的,然后再进一步操作。但仅仅确定三个面是不够的,可以自己画一下图,有些情况是依然没有办法通过旋转得到的。因此,我们需要先知道到底旋...原创 2018-02-26 15:57:17 · 266 阅读 · 0 评论 -
LA3708墓地雕塑
题目链接:点击这里 思路首先注意审题,题目说的是新加入的mmm个雕塑可以放在任意位置,因此我们将新加入的雕塑就放在需要的地方(等间隔),只考虑之前的nnn个雕塑的移动位置。由于周长已经确定,我们可以这样想:先把原有的nnn个雕塑放在离其最近的新位置上,其余位置摆放新的雕塑,就可以得到移动总距离最小。实现因此我们很容易可以写出代码如下:#include <ios...原创 2018-02-10 21:34:43 · 227 阅读 · 0 评论 -
LA3177贪心+二分
题目链接点击这里。思路此题分奇偶两种情况进行讨论:当n为偶数时,很容易证明最优解就是两个相邻的数的和最大;当n为奇数时,不太好处理我们想,当n为奇数时,若假设这时候p个礼物满足条件,第一个人将p个礼物分为1,…,r1和r1,…,p这两种情况,第i个人若为奇数,则要尽量往r1,…,p取,同样,若第i个人为偶数,则要尽量往1,…r1取,这样可以使得最后一个人(奇数)能取到...原创 2018-05-05 10:45:37 · 191 阅读 · 0 评论