CCF202012-5 星际旅行线段树(100分题解链接)
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF202012-5 星际旅行线段树(100分题解链接)相关的知识,希望对你有一定的参考价值。
试题编号: 202012-5
试题名称: 星际旅行
时间限制: 3.0s
内存限制: 512.0MB
问题描述:
题目描述
乔帝要规划一次星际旅行,星际空间可以视为一个3维坐标系,乔帝有n(n≤1,000,000,000)个动力装置排成一行(下标从1到n)。
第i个动力装置可以让他的飞船3个维度的坐标分别增加xi,yi,zi。一开始这些动力装置的所有参数都是0。
在规划过程中,乔帝可能会对动力装置进行调整,也可能会对一些动力装置的动力进行评估。
具体来说,乔帝会进行m(m≤40000)次操作,每次操作可能是以下四种操作之一:
·动力增加:指定一个区间[L,R]和三个参数a,b,c,令区间内所有动力装置的3维坐标分别增加a,b,c
·动力强化:指定一个区间[L,R]和一个参数k,令区间内所有动力装置的3维坐标分别乘k
·动力转向:指定一个区间[L,R],令区间内所有动力装置的x,y,z坐标分别变为原来的y坐标,z坐标,x坐标
·动力查询:指定一个区间[L,R],询问如果使用区间内所有动力装置各一次能将乔帝送到离起点多远的地方(输出距离的平方除以1,000,000,007的余数)
输入格式
从标准输入读入数据。
第一行包含两个正整数n,m。
接下来m行,每行用若干个空格分隔的整数表示一个操作。
每行的第一个整数表示这次进行的是哪一种操作,1,2,3,4分别表示动力增加、动力强化、动力转向、动力查询。
每行的接下来两个整数表示L,R,含义如上面所述。
每行接下来若干个整数,根据操作类型确定,为a,b,c或k或空。
输出格式
输出到标准输出。
对于每个动力查询操作,输出一行,包含一个整数,表示查询的答案。
样例1输入
5 5
1 2 4 5 6 7
3 5 5
2 1 2 4
4 1 3
4 2 5
样例1输出
2750
3960
样例1解释
一共有5个动力装置。
对于第1个操作,令第2,3,4个动力装置的动力变为(5,6,7)。
对于第2个操作,令第5个动力装置转向,为(0,0,0)。
对于第3个操作,令第1,2个动力装置变为原来的4倍,第一个变为(0,0,0),第二个变为(20,24,28)。
对于第4个操作,是查询,送到离起点(0+20+5,0+24+6,0+28+7),距离的平方为2750。
对于第5个操作,也是查询,送到离起点(20+5+5+0,24+6+6+0,28+7+7+0),距离的平方为3960。
子任务
对于20%的数据,n,m≤1000;
对于另外20%的数据,n≤100000,且只包含第1,4种操作;
对于另外20%的数据,n≤100000,且只包含第1,2,4种操作;
对于另外20%的数据,n≤100000;
对于另外20%的数据,没有特殊性质。
所有输入的数字都在[1,1000000000]范围内。
所有的数据中1≤m≤40000。
所有的操作满足1≤L≤R≤n。
问题链接:
问题简述:(略)
问题分析:参考链接是100分。
程序说明:(略)
参考链接:
CCF认证考试 202012-5星际旅行 (100分)(线段树)
CSP202012-5 星际旅行 满分详解
题记:(略)
100分的C++语言程序如下:
以上是关于CCF202012-5 星际旅行线段树(100分题解链接)的主要内容,如果未能解决你的问题,请参考以下文章