正题

题目链接:https://www.luogu.com.cn/problem/P3168


题目大意

nnn个任务(si,ei,ti)(s_i,e_i,t_i)(si​,ei​,ti​)表示从si∼eis_i\sim e_isi​∼ei​的任务优先级为tit_iti​。

然后每次询问一个时刻前kkk小的优先级任务优先级和。


解题思路

开主席树,在sis_isi​处让tit_iti​加一,ei+1e_i+1ei​+1处让tit_iti​减一。

然后直接查询,需要注意的是查询到最后一个时不能直接返回sumxsum_xsumx​,因为需要返回的是前kkk的和。

时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define ll long long
using namespace std;
const ll N=1e5+10,inf=1e7;
ll n,m,cnt,rt[N];
ll w[N<<7],ls[N<<7],rs[N<<7],sum[N<<7];
vector<int> q[N];
ll Change(ll &x,ll l,ll r,ll pos,ll val){ll now=++cnt;w[now]=w[x]+val;sum[now]=sum[x]+val*pos;if(l==r)return now; ll mid=(l+r)>>1;if(pos<=mid)ls[now]=Change(ls[x],l,mid,pos,val),rs[now]=rs[x];else ls[now]=ls[x],rs[now]=Change(rs[x],mid+1,r,pos,val);return now;
}
ll Ask(ll x,ll l,ll r,ll k){if(w[x]<=0)return 0;if(l==r)return k*l;ll mid=(l+r)>>1;if(k<=w[ls[x]])return Ask(ls[x],l,mid,k);return Ask(rs[x],mid+1,r,k-w[ls[x]])+sum[ls[x]];
}
int main()
{//  printf("%d",sizeof(sum)/1024/1024);scanf("%lld%lld",&n,&m);for(ll i=1;i<=n;i++){ll l,r,w; scanf("%lld%lld%lld",&l,&r,&w);q[l].push_back(w); q[r+1].push_back(-w);}for(ll i=1;i<=1e5;i++){if(q[i].empty()) rt[i]=rt[i-1];else rt[i]=Change(rt[i-1],1,inf,abs(q[i][0]),(q[i][0]>0)?1:-1);for(ll j=1;j<q[i].size();j++)rt[i]=Change(rt[i],1,inf,abs(q[i][j]),(q[i][j]>0)?1:-1);}ll last=1;for(ll i=1;i<=m;i++){ll w,x,y,z;scanf("%lld%lld%lld%lld",&w,&x,&y,&z);x=1+(x*last+y)%z;printf("%lld\n",last=Ask(rt[w],1,inf,x));}return 0;
}

P3168-[CQOI2015]任务查询系统【主席树】相关推荐

  1. 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]

    题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...

  2. P3168 [CQOI2015]任务查询系统 主席树 + 差分

    传送门 题意: 思路: 题目中(si,ei,pi)(s_i,e_i,p_i)(si​,ei​,pi​)转换成操作即为在[si,ei][s_i,e_i][si​,ei​]区间内加上pip_ipi​的优先 ...

  3. 【BZOJ3932】[CQOI2015]任务查询系统 主席树

    [BZOJ3932][CQOI2015]任务查询系统 Description 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的 任务用三元组(Si, ...

  4. Bzoj 3932: [CQOI2015]任务查询系统(主席树)

    3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec Memory Limit: 512 MB Description 最近实验室正在为其管理的超级计算机编制一套任务管理 ...

  5. P3168 [CQOI2015]任务查询系统 差分+主席树

    链接在这~:https://www.luogu.org/problem/P3168 主席静态区间修改,单点查询 区间(L,R)加1可以通过差分以后转换为L位置加1,R+1位置减1 我们只需要记录一下, ...

  6. ●洛谷P3168 [CQOI2015]任务查询系统

    题链: https://www.luogu.org/problemnew/show/P3168 题解: 主席树 强制在线? 那就直接对每一个前缀时间建一个线段树(可持久化线段树),线段树维护优先度权值 ...

  7. [CQOI2015]任务查询系统(差分+主席树)

    链接:https://ac.nowcoder.com/acm/problem/19936 来源:牛客网 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分. ...

  8. [BZOJ3932][CQOI2015]任务查询系统(差分+主席树)

    题面 分析 对于一个区间修改(s,e,v),我们可以将它差分,这样就变成了单点修改s和e+1(s插入,t+1删除) 我们用主席树维护差分数组的前缀和,第i棵主席树维护区间[1,i]之间的所有差分值 那 ...

  9. [CQOI2015]任务查询系统

    题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...

  10. CQOI2015 任务查询系统

    传送门 又是一句经常见到的话--做完这题对主席树的理解会更好一些-- 这道题把普通的主席树单点修改区间查询改成了区间修改单点查询.这个的话我们可以改成差分解决--把一个操作改成两个,然后把所有操作按照 ...

最新文章

  1. Redis进阶-Redis缓存优化
  2. Hive更换TEZ引擎
  3. python每隔半个小时执行一次_一篇文章教你用Python抓取微博评论
  4. saltstack(三) --- salt-httpapi
  5. Hadoop生态圈-Ambari控制台功能简介
  6. 你代码里的 ThreadLocalRandom,真的安全吗?
  7. iOS基本UI元素示例教程
  8. Spark On Hive配置
  9. uboot 之环境变量
  10. HTML5 Form Data 对象的使用
  11. 我的世界服务器怎么修改名称,我的世界端游怎么改名字
  12. 柯洁预言AI绘画会替代大部分画师,网友:初代AI受害者现身说法
  13. Global Illumination_Lens Flare(镜头光晕)
  14. party_bid_core三种数据结构总结
  15. 遇见未来 | 对话朱贤文:PostgreSQL是一匹即将发力的黑马
  16. 立足中国、跻身全球头部代工厂行列,华虹加速蜕变升级
  17. 有关channel的相关知识(2)
  18. 信息图表设计入门_50信息量和精心设计的信息图表
  19. 怎么隐藏回收站?3个方法轻松隐藏回收站!
  20. html地球仪代码,HTML5 旋转的变色球(地球仪)

热门文章

  1. linux命令clock,简单了解Linux系统中clock命令的使用方法
  2. oracle cpu 100%原因,oracle 12.1 cpu 100%
  3. php mysql 执行sql文件_PHP执行SQL文件并将SQL文件导入到数据库_PHP
  4. 服务器抽屉式维护,一种服务器用可顺序运动的滑轨
  5. linux删除grid数据文件,MongoDB进阶系列(13)——GridFS大文件的添加、获取、查看、删除...
  6. html图片分开,webpack单独分离打包css,css里引用的图片路径错误,怎么解决?
  7. gbdt 算法比随机森林容易_随机森林与GBDT
  8. 算法题目——Problem A 二进制(北邮机试)
  9. 算法设计与分析——回溯法——圆排列问题
  10. leetcode--912--排序数组