求原题或帮忙改下程序
  • 板块灌水区
  • 楼主fluhang_
  • 当前回复30
  • 已保存回复30
  • 发布时间2024/8/31 15:30
  • 上次更新2024/8/31 19:03:13
查看原帖
求原题或帮忙改下程序
1072112
fluhang_楼主2024/8/31 15:30

数组变换(array.cpp)

题目描述

你的面前有一个长度为 nn 的数组。初始时,第 ii 个位置的元素为 i i(即所有位置上的元素依次为从 11 到 n n 的正整数)。 接下来,你需要帮我依次完成 mm 个操作。每个操作可能是:

  • AA pp qq,表示你需要修改数组中的所有元素。具体地,第 ii个位置的元素被修改成 p∗i+qp*i+q。
  • BB xx yy,表示你需要修改数组中的单个元素。具体地,第 xx 个位置的元素被修改成 yy。

其中上述 p,q,x,yp,q,x,y 均为整数,每次操作结束后,你需要输出数组中所有元素的和。

输入格式

第一行包含两个数 n,mn,m。 接下来mm行,每行依次表示一个操作,格式为AA pp qq 或者 BB xx yy,意义如【题目描述】中所述。

输出格式

输出共 mm 行,每行表示每个操作结束后,数组中所有数的和。

样例 #1

样例输入 #1

5 4
B 1 5
A -1 0
A 1 2
A 2 -5

样例输出 #1

19
-15
25
5

提示

样例解释

第 11 次操作结束后,数组变为 5,2,3,4,5{5, 2, 3, 4, 5};

第 22 次操作结束后,数组变为 −1,−2,−3,−4,−5{-1, -2, -3, -4, -5};

第 33 次操作结束后,数组变为 3,4,5,6,7{3, 4, 5, 6, 7};

第 44 次操作结束后,数组变为 −3,−1,1,3,5{-3, -1, 1, 3, 5}。

数据范围

对于 20%20\% 的数据,n≤100n\le 100

另外 20%20\% 的数据,n≤5∗107,m≤5∗105n\le 5*10^7,m\le5*10^5 ,所有操作均为 BB 类型

另外 20%20\% 的数据,n≤5∗107,m≤5∗105n\le 5*10^7,m\le5*10^5 ,所有操作均为 AA 类型

对于 100%100\% 的数据,n≤5∗107,m≤5∗105,∣p∣≤1000,∣q∣、∣y∣≤109,1≤x≤nn \le 5*10^7,m \le 5*10^5,|p|\le1000,|q|、|y|\le 10^9,1\le x\le n

#include<bits/stdc++.h>
#define int long long 
#define fast register int 

using namespace std;

const int N=5e7+100;

int n,cnt=0,m;

signed main(){
	std::ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	
	cin>>n>>m;
	
	for (fast i=1;i<=n;i++){
		cnt+=i;
	}
	
	for (fast i=1;i<=m;i++){
		char x;
		int a,b;
		cin>>x>>a>>b;
		if (x=='A'){
			cout<<cnt*a+n*b<<endl;
		}
		else {
			cout<<cnt+b-a<<endl;
		}
	}
	
	return 0;
}
2024/8/31 15:30
加载中...