摘要: 设f[i]是第i天能获得的最大钱数,那么 f[i]=max{在第j天用f[j]的钱买,然后在第i天卖得到的钱,f[i-1]} 然后解一解方程什么的,设$x[j]=\frac{F[j]}{A[j]*Rate[j]+B[j]}$,$y[j]=Rate[j]*x[j]$的话,就能得到$f[i]=max\{ 阅读全文
posted @ 2018-09-02 19:11 Ressed 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 先膜黑科技讲义 - Magolor orz 基础 设lowbit(x)表示的是把x的二进制只留下最低一位的1,然后lowbit(x)=x&(-x) (我也不知道为什么) 设c[x]表示从i往前一共lowbit(x)个数的和,那么x-lowbit(x)就是c[x]表示的范围的前一个数。 然后可以得到c 阅读全文
posted @ 2018-08-25 22:20 Ressed 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 设f[i]是已经走到i号点的值。 先要给第四维离散化、然后去重 第一维排序,第二维cdq分治,第三维cdq分治,第四维树状数组,找到满足j(x,y,z,w)<=i(x,y,z,w)的j,给i统计答案就可以。 然后在做的时候可以直接统计左区间内部答案、统计左区间给右区间造成的答案,但是一定要在这两个做 阅读全文
posted @ 2018-08-25 22:15 Ressed 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 求三维偏序 设三维为a,b,c。先对a排序,这样i的偏序就只能<i。 然而排序的时候需要三个维度都判断一遍,最后还要去重,不然会出现实际应该记答案的数出现在它后面的情况。 (排序用的函数里不要写类似于<=之类的东西啊..会出奇奇怪怪的问题的(RE)) 然后分治来做,我们在做区间[l,r]的时候,先去 阅读全文
posted @ 2018-08-25 11:19 Ressed 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 不会lct,所以只能树剖乱搞 一般这种删边的题都是离线倒着做,变成加边 他要求的结果其实就是缩点以后两点间的距离。 然后先根据最后剩下的边随便做出一个生成树,然后假装把剩下的边当成加边操作以后处理 这样的话,就可以做树剖来维护现在的两点间距离。 然后考虑加边,其实就是加了一条边然后某一处成环了,缩成 阅读全文
posted @ 2018-08-16 11:22 Ressed 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题面欺诈系列... 因为一个点最多只能连到前k个点,所以只有当前的连续k个点的连通情况是对接下来的求解有用的 那么就可以计算k个点的所有连通情况,dfs以下发现k=5的时候有52种。 我们把它们用类似于并查集的方式表达(比如12132代表点1和点3连通,2和5连通,3自己),然后再压缩一下。 但要注 阅读全文
posted @ 2018-08-11 21:08 Ressed 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 构造方法肯定是把相邻两个点连到一起,变成一个新点,然后再把新点和别的点连到一起.... 设f[i,j]为把第i到j个点都连到一起的代价,那么答案就是f[1,n] f[i,j]=min{f[i,k]+f[k+1,j]+x[k+1]-x[i]+y[k]-y[j]} (画一画就知道了) 然后显然满足四边形 阅读全文
posted @ 2018-08-10 21:39 Ressed 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 推出来式子以后斜率优化水过去就完事了 阅读全文
posted @ 2018-08-10 21:28 Ressed 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 推出来式子然后斜率优化水过去就完事了 阅读全文
posted @ 2018-08-10 21:25 Ressed 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题意:N*M的矩阵,矩阵中有一些坏格子,要在好格子里铺2*3或3*2的地砖,问最多能铺多少个。 我的方法好像和网上流传的方法不太一样...不管了.... 由数据范围很容易想到状压dp 我们设某个状态的某一位表示这个格是某种地砖的左上角 那么就会有三种状态,理论上应该用三进制来存储,但我哪会三进制用位 阅读全文
posted @ 2018-08-10 21:20 Ressed 阅读(200) 评论(0) 推荐(0) 编辑