ICode9

精准搜索请尝试: 精确搜索
  • 洛谷P2305 [NOI2014]购票 [DP,树状数组]2019-07-01 16:52:27

    传送门 思路 显然是树形DP,显然是斜率优化,唯一的问题就是该怎么维护凸包。 套路1:树上斜率优化,在没有这题的路程的限制的情况下,可以维护一个单调栈,每次加入点的时候二分它会加到哪里,然后替换并记录,等从这个点回溯上来的时候再撤销。 套路2:有路程限制时,不能简单替换,因为你可能会替换掉

  • [NOI2014]购票——斜率优化+树链剖分+线段树2019-06-29 17:00:40

    建议到UOJ上去交 题解 一眼\(DP\),先把转移方程写出来 设\(dp[i]\)为从点\(i\)出发到点\(1\)的最小费用,那么存在转移 \[f[i]=min\{f[j]+(d[i]-d[j])p[i]\}+q[i]=min\{f[j]-d[j]p[i]\}+d[i]*p[i]+q[i]\] 这个式子看起来可以斜率优化啊,往下化几步,可以得到类似下面的东西: 若\(d[j] < d[

  • P2375 [NOI2014]动物园 KMP2019-06-15 19:03:06

    好,暴力能拿$50pts\space qwq$   暴力的思路就是一直跳$nxt[j]$,直到它的长度小于串的一半,然后开始计数,当然要接着跳$nxt[j]$ 正解:考虑没有长度要求的(不要求不重合)公共前后缀的数目,显然$ans[i]=ans[j]+1$相当于$i$比$j$是多了$i$它本身。 所以求解时模仿$kmp$的过程,$num[i]$就是一

  • loj2245 [NOI2014]魔法森林2019-06-01 11:51:23

    [NOI2014]魔法森林 链接 loj 思路 a排序,b做动态最小生成树。 把边拆成点就可以了。 uoj98.也许lct复杂度写假了、、越卡常,越慢 代码 #include <bits/stdc++.h> #define ls c[x][0] #define rs c[x][1] using namespace std; const int N = 2e5 + 7; int read() { int x = 0, f

  • UOJ #7 NOI2014购票(点分治+cdq分治+斜率优化+动态规划)2019-05-29 22:00:08

      重写一遍很久以前写过的题。   考虑链上的问题。容易想到设f[i]为i到1的最少购票费用,转移有f[i]=min{f[j]+(dep[i]-dep[j])*p[i]+q[i]} (dep[i]-dep[j]<=l[i])。套路的考虑若j转移优于k(dep[j]>dep[k]),则f[j]-dep[j]*p[i]<f[k]-dep[k]*p[i],f[j]-f[k]<(dep[j]-dep[k])*p[i],(f[j]

  • NOI2014 购票2019-04-15 08:54:06

    各位dalao的解法都好神啊。。。 这里给一种点分治的解法。 题目 链接 思路 首先斜率部分。 转移方程: \(ans[x]=min(-dis[u]*p[x]+ans[u])+dis[x]*p[x]+q[x]\) 发现结果只与\(min()\)框内的部分有关,观察这个形式,发现是个一次函数,也就是说可以斜率优化。 dalao们对于推斜率式子这部分

  • 洛谷P2114 [NOI2014]起床困难综合症2019-03-21 19:48:13

    P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因: 在深邃的太平洋海底中,出现了一条名为drd的巨龙,它掌握

  • 「luogu2387」[NOI2014] 魔法森林2019-03-19 21:49:17

    「luogu2387」[NOI2014] 魔法森林 题目大意 \(n\) 个点 \(m\) 条边的无向图,每条边上有两个权值 \(a,b\),求从 \(1\) 节点到 \(n\) 节点 \(max\{a\}+max\{b\}\) 的最小值。图中可能有重边和自环。\((n \leq 5 \times 10^4 , m \leq 10^5)\) 一句话题解 考虑生成树 ( 过程类似 \(krusk

  • luogu2375[NOI2014]2019-03-18 12:53:04

    \(problem\) 其中,\(next[i],next[next[i]],next[next[next[i]]]......\)都是这个前缀串i的公共前后缀,而且只有它们是公共前后缀 那么,我们其实只要在求next的过程中,顺便把这个公共前后缀的数量递推一下,就得到了一个弱化版的num数组:可以重叠的公共前后缀数量,我们称之为ans 如何去

  • [NOI2014]起床困难综合征2019-03-09 08:48:33

    Description: 有n扇门,每扇门上有一个位运算符(&,|,^) 和一个权值,要求合理的选择一个不超过m的数,使其按顺序经过这些门的运算后最大 Hint: \(n \le 10^5\) Solution: 考虑拆位,分别令每一位一开始是0/1,经过运算后得到的是什么 然后从高位贪心,若运算后为1,则考虑选对应开始时这

  • [BZOJ3670/Luogu2375][NOI2014]动物园2019-03-04 19:37:30

    题目链接: BZOJ3670 Luogu2375 首先考虑可以重叠的个数怎么求 在\(KMP\)时顺便递推一下即可(\(f[1]=1,f[i]=f[Next[i]]+1\)) 那么怎么去掉重叠的呢? 对于一个\(i\),另\(j=Next[Next[...Next[i]]]\),直到\(j\)不超过\(i\)的一半,那么\(f[j]\)就是答案。 怎么优化这个过程? 类似\(KMP\)的思想

  • [Noi2014]购票 斜率优化DP+可持久化凸包2019-02-24 10:53:22

    貌似网上大部分题解都是CDQ分治+点分治然后再斜率优化DP,我貌似并没有用这个方法。 这一题跟这题有点像,只不过多了一个l的限制 如果说直接跑斜率优化DP,存储整个序列的话,显然是不行的,如图所示(图鸣谢某巨佬)   所以我们需要种一棵线段树,每个线段树内存储一个存当前区间凸包的单调栈,弹

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有