随笔分类 -  差分

摘要:/* 自己yy的奇葩做法居然A了23333 不过空间好像很大 时间好像略慢..... 毕竟不是正解 前缀维护sum值 枚举区间起点 然后终点的坐标可以确定在一个范围 可持久化线段树查询区间第1大 然后放到堆里 注意每个从堆里取出来再把这个区间第2大的放进去 这里k可能减成负的 注意特判 开始wa了 还有开longlong */ #include #include #include #incl... 阅读全文
posted @ 2016-09-10 07:56 一入OI深似海 阅读(290) 评论(0) 推荐(0)
摘要:/* 加深一下对查分约束的理解 建图的时候为了保证所有点联通 虚拟一个点 它与所有点相连 权值为0 然后跑SPFA判负环 这题好像要写dfs的SPFA 要不超时 比较懒 改了改重复进队的条件~ */ #include #include #include #include #define maxn 40010 using namespace std; int n,m,num,head[maxn]... 阅读全文
posted @ 2016-09-02 17:38 一入OI深似海 阅读(175) 评论(0) 推荐(0)
摘要:维护差分序列 显然要使差分序列的后n-1位为0 对于原来的区间操作 只需要单点修改或者两个点修改 就转化成了 对于差分序列但以一个数+1 或 -1 或者一个+1同时一个-1 ans1=max(sum1,sum2)sum1=Σbi(bi>0)sum2=absΣ(bi<0) 求方案数的话嘛 也就是不同的b1 只有+1 或 -1的操作才可能影响到b1 这里并不是只有-1才会影响到b1 操作前半段+1和... 阅读全文
posted @ 2016-07-17 07:55 一入OI深似海 阅读(312) 评论(0) 推荐(0)
摘要:/* Ti≤Tj+b意味Ti的最大值为Tj+b; Tj≥Ti-b意味Tj的最大值为Ti-b; 因此,根据题中给出的m个不等式,逐步调整各个Ti的最小值和最大值。 设high[i]为Ti当前的最大值,low[i]为Ti当前的最小值。 high[j]为Tj当前的最大值,low[j]为Tj当前的最小值。 若high[i]-high[j]>b,则high[i]=high[j]+b(根据Ti≤Tj+b),... 阅读全文
posted @ 2016-06-18 21:35 一入OI深似海 阅读(282) 评论(0) 推荐(0)
摘要:/* 二分答案(注意精度) 对于每一个答案 有(s1+s2+s3...)/(t1+t2+t3...)>=ans 时符合条件 这时ans有变大的空间 对于上述不等式如果枚举每一条路显得太暴力 化简一下变成 :s1-t1*ans+s2-t2*ans+s3-t3*ans...>=0 差分约束跑最长路 如果dis[n]>0 或者有正环 (开始这个忘掉了)ans就合法 */ #include #incl... 阅读全文
posted @ 2016-05-29 21:18 一入OI深似海 阅读(249) 评论(0) 推荐(1)
摘要:/* 查分约束. 给出的约束既有>= 又有=x 建边 a到b 权值为x Sb-Sa Sa-Sb>=-y 建边 b到a 权值为-y 然后跑最短路 SPFA 判断到不了终点 判断负环的死循环. */ #include #include #include #include #define maxn 20010 using namespace std; int n,m1,m2,num,head[m... 阅读全文
posted @ 2016-05-13 17:37 一入OI深似海 阅读(174) 评论(0) 推荐(0)
摘要:/* 数组开大保平安. 查分约束: 输入的时候维护st和end 设每个点取元素di个 维护元素个数前缀和s Sbi-Sai-1>=ci 即:建立一条从ai-1到bi的边 权值为ci 表示ai到bi的最小取元素个数 然后跑st到end的最长路 (建边就已经保证了最优) 最后 dis[end] 即为end的前缀和 即为st到end 符合每一个约束的最小去元素值 同时查分约束也满足性质 Sa... 阅读全文
posted @ 2016-05-13 17:03 一入OI深似海 阅读(180) 评论(0) 推荐(0)