
优化
gmh77
这个作者很懒,什么都没留下…
展开
-
多重背包的二进制优化
例如: 当前有一种物品件数为100 那么100=1+2+4+8+16+32+37 所以可以把背包分成以上7个小背包,然后做一次01背包。原理: 根据二进制的性质,可以知道1 2 4 8 16 32可以构成1~63间任意的一个数, 那么再加上37,就变成38~100间的数, 和原来的1~63一合并,就变成1~100了。原创 2017-06-02 19:22:16 · 443 阅读 · 0 评论 -
jzoj3233. 照片(差分约束+dijkstra堆优化+spfa)
题目描述DescriptionFarmer John决定为他的N头排列好的奶牛(1 <= N<= 200,000)做一张全景合照。这N头奶牛分别以1…N进行编号。他一共拍了M(1<= M <=100,000)张相片,每张相片都只包含有一部分位置连续的奶牛:第i张照片涵盖着编号从a_i到b_i的所有奶牛。当然,这些照片合起来并不保证包含所有的牛。Farmer John拍...原创 2019-07-11 22:37:39 · 215 阅读 · 0 评论 -
jzoj3658. 【NOI2014模拟】文本编辑器(editor)
题目描述DescriptionInputOutput对于每个询问输出一个字符表示答案。Sample Input9I 0 oI 0 rI 0 zR 1 3Q 1D 1 1Q 1C 2 2 0Q 1Sample OutputorzData Constraint题解因为有复制操作,所以要用可持久化平衡树来搞其它操作相同,复制操作时先复制根,然后取出要复制的...原创 2018-10-06 19:08:59 · 326 阅读 · 1 评论 -
jzoj2921. 【NOI2012模拟题】字符串识别(string) & jzoj4372. 【GDOI2016模拟】识别子串 (SAM优化)
题目描述(其实两道题就是数据范围不一样) Description XX 在进行字符串研究的时候,遇到了一个十分棘手的问题。在这个问题中,给定一个字符串 S,与一个整数 K,定义 S 的子串 T=S(i, j)是关于第 K 位的识别子串,满足以下两个条件:1、i≤K≤j。2、子串 T 只在 S 中出现过一次。例如,S=”banana”,K=5,则关于第 K 位的识别子串有”nan...原创 2018-07-19 22:57:54 · 446 阅读 · 0 评论 -
JZOJ2199. 【中山市选2010】股票投资
一道看似很难的DP原创 2018-01-10 19:10:09 · 285 阅读 · 0 评论 -
JZOJ4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰
题目Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空。 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量——核能。 核焰,可融真金。咳咳。 每次核融的时候,空都会选取一些原子,排成一列。然后,她会将原子序列分成一些段,并将每段进行一次核融。 一个原子有两个属性:质子数和中子数。 每一段需要满足以下条件: 1、同种元素会发生相互排斥,因此,同一段中不能原创 2017-10-18 20:24:32 · 499 阅读 · 0 评论 -
高中OJ3494. 【NOIP2013模拟联考13】线段(segment)
题目描述Description 数轴上有很多单位线段,一开始时所有单位线段的权值都是1。有两种操作,第一种操作将某一区间内的单位线段权值乘以w,第二种操作将某一区间内的单位线段权值取w次幂。并且你还需要回答一些询问,每个询问需要求出某一区间的单位线段权值之积。由于答案可能很大,你只需要求出答案 mod (10^9+7)的值。 说明:n个点只有n-1条线段。Input 第一行一个整数n,表示操作原创 2017-10-07 17:01:51 · 369 阅读 · 1 评论 -
关于最长不下降子序列的优化
概念有长度为N的序列: A1 A2 …..An 求最长不下降子序列:Ai1,Ai2,,,,,Aik, 其中ai1<=ai2<=…..<=aik 求最长不下降子序列的长度O(N^2)最容易想到的方法,设F[i]表示以第i位为结尾时最长不下降子序列的长度。 F[i]=max(F[j])+1 (a[i]>=a[j])代码var a:array[1..100] of longint;原创 2017-02-11 21:06:24 · 828 阅读 · 0 评论 -
等比数列求和
随便口胡原创 2017-09-06 19:13:09 · 983 阅读 · 0 评论 -
组合数的性质&证明
组合数原创 2017-08-06 18:15:46 · 5081 阅读 · 0 评论 -
斜率优化(待更)
前言有些DP的式子可以化成像 f[i]=max(f[j]+a[j])之类的式子。 这样可以用单调队列(如果没有特殊条件,可以直接维护最大值)解决。但是有一些题目可能会出现f[i]=max(f[j]+a[j]*a[i])的情况。 这样单调队列的性质会随着i的改变而改变。原创 2017-08-11 22:10:49 · 195 阅读 · 0 评论 -
线性筛法(欧拉筛)
欧拉筛的使用方法原创 2017-08-19 16:07:38 · 510 阅读 · 1 评论 -
高中OJ3515. 【NOIP2013模拟11.6B组】软件公司
首先想到DP。 设F[i,j]表示第一项工作做了i次,第二项工作做了j次时的最小时间。 枚举一重表示当前到那个人,两重表示当前状态,两重表示上一个人时的状态。 O(m^4n)。。。这样设肯定不行。 因为有两个状态+一个时间共三个量,所以可以想到通过二分时间,枚举一个量来算另一个量。 设F[i,j]表示一直到第i个人,第一项工作一共做了j次时第二项工作能做的最大次数。 设t表示二分的时间。原创 2017-02-11 16:03:20 · 373 阅读 · 0 评论 -
初中OJ1599. 【GDKOI2004】香樟树
这道题有些难度,分享一下解题方法。 题目:https://jzoj.net/junior/#main/show/159960分:简单的DP。设F[i]表示到一直第i棵树时选出的树数量的最大值。 F[i]=max(F[j]) (gcd(a[i],a[j])>1)100分:用DP会超时。两个数不互质,就说明这两个数有相同的质因子。 而每棵树的叶子个数<=100000,而2*3*5*7*11*1原创 2017-02-11 21:52:40 · 598 阅读 · 0 评论 -
【USACO题库】3.4.3 Electric Fence电网
经过观察可以发现,坐标x,y只保留了一位小数。 所以可以直接把坐标系放大10倍,找出结果最小的点,再把该点的x,y坐标除以10。 但是因为放大后再枚举可能会超时,所以要修改一下算法。先通过枚举原坐标系,找出结果最小的点。 那么答案一定在该点附近。 于是选定一块以该点为中心,边长为2的正方形,把里面的坐标扩大10倍再找。 这样可以少很多枚举次数。关于如何计算距离比如这样: 那么距离就是原创 2017-03-29 19:50:18 · 670 阅读 · 0 评论 -
jzoj1931. 神奇的K线
题目描述Description 小明爱上了炒股。经过近段时间的观察和整理,他发现了如果一个股票出现了某种形态的k线,那么这个股票不久之后一定会大涨。小明想利用这种神奇的k线来做一个股票软件。他将一条k线用整数序列a来表示,并规定当且仅当a[i+1]-a[i]=p[i]时,这条k线是一条神奇的k线。但是事情总不是一帆风顺的,小明发现许多k线不是神奇的,但之后也能大涨。不过他发现这些k线都和神奇...原创 2019-08-14 12:10:10 · 259 阅读 · 0 评论