洛谷 P3586 [POI2015]LOG】的更多相关文章

P3586 [POI2015]LOG 题目描述 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1,询问能否进行s次操作.每次询问独立,即每次询问不会对序列进行修改. 输入输出格式 输入格式: 第一行包含两个正整数n,m(1<=n,m<=1000000),分别表示序列长度和操作次数.接下来m行为m个操作,其中1<=k,c<=n,0<=a<=10^9,1<…
题意 题目链接 Sol 显然整个序列的形态对询问没什么影响 设权值\(>=s\)的有\(k\)个. 我们可以让这些数每次都被选择 那么剩下的数,假设值为\(a_i\)次,则可以\(a_i\)次被选择 一个显然的思路是每次选最大的C个 那么只需要判断\(\sum a_i >=(c - k)*s\)即可 权值线段树维护一下 #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) make_pa…
题目大意:维护一个集合,支持单点修改.查询小于 X 的数的个数.查询小于 X 的数的和. 题解:学习到了动态开点线段树.对于一棵未经离散化的权值线段树来说,对于静态开点来说,过大的值域会导致不能承受的空间.还可以发现,对于每次修改操作只会涉及一条树链,即:\(O(logn)\) 个节点,因此总共所需的空间为 \(O(mlogn)\).基于以上想法,采用动态开点的操作,即:该节点被修改,则动态地创建这个节点.反之,没有被用到的节点直接忽略掉即可. 代码如下 #include <bits/stdc+…
P3586 [POI2015]LOG 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它们都减去1,询问能否进行s次操作.每次询问独立,即每次询问不会对序列进行修改. 离散化按照权值建立树状数组. 那么对于大于s的值,可以直接减去s,这一部分的贡献为\(c*(query_{geshu}(tot)-query_{geshu}(s-1))\). 剩下的数,我们只知道他们小于s,但是不知道确切的值所以…
题目描述 共有\(m\)部电影,编号为\(1--m\),第\(i\)部电影的好看值为\(w[i]\).在\(n\)天之中(从\(1~n\)编号)每天会放映一部电影,第\(i\)天放映的是第\(f[i]\)部.你可以选择\(l,r(1 \leq l \leq r \leq n)\),并观看第\(l,l+1,-,r\)天内所有的电影.如果同一部电影你观看多于一次,你会感到无聊,于是无法获得这部电影的好看值.所以你希望最大化观看且仅观看过一次的电影的好看值的总和. 输入输出格式 输入格式: 第一行两个…
[题解] 手残写错调了好久QAQ...... 洛谷的数据似乎比较水.. n个正整数!!这很重要 这道题是个类似two pointer的思想,外加一个单调队列维护当前区间内长度为d的子序列中元素之和的最大值. 枚举右端点,如果左端点到右端点的元素和减去区间内长为d的子序列中元素和的最大值,大于给定的P,那么就把左端点向右挪. #include<cstdio> #include<algorithm> #define N 2000010 #define rg register #defi…
题面 sol:说了是线段树优化建图的模板... 就是把一整个区间的点连到一个点上,然后用那个点来连需要连一整个区间的点就可以了,就把边的条数优化成n*log(n)了 #include <queue> #include <cstdio> #include <iostream> using namespace std; ,M=; ,Next[M],to[M],val[M],head[M],cnt=,in1[N],dis[N],a[N],arr[N]; inline void…
Portal Description 给定一个长度为\(n(n\leq10^5)\)的正整数序列\(\{a_n\}\),每个数都在\([1,10^9]\)范围内,告诉你其中\(s\)个数,并给出\(m(m\leq2\times10^5)\)条信息.每条信息包含三个数\(L,R,k(Σk\leq 3\times10^5)\)以及\(k\)个正整数\(\{x_k\}\),表示\(a_L..a_R\)中,任意一个\(x\)均比剩下的\(R-L+1-k\)个数大(严格大于,即没有等号).请任意构造出一组…
P3585 [POI2015]PIE 题目描述 一张n*m的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色.你有一个a*b的印章,有些格子是凸起(会沾上墨水)的.你需要判断能否用这个印章印出纸上的图案.印的过程中需要满足以下要求:(1)印章不可以旋转.(2)不能把墨水印到纸外面.(3)纸上的同一个格子不可以印多次. 输入输出格式 输入格式: 第一行一个整数q(1<=q<=10),表示测试点数量.接下来q个测试点,每个测试点中:第一行包含4个整数n,m,a,b(1<=n,m,a,b&…
题面 传送门 题解 先考虑暴力怎么做,我们把所有\(r-l+1-k\)中的点向\(x\)连有向边,表示\(x\)必须比它们大,那么如果这张图有环显然就无解了,否则的话我们跑一个多源最短路,每个点的\(dis\)就是它的答案 然而这里边数太多了,所以得线段树优化建边 //minamoto #include<bits/stdc++.h> #define R register #define ls (p<<1) #define rs (p<<1|1) #define fp(i…