PKUOJ
小胡同的诗
千里之行,始于足下
展开
-
POJ2248 Addition Chains(迭代加深搜索)
题目链接: poj2248题目大意给你一个数字n,你需要构造一个首项为1,末项为n的递增序列,并且这个序列的非首项的数字都能从它前面找到两项之和与之相等,前面的两项可以为同一项,即可重复,并且要让这个序列尽可能短,如果有多解输出其中一种序列解即可。(n<=100)解题思路朴素搜索我们可以从第二项开始构造。因为已知第一项为1,所以通过前面的已知项生成的后续项一定能保证上述的『x[i]+x[j]=x[k]x[i] + x[j] = x[k]x[i]+x[j]=x[k]』的条件;在生成后原创 2020-08-16 21:10:55 · 337 阅读 · 0 评论 -
POJ2299Ultra-QuickSort(树状数组+离散化)
题目链接:POJ2299题目大意:给你n个数字,问这段序列类似于冒泡排序后至少需要几次交换。解题思路:实际上就是求数列的逆序数,树状数组可以解决,由于数据规模大到达long long的规模,离散化一下。注意开的val要为long long!AC代码:#include &lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;cstdlib&.原创 2019-02-17 23:19:00 · 143 阅读 · 0 评论 -
POJ3465A Simple Problem with Integers(树状数组--区间查询 区间修改)
题目链接:POJ3468题目大意:给你一段长度为n得数字序列,并且有q次操作,这些操作可能是查询[l,r]的数字和或者是修改[l,r]之间的数字。每次做出相应操作,查询则输出结果。解题思路:关于数字序列区间问题,可以用线段树,但要加个延迟标记(之后更新这种做法)。这里通过树状数组的性质,并且预处理树状数组(差分操作),使其能够区间更新。关于区间修改的树状数组这里树状数组我们用c[max...原创 2019-02-24 17:13:11 · 218 阅读 · 0 评论 -
POJ3468A Simple Problem with Integers(线段树--区间更新区间查询lazy_tag)
前言树状数组解法:树状数组+区间更新区间查询线段树对于区间更新区间查询的问题直接修改更新的函数即可,但每次更新时都把子区间一同更新这样其实是相对暴力的,因为更新完的区间我们可能一次都没有访问到!这里有个关于LazyTag的优化,其实就是让某个区间更新时,只更新其父区间,而对于其子区间我们打一个标记,其含义就是:这个区间的子区间还有更新的任务没做,等到以后的查询动用到它时再临时做(注意,这个标记...原创 2019-02-24 20:51:14 · 141 阅读 · 0 评论