Soda Machine【差分+离散化】】的更多相关文章

[usaco2010 Oct]Soda Machine Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 266  Solved: 182[Submit][Status][Discuss] Description To meet the ever-growing demands of his N (1 <= N <= 50,000) cows, Farmer John has bought them a new soda machine. He wa…
题目描述 有N个人要去膜拜JZ,他们不知道JZ会出现在哪里,因此每个人有一个活动范围,只要JZ出现在这个范围内就能被膜拜, 伟大的JZ当然希望膜拜他的人越多越好,但是JZ不能分身,因此只能选择一个位置出现,他最多可以被多少人膜拜呢, 这个简单的问题JZ当然交给你了 输入格式 Line 1: A single integer: N (1 <= N <= 50,000) Lines 2..N+1: Line i+1 contains two space-separated integers: A_…
题目链接:https://ac.nowcoder.com/acm/contest/1106/A 题目大意: 1.一条长1e9的线段,每个节点都可以上色.给出n次操作,每次操作将[l, r]区间内的节点染一次色.问最后染色次数的最大值是多少. 题解思路: 1.首先想到暴力,即遍历每个区间+1,对最终结果遍历一遍找最大值,但是1e9的长度一定超时. 2.解决超时就得缩小遍历长度,由于每个区间都是连续的,那么我们可以通过记录端点来达到记录区间同样的效果.即利用差分数组.A的差分数组B:第i位的值表示A…
假如矩阵范围小一点就可以直接用二维树状数组维护. 这道题,  差分答案, 然后一维排序, 另一维离散化然后树状数组维护就OK了. ------------------------------------------------------------------------ #include<cstdio> #include<cstring> #include<algorithm>   using namespace std;   #define lowbit(x) (…
传送门 看到这个题有个很暴力的想法, 可以每一个时间点都建一颗主席树,主席树上叶子节点 i 表示优先级为 i 的任务有多少个. 当 x 到 y 有个优先级为 k 的任务时,循环 x 到 y 的每个点,都插入一个 k. 当然这样肯定完蛋. x 到 y 插入一个优先级为 k 的任务? 想到差分,给时间点为 x 的主席树插入 k,给时间点为 y + 1 的主席树插入 -k. 那么求一个树状数组的前缀和就好了. 前缀和? 用树状数组优化. 这样就可以用 树状数组 套 主席树 来做. ——代码 #incl…
这题.....队里都没怎么训练差分,导致败北...写了一堆线段树嘤嘤嘤,到最后也是超时,比赛结束后看到了差分的思想于是就去学了一手. 其实了解差分思想的一眼就能看出来是差分了.但是如果对n差分的话很明显会T呢,所以我们考虑从m组询问入手. 要不我先讲一下我目前了解的差分吧. 直白说的话,差分就是用一个差分数组mark保存val[i] - val[i - 1]的值,然后利用差分的性质就可以很方便的解决一类问题. 先说一个差分的性质.差分数组的前 i 项和就是原数组元素val[i],这个想一下想不出…
BIT+离散化. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 200050 using namespace std; ,x[maxn],y[maxn],ha[maxn],cnt=; int lowbit(int x) {return (x&(-x));} void add(int x,int val) { for (int…
n<=50000个区间,求哪个点被覆盖区间数量最多,输出这个数量. 差分模板..然而数组忘开两倍.. #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> #include<queue> //#include<iostream> using namespace std; int n; #define maxn 100011 stru…
[题意概述] 给出一个[0,1,000,000,000]的整数数轴,刚开始每个位置都为0,有n个区间加操作,最后询问数轴上最大的数是多少. [题解] 我写的是离散化后线段树维护区间最值. 其实貌似不用线段树QAQ... #include<cstdio> #include<algorithm> #define N 400010 #define rg register #define ls (u<<1) #define rs (u<<1|1) #define m…
题目 P3028 [USACO10OCT]汽水机Soda Machine 解析 差分,看到\(a[i]\leq 1e9\),离散化一下,在\(l\)处\(+1\),\(r+1\)处\(-1\),这样就只有\(2n\)个点了,再按位置排一下序,扫一遍记录答案就可以了. 需要注意的是,如果在某个位置既有\(+1\)操作又有\(-1\)操作,要先\(-1\)再\(+1\),否则在统计答案的时候会多算 强化版 代码 #include <bits/stdc++.h> using namespace st…