摘要: - 题目大意 有三个已知体积但不知刻度的杯子,前两个杯子中初始时没有水,第三个装满水,问是否可以倒出d升水,如果倒不出,则倒出一个最大的d’,使得d’<=d,并且在这个过程中要求总倒水量最少。 - 解题思路 可以用DFS加上优先队列来解决,以前两个杯子中的水量作为标记状态。只不过这次不是要求的最求最 阅读全文
posted @ 2018-03-07 17:40 Alpacaddhh 阅读(153) 评论(0) 推荐(0) 编辑
摘要: - 题目大意 可以给每个点的入边加一个值和出边加一个值,问最小的边权最大是多少。 - 解题思路 根据题目的描述,可以列出一个不等式d(a,b) +x(a)-x(b)>=m,移项可得x(b)-x(a)<=d(a,b)-m正好满足差分约束的形式。所有的边就对应着一个差分约束系统。差分约束有解的充要条件是 阅读全文
posted @ 2018-03-07 16:38 Alpacaddhh 阅读(182) 评论(0) 推荐(0) 编辑
摘要: - 题目大意 给出一串数字,求是它为顺序排列的最小的交换次数。(求逆序数) - 解题思路 利用树状数组来解决,每输入一个数,就跟前面的数比较有没有比它大的,有就记录,然后添加该点。 - 代码 阅读全文
posted @ 2018-03-07 16:17 Alpacaddhh 阅读(191) 评论(0) 推荐(0) 编辑
摘要: - 题目大意 从左到右,从下到上,然后分别给出星星,而星星的level就是在它下面和左边的星星个数,然后要你求出0-n-1的level的星星有几个。 - 解题思路 利用树状数组来做,给出的点按y排好序,相同的y按x的递增顺序给出。y不用考虑,只要考虑x就可以了。 - 代码 阅读全文
posted @ 2018-03-07 12:54 Alpacaddhh 阅读(152) 评论(0) 推荐(0) 编辑
摘要: - 题目大意 有两种操作,C是每次操作可以是编辑某个矩形区域,这个区域的0改为1,1改为0,Q是每次查询只查询某一个点的值是0还是1。 - 解题思路 可以利用树状数组来做,一维和二维都可以,我用的是二维,主要二维写起来方便。关于如何查询点的信息,画个图就可以很好理解了(查询单点类似于求和,就跟气球涂 阅读全文
posted @ 2018-03-07 12:39 Alpacaddhh 阅读(181) 评论(0) 推荐(0) 编辑
摘要: - 题目大意 有两种命令,Q是查询一个区间的和,C是一个区间同时增加一个数。 - 解题思路 主要是线段树的点的更新和存储问题。每个一个数都更新到叶子节点不是明智的做法,很消耗时间。故每个节点加一个特殊量来记录增量的累加。 - 代码 阅读全文
posted @ 2018-03-07 12:23 Alpacaddhh 阅读(131) 评论(0) 推荐(0) 编辑
摘要: - 题目大意 D代表破坏村庄,R代表修复最后被破坏的那个村庄,Q代表询问包括x在内的最大连续区间是多少,然后根据命令来进行模拟操作。 - 解题思路 这个我是根据线段树的区间合并的模板来写的,用三个变量记录左边连续区间,右边连续区间和最大连续区间,用栈来存储点(修复的时候要用),其余的就是更新点,然后 阅读全文
posted @ 2018-03-07 12:17 Alpacaddhh 阅读(152) 评论(0) 推荐(0) 编辑
摘要: - 题目大意 给你N个气球,不断刷新指定区间的颜色,刷新N次,最后输出每一个气球的刷新次数。 - 解题思路 利用线段树来做,线段树的每一个节点都代表了一个区间,然后利用一个特殊值来存储这个区间的信息,然后刷新点的信息来找这个区间,找到后+1即可。 - 代码 阅读全文
posted @ 2018-03-07 12:08 Alpacaddhh 阅读(151) 评论(0) 推荐(0) 编辑
摘要: - 题目大意 中文题,一共有4种命令,然后来根据命令来进行操作。 - 解题思路 典型的线段树的问题,进行点的更新,然后进行区间的查询(查询的时候查的是这个区间上的点的和)。 - 代码 阅读全文
posted @ 2018-03-07 12:00 Alpacaddhh 阅读(158) 评论(0) 推荐(0) 编辑