202012-5 星际旅行

2024-04-14 16:38
文章标签 旅行 星际 202012

本文主要是介绍202012-5 星际旅行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

202012-5 星际旅行

80分做法,因为N太大了,太菜的我不知道如何处理
我的方法: x , y , z x,y,z x,y,z轴分别开一颗线段树,然后就套用线段树,区间加,区间乘,然后这里有个线段树互相交换节点,需要先全部pushdown之后再交换,交换完成之后还要pushup

//80分做法
#include <stdio.h>
#include <iostream>
#include <queue>
#include <map>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
typedef long long ll;
const ll maxn = 1e6+10;ll N,M;
const ll mod = 1e9 + 7;
struct node{ll l,r,lson,rson;ll add,mul,sum;
}tr[maxn*4];ll idx;
ll rtx,rty,rtz;
struct Seg{void pushup(node &U,node& L,node& R){U.sum = (L.sum + R.sum)%mod;}ll build(ll l,ll r){tr[++idx] = {l,r,-1,-1,0,1,0};ll id = idx;if(l == r){return idx;}else{ll mid = (l+r)>>1;tr[id].lson = build(l,mid);tr[id].rson = build(mid+1,r);pushup(tr[id],tr[tr[id].l],tr[tr[id].r]);}return id;}void pushdown(node &U,node &L,node &R){L.sum = (L.sum * U.mul%mod + (L.r - L.l + 1) * U.add%mod) %mod;R.sum = (R.sum * U.mul%mod + (R.r - R.l + 1) * U.add%mod) %mod;L.add = (L.add * U.mul %mod + U.add)%mod;R.add = (R.add * U.mul %mod + U.add)%mod;L.mul = (L.mul * U.mul)%mod;R.mul = (R.mul * U.mul)%mod;U.add = 0;U.mul = 1;}void add(ll u,ll l,ll r,ll v){if(l <= tr[u].l && tr[u].r <= r){tr[u].sum = (tr[u].sum + v * (tr[u].r-tr[u].l+1)%mod) %mod;tr[u].add = (tr[u].add + v )%mod;}else{pushdown(tr[u],tr[tr[u].lson],tr[tr[u].rson]);ll mid = (tr[u].l + tr[u].r)>>1;if(l <= mid) add(tr[u].lson,l,r,v);if(r > mid) add(tr[u].rson,l,r,v);pushup(tr[u],tr[tr[u].lson],tr[tr[u].rson]);}}void mul(ll u,ll l,ll r,ll v){if(l<= tr[u].l && tr[u].r <= r){tr[u].sum = (tr[u].sum * v)%mod;tr[u].mul = (tr[u].mul * v)%mod;tr[u].add = (tr[u].add * v)%mod;}else{pushdown(tr[u],tr[tr[u].lson],tr[tr[u].rson]);ll mid = (tr[u].l + tr[u].r)>>1;if(l<=mid) mul(tr[u].lson,l,r,v);if(r>mid) mul(tr[u].rson,l,r,v);pushup(tr[u],tr[tr[u].lson],tr[tr[u].rson]);}}node query(ll u,ll l,ll r){if(l <= tr[u].l && tr[u].r <= r){return tr[u];}else{pushdown(tr[u],tr[tr[u].lson],tr[tr[u].rson]);ll mid = (tr[u].l + tr[u].r)>>1;if(r<=mid) return query(tr[u].lson,l,r);else if(l>mid) return query(tr[u].rson,l,r);else{node ans1 = query(tr[u].lson,l,r);node ans2 = query(tr[u].rson,l,r);node ans;pushup(ans,ans1,ans2);return ans;}}}void find(vector<ll> &ve,ll u,ll l,ll r){if(l<= tr[u].l && tr[u].r <= r){ve.push_back(u);}else{pushdown(tr[u],tr[tr[u].lson],tr[tr[u].rson]);ll mid = (tr[u].l+tr[u].r)>>1;if(l<=mid) find(ve,tr[u].lson,l,r);if(r>mid) find(ve,tr[u].rson,l,r);pushup(tr[u],tr[tr[u].lson],tr[tr[u].rson]);}}void change(ll l,ll r){vector<ll> vex,vey,vez;find(vex,rtx,l,r);find(vey,rty,l,r);find(vez,rtz,l,r);for(ll i = 0;i<vex.size();i++){ll x = vex[i],y = vey[i],z = vez[i];swap(tr[x],tr[z]);swap(tr[x],tr[y]);}find(vex,rtx,l,r);find(vey,rty,l,r);find(vez,rtz,l,r);}
}seg;int main(){cin>>N>>M;rtx = seg.build(1,N);rty = seg.build(1,N);rtz = seg.build(1,N);while(M--){ll op,l,r;scanf("%lld %lld %lld",&op,&l,&r);if(op == 1){ll a,b,c;scanf("%lld %lld %lld",&a,&b,&c);seg.add(rtx,l,r,a);seg.add(rty,l,r,b);seg.add(rtz,l,r,c);}if(op == 2){ll k;scanf("%lld",&k);seg.mul(rtx,l,r,k);seg.mul(rty,l,r,k);seg.mul(rtz,l,r,k);}if(op == 3){seg.change(l,r);}if(op == 4){ll sumx = seg.query(rtx,l,r).sum; \\cout<<sumx<<'\n';ll sumy = seg.query(rty,l,r).sum; \\cout<<sumy<<'\n';ll sumz = seg.query(rtz,l,r).sum; \\cout<<sumz<<'\n';printf("%lld\n",(sumx*sumx%mod + sumy*sumy%mod + sumz*sumz%mod)%mod);}}return 0;
}

这篇关于202012-5 星际旅行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/903489

相关文章

《战锤40K:星际战士2》超越《黑神话》 登Steam热销榜首

《使命召唤:黑色行动6》将登陆 PC Game Pass看来确实影响了销量,因为这次在 Steam 上它的预购并没有占领 Steam 热销榜单之首。这次霸榜的则是即将推出的《战锤40K:星际战士2》。 根据 SteamDB 显示,这部将于9 月 10 日发售的游戏已经面向预购了高级版本的玩家开放了抢先体验,也因此推动了大量的预购销量。该游戏不仅是目前 Steam 上预购最多的游戏,而且还是总体

社交平台找旅游搭子一起旅行靠谱吗?答案是不要太爽!

哈喽小伙伴们,今天要跟大家分享一个超级棒的小程序——咕哇找搭子!作为一个热爱自由行的人,最头疼的就是找不到志同道合的小伙伴。但自从用了这个咕哇小程序后,一切都变得简单又充满乐趣啦!🎉 上个月,我计划去云南旅行,就试着在咕哇上发布了我的行程信息。没想到很快就收到了几位朋友的回应,其中一位叫小莲的朋友特别投缘。我们不仅目的地一样,就连兴趣爱好都出奇地相似,于是我们就决定一起出发啦!👭

旅行商问题 | Matlab基于混合粒子群算法GA-PSO的旅行商问题TSP

目录 效果一览基本介绍建模步骤程序设计参考资料 效果一览 基本介绍 混合粒子群算法GA-PSO是一种结合了遗传算法(Genetic Algorithm, GA)和粒子群优化算法(Particle Swarm Optimization, PSO)的优化算法。在解决旅行商问题(Traveling Salesman Problem, TSP)时,这种混合算法可以结合两种算法的优点

P4842 城市旅行(拆贡献 + LCT)

https://www.luogu.com.cn/problem/P4842 发现题目就是要维护一个LCT,然后我们只要把pushup写成功了就行。 那我们现在就不管LCT了,就单纯想用一棵二叉查找树怎么维护。分母是好搞的,分子我们要想点办法。 考虑右子树对左子树的贡献,我们假设处理出一个 L [ k ] L[k] L[k] 表示左子树中每个值乘以左边界的可选数量,我们现在再乘上右子树的大

P3313 [SDOI2014] 旅行(分块做法)

~~~~~      P3313 [SDOI2014] 旅行 ~~~~~      总题单链接 思路 ~~~~~      遇到这种树上路径问题,就考虑用重链剖分转为区间问题。 ~~~~~      问题转换为了:给定一个区间和 k k k,求这个区间内信仰为 k k k 的城市的 权值和 或 最大权值。 ~~~~~      这个问题也可以用动态开点线段树解决(现在不会,以后

海力士A-DIE颗粒内存条震撼发布:毁灭者星际战舰DDR5内存条登场

**海力士A-DIE颗粒内存条震撼发布:毁灭者星际战舰内存条登场** 近日,海力士正式发布了全新一代A-DIE颗粒内存条——毁灭者星际战舰DDR5 7200RGB电竞内存条。这款内存条凭借其卓越的性能和先进的技术,成为数码爱好者关注的焦点。 导语: 海力士在内存领域一直保持着领先地位,此次发布的毁灭者星际战舰内存条,更是其技术创新的结晶。该产品采用了最新的A-DIE颗粒技术,旨在

旅行追踪和行程规划工具AdventureLog

什么是 AdventureLog ? AdventureLog 是一种记录您的旅行并与世界分享的简单方法。您可以在日志中添加照片、笔记等。跟踪您访问过的国家、探索去过的地区和地方。您还可以查看您的旅行统计数据和里程碑。AdventureLog 旨在成为您终极的旅行伴侣,帮助您记录您的冒险经历并轻松规划新的冒险经历。 主要功能: 使用姓名、日期、地点、描述和评级等字段记录过去的冒险经

【CSP:202012-2】期末预测之最佳阈值(Java)

题目链接 202012-2 期末预测之最佳阈值 题目描述 求解思路 前缀和 根据题意我们可以得知: θ θ θ 值为 a[i].y 时的预测正确的次数等于 a[i].y 前面有多少个 result = 0 以及后面有多少个result = 1。定义Score类用来存储y和result,其中sum0表示a[1]到a[i]有多少个result = 0,sum1表示a[1]到a[i]

PHP指尖上的旅行管家手边酒店民宿预订系统小程序源码

指尖上的旅行管家——手边酒店民宿预订系统🌟🛫 🚀 开篇:旅行新伴侣,轻松启程 每次计划旅行,是不是都曾为找酒店、订民宿而头疼不已?🤔 繁琐的搜索、对比、预订流程,让美好的旅程还没开始就有点疲惫了呢。但现在,有了“手边酒店民宿预订系统”,一切都变得不一样了!🎉 它就像是你指尖上的旅行管家,随时待命,为你打造无忧的出行体验。 📱 一键操作,全球住宿尽在掌握 只需轻轻一点,手

1570C 旅行

题目描述 Tom和Alice结婚一段时间了,感情非常好,一天他们相约去旅行,终点在遥远的地方。        地形是非常复杂的,路途是非常曲折的。但我们简化一下是一个矩阵。起点也就是他们家在矩阵的左下角,终点也就是他们要去的遥远的地方在右上角,矩阵行列的交点是他们可以驻足的地方,但是有的却是陷阱,他们是不能从那里通过的。Tom要听Alice的,只会往上或往右走,不往回走,直到终点。