问题描述

LZK发明一个矩阵游戏,大家一起来玩玩吧,有一个N行M列的矩阵。第一行的数字是1,2,…M,第二行的数字是M+1,M+2…2M,以此类推,第N行的数字是(N-1)M+1,(N-1)M+2…NM。
例如,N=3,M=4的矩阵是这样的:
1 2 3 4
5 6 7 8
9 10 11 12
对于身为智慧之神的LZK来说,这个矩阵过于无趣.于是他决定改造这个矩阵,改造会进行K次,每次改造会将矩阵的某一行或某一列乘上一个数字,你的任务是计算最终这个矩阵内所有数字的和,输出答案对109+7取模。

输入

第一行包含三个正整数N、M、K,表示矩阵的大小与改造次数。接下来的行,每行会是如下两种形式之一:

R X Y,表示将矩阵的第X(1 ≤ X ≤ N)行变为原来的Y(0 ≤ Y ≤109)倍.

S X Y,表示将矩阵的第X(1 ≤ X ≤ M)列变为原来的Y(0 ≤ Y ≤109)倍.

输出

输出一行一个整数,表示最终矩阵内所有元素的和对109+7取模的结果。

输入输出样例

样例1

3 4 4
R 2 4
S 4 1
R 3 2
R 2 0

94

样例2

2 4 4
S 2 0
S 2 3
R 1 5
S 1 3

80

提示

样例一的解释:操作结束之后矩阵会变成这样:
1 2 3 4
0 0 0 0
18 20 22 24

40%的数据满足:1≤N,M≤1000;
80%的数据满足:1≤N,M≤1000000,1 ≤ K ≤1000;
100%的数据满足:1≤N,M≤1000000,1 ≤ K ≤100000。

rol[n], lin[m]两个标记数组,记录每一行或是每一列要乘上多少。假设我们没有列的操作,那么一列看成一个数,整张图就是一个长度为m的等差数列,不想O(1)的话O(m)就能求出来。现在加上了列的操作。其实就是对于每一个数ai乘上了一个lzy_lin[i],只要按顺序算到ai,然后答案加上ai * lzy_lin[i]就行了…………听起来很暴力然而能过。。。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cctype>
using namespace std;
typedef long long ll;
typedef double db;
const int INF = 0x3f3f3f3f;
const ll mod = 1e9 + 7;
const int maxn = 1e6 + 5;
inline ll read()
{ll ans = 0;char ch = getchar(), last = ' ';while(!isdigit(ch)) {last = ch; ch = getchar();}while(isdigit(ch)) {ans = ans * 10 + ch - '0'; ch = getchar();}if(last == '-') ans = -ans;return ans;
}
inline void write(ll x)
{if(x < 0) x = -x, putchar('-');if(x >= 10) write(x / 10);putchar(x % 10 + '0');
}int n, m, q;
char c[5];
ll lzy_rol[maxn], lzy_lin[maxn];
ll s = 0, d = 0, sum = 0;ll getnum(int x, int i)
{return ((ll)(i - 1) * m + x) % mod;
}int main()
{freopen("game.in", "r", stdin);freopen("game.out", "w", stdout);n = read(); m = read(); q = read();for(int i = 1; i < maxn; ++i) lzy_rol[i] = lzy_lin[i] = 1;for(int i = 1; i <= q; ++i){scanf("%s", c); int x = read(); ll k = read();if(c[0] == 'R') lzy_rol[x] *= k, lzy_rol[x] %= mod;    else lzy_lin[x] *= k, lzy_lin[x] %= mod;}for(int i = 1; i <= n; ++i){s += getnum(1, i) * lzy_rol[i]; s %= mod;d += lzy_rol[i]; d %= mod;}for(rg int i = 1; i <= m; ++i)        {sum += lzy_lin[i] * s; sum %= mod;s += d; s %= mod;}write(sum); enter;return 0;
}

转载于:https://www.cnblogs.com/shulker/p/9662977.html

九校联考-长沙市一中NOIP模拟Day1T1 矩阵游戏(game)相关推荐

  1. 九校联考-长沙市一中NOIP模拟Day2T2 走格子(cell)

    问题描述 CYJ想找到他的小伙伴FPJ,.CYJ和FPJ现在位于一个房间里,这个房间的布置可以看成一个N行M列的矩阵,矩阵内的每一个元素会是下列情况中的一种: 障碍区域-这里有一堵墙(用'#'表示). ...

  2. 九校联考-长沙市一中NOIP模拟Day2T1 旋转子段(rotate)

    问题描述 ZYL有N张牌编号分别为1, 2,--,N.他把这N张牌打乱排成一排,然后他要做一次旋转使得旋转后固定点尽可能多.如果第i个位置的牌的编号为i,我们就称之为固定点. 旋转可以被认为是将其中的 ...

  3. 九校联考-长沙市一中NOIP模拟Day1T3 优美序列(sequence)

    问题描述 Lxy养了N头奶牛,他把N头奶牛用1..N编号,第i头奶牛编号为i.为了让奶牛多产奶,每天早上他都会让奶牛们排成一排做早操.奶牛们是随机排列的.在奶牛排列中,如果一段区间[L,R]中的数从小 ...

  4. 九校联考-长沙市一中NOIP模拟Day2T3 柱状图(column)

    问题描述 WTH 获得了一个柱状图 , 这个柱状图一共有 N 个柱子 , 最开始第 i 根柱子的高度为 x i , 他现在要将这个柱状图排成一个屋顶的形状 , 屋顶的定义如下 : 屋顶存在一个最高的柱 ...

  5. 九校联考-DL24 凉心模拟 Day1T3 三米诺 (tromino)

    题目描述 金企鹅同学非常擅长用 1×21×21×2 的多米诺骨牌覆盖棋盘的题.有一天,正在背四六级单词的他忽然想:既然两个格子的积木叫"多米诺 (domino)",那么三个格子的的 ...

  6. 九校联考-DL24凉心模拟Day1T3 三米诺 (tromino)

    题目背景 金企鹅同学非常擅长用1*2的多米诺骨牌覆盖棋盘的题.有一天,正 在背四六级单词的他忽然想:既然两个格子的积木叫"多米诺(domino)",那 么三个格子的的积木一定叫&q ...

  7. 九校联考-DL24凉心模拟Day2T1 锻造(forging)

    1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打 于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆都打不过了. 勇者的精灵路由器告诉 ...

  8. 【九校联考-24凉心模拟】锻造(forging)

    题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打, 于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现--自 己连一个史莱姆都打不过了. 勇者的精灵路由器告诉勇者其实是他 ...

  9. 九校联考-DL24 凉心模拟 Day2T1 锻造 (forging)

    题目描述 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打,于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现--自己连一个史莱姆都打不过了. 勇者的精灵路由器告诉勇者其实是他自己 ...

最新文章

  1. 理解RESTful架构
  2. python画图哆啦a梦-【Python】绘制哆啦A梦
  3. 推荐一些冷门但是超级实用的工具
  4. Linux服务器编程之:truncate()函数+案例说明
  5. [电子商务网站设计] 之 My Space
  6. Qt修改QSS中的qlineargradient属性,实现颜色渐变
  7. oracle timestamp计算两分钟前_阿里数据库真的超过Oracle了么?
  8. [2013.9.6]说说Win7的Aero效果
  9. Unity界面插件NGUI核心组件说明
  10. C++开发环境搭建_需要学习的内容介绍_写第一个C++程序---C++语言工作笔记008
  11. 【WePY小程序框架实战四】-使用asyncawait异步请求数据
  12. 中国剩余定理-数硬币
  13. 计算机电源线税务编码,电力电子元器件税收分类编码
  14. 诗词经典唯美名句赏析
  15. 单设施选址-重心法-Matlab
  16. 批量将 xlsx 文件 转换 为 csv文件
  17. Transformer最新综述
  18. JDK8新特性之Stream流【小白快速上手,没有技巧全是实操-LOL英雄类讲解不失趣味】
  19. 房子装修选择自装,物业办装修手续,需要哪些资料?
  20. ros使用自动驾驶数据集KITTI【1】介绍与可视化

热门文章

  1. mysql命令大全(订正版)
  2. 小红书竞品分析_跨境电商APP竞品分析:小红书、网易考拉和达令
  3. 人工智能对职业的影响:哪些职业可能被取代,哪些职业将会兴起?
  4. 多线程和事务之Workaround
  5. 鸟人的Android揭秘(9)——Init进程运行过程
  6. php 评论插件,织梦评论插件,dedecms评论插件
  7. 元宵节就要到了,手把手教你用Python打造一款3D花灯
  8. python3 制作个性二维码
  9. 阿里云共享专线和独享专线的区别
  10. 2019 校内赛 RPG的地牢猎手(bfs+优先队列)