随笔分类 - 题解
摘要:我死了。。。被绿题虐。。。看来我的水平有待提高。。。QWQ 好吧,就是跑步的时候只能从跑步的状态转移过来 休息的时候可以从上一次休息时转移过来,也可以从某次跑步的时转移过来,需要枚举从哪一个状态转移来的 就是这样,可是我不会。 2019.04.28在明天考试前突然意识到自己是个渣渣+zz+菜的不行的
阅读全文
摘要:我的天,,,,,n=8,k<=15,,,这怕不是暴力DP+高维数组。。。。 开一个五维数组f[k][i][j][p][q]表示从(i,j)到(p,q)中分成k个矩形最小的平方和。 然后初始化时用上二维前缀和 DP时有些像区间DP,枚举分割线,分成两部分,取min就好 第一次define for循环,
阅读全文
摘要:要自下向上调整,尽可能用一个道具修改多个; 搜的时候记录叶节点的最大深度,减一下就好了。 2019.04.26
阅读全文
摘要:背包。。。差不多。。QWQ 设f[i]为达到差值为i的状态需要多少次,那就很显然了; 注意区分正负不同的代价的循环方向 技巧:如果不想改负数的话,那可以移动一下数组下标,用一个新的指针指向原来的数组 2019.04.29
阅读全文
摘要:又重构了一下。。。当然当初的题一看就看懂了QAQ 设f[i][j]表示以i为根的子树,有j个客户的最大收益 方程:f[u][j+k]=max(f[u][j+k],f[u][j]+f[v][k]-w(u,v)) 0<=j<=lastsize,0<=k<=v.size 2019.04.28
阅读全文
摘要:刚才瞅了半天自己当初写的,终于瞅出来了。。。QWQ 设f[i][j]表示以i为根的子树,包含j个节点所需砍掉的最小边数 那么可知f[u][1]=u的度; 方程:f[u][j]=min(f[u][j],f[u][j-k]+f[v][k]-2); 为何减2? 因为你已经默认了把与自己相连的所有边都去掉了
阅读全文
摘要:f[i][j]表示在第i个垃圾,高度为j的最大生命值 转移分三部分: 如果j>=当前垃圾的高度,且两个垃圾间的时间小于等于上一个状态f[i-1][j-a[i].v]的生命值,则可以垫高度 如果j>=当前垃圾的高度,且两个垃圾间的时间小于等于上一个状态f[i-1][j]的生命值,则可以吃 如果j<当前
阅读全文
摘要:第一问求最长下降子序列,不提; 第二问:借鉴了最短路的方法??? 我们求出来了每个位置的最长下降子序列的长度,那么刻意这样这样转移 if f[i]==f[j]+1&&a[i]<a[j](i>j) 这代表f[i]可以由f[j]转移过来,所以 f[i]+=f[j] 但是会重复,所以当f[i]==f[j]
阅读全文
摘要:复习复习DP。。。都忘了QAQ... 好了这道题我其实是看题解才会的。。。 方程 f[i]=min(f[i-j]+v[i]) v[i]表示i是不是石头 s<=j<=t 路径压缩引用一下证明From Luogu@Panda_Hu 2019.04.28 慌得一批QAQ
阅读全文
摘要:据说某谷数据十分水。。。但幸好BZOJ上也过了。。。话说我记得讲课时讲的是奇奇怪怪的离散化。。但现在突然觉得什么都可以线段树瞎搞了。。。QAQ 直接就是这个区间有没有被覆盖,被覆盖直接return; 如果出现修改,那么就说明它能被看见,++ans 短的一批的线段树(去了不必要的操作码量还是很小的。。
阅读全文
摘要:咕咕了。。。于是借鉴了小粉兔的做法ORZ。。。 其实就是维护最大子段和的线段树,但上面又多了一些操作。。。。QWQ 维护8个信息:1/0的个数(sum),左/右边起1/0的最长长度(ls,rs),整段区间中1/0的连续最长长度(mx)。 于是对于各个操作,我们有了一些tag。。。 tg1[]是区间赋
阅读全文
摘要:这个题扔到A*可也还行。。。 定义估价函数h():为每个数或空格的位置 到 最终状态中所在位置 的 曼哈顿距离 的 总和。 把状态压成一个九进制数,便于存储和判重。 然后记录方案可以记录一下此次的操作和上一次的状态,具体见代码。 安利一篇博文:http://www.cnblogs.com/goodn
阅读全文
摘要:题意是让求从st的ed第k短路。。。 考虑A*算法:先把终点到每个点最短路跑出来(注意要建反图),当做估价函数h(u),然后跑A* 每次取出总代价最小的,即g(u)+h(u)最小的进行扩展,注意如果u被取出的次数c[u]>k,就不再进行扩展了。 当ed被取出且c[ed]==k,那么答案就是此时的g(
阅读全文
摘要:重构一遍就A了。。。但这样效率太低了。。。莫非都要重构???QWQ 每一秒男同志bfs3层,女同志bfs1层。注意扩展状态时,要判一下合不合法再扩展,而不是只判扩展的状态合不合法,否则有可能由非法的走到合法的地方。 2019.04.27
阅读全文
摘要:然而我也不知道这是啥啊。。。反正差不多。。。哪位大佬给区分一下QWQ。。 好的,我把堆的<写反了。。又调了一个小时。。你能不能稳一点。。。。 记录状态:所在位置u,油量c,花费w 扩展状态: 1.如果c+1<=C,就加1升油,为什么只加1升?因为如果这个状态不优,那它就会乖乖待在堆底下,不会多出现冗
阅读全文
摘要:当转移的代价是0和一个分明不同的权值时,可以用双端队列BFS去跑(你跑最短路也没问题。。QWQ) 而对于这道题,边旋转代价是1,不旋转代价是0;可以直接建图最短路,也可以跑BFS 这个题建图很有意思:如果是' \ '就在mp上记录:1,反之 ' / '在上面记录为0 至于如何用:如果一个点在左上,一
阅读全文
摘要:woc累死了写了两个半小时。。。就是BFS?我太菜了。。。 刚开始以为让人预先跑一遍BFS,然后一会儿取两节加起来就好了,结果发现求出来的最短路(就是这个意思)会因箱子的移动而变化。。。。我死了QWQ 康康书上正解:双重BFS?!!让人推箱子的时候再跑一遍BFS?!!时间不就爆炸了?!!啊n,m只有
阅读全文
摘要:多测不清空,爆零两行泪。。。。我死了QWQ 每个节点3个状态:横坐标,纵坐标,和方向 说一下方向:0:立着,1:竖着躺着,上半部分在(x,y),2:横着躺着,左半部分在(x,y) 然后就有了常量数组: 第一维是状态中的方向,第二维是要扩展的方向(0,1,2,3) 然后就搜他。。。。记得queue要清
阅读全文
摘要:双向搜索:把前一半的可行状态搜出来,然后sort+unique,之后搜后一半时,结束时二分一下前一半的答案,拼出一个与W尽量接近的ans来更新 ps:距LYD说前一半取n/2+2时跑的最快。。。不知,,, 2019.04.26
阅读全文

浙公网安备 33010602011771号