bzoj 4972 小Q的方格纸

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4972

题意:

  给一个方格纸,每一个格子有一个数val,q个询问,每次询问一个x,y,k,求(x,y),(x-k+1,y),(x,y-k+1)三个格子构成的三角形边上以及内部的所有格子的val的和。答案输出sigma((233)^(q-i)*fi)%(2^32),fi为第i次询问的答案。

题解:

   

    图做的太丑了。。。。。凑合着看吧。。。

   根据题意其实就是求上图黑色部分,黑色部分可以看成图一的灰加黑的正方形(画的一点不像正方形。。。)减去灰的部分,灰的部分其实是图二那个土黄色的部分减去图一剩下的那块有点黄又有点红的部分。

   这样就分析完后可以不看图了,维护三个前缀和a,b,c。。a用来求某一块的矩形的总和,c用来求图二那个土黄色的部分,b用来求某一行的前缀和(方便求a,c),前缀和造出来了后,每次询问xjb写写就O(1)出答案啦。。

最后那个对2^32取模,其实开成unsigned int自然溢出就行了。。。

 1 #include <bits/stdc++.h>
 2 #define INF 0x3f3f3f3f
 3 using namespace std;
 4 typedef long long ll;
 5 const int mod=1e9+7;
 6 const int maxn=3e3+100;
 7 const double eps=1e-10;
 8 unsigned int A,B,C;
 9 int n,m,q,x,y,k;
10 unsigned int a[maxn][maxn],b[maxn][maxn],c[maxn][maxn],d[3000000+100];
11 inline unsigned int rng61(){
12     A ^= A << 16;
13     A ^= A >> 5;
14     A ^= A << 1;
15     unsigned int t = A;
16     A = B;
17     B = C;
18     C ^= t ^ A;
19     return C;
20 }
21 int main() {
22 #ifdef ac
23     freopen("in.txt" , "r" , stdin);
24 //    freopen("out.txt" , "w" , stdout);
25 #endif
26     d[0]=1;
27     for(int i=1;i<=3000000;++i)d[i]=d[i-1]*233;
28     scanf("%d%d%d%u%u%u", &n, &m, &q, &A, &B, &C);
29     for(int i = 1; i <= n; i++){
30         for(int j = 1; j <= m; j++){
31             a[i][j] = rng61();b[i][j]+=b[i][j-1]+a[i][j];
32             c[i][j]=b[i][j]+c[i-1][j+1]; a[i][j]=b[i][j]+a[i-1][j];
33         }
34         c[i][0]=c[i-1][1];
35     }
36
37     unsigned int ans=0;
38     for(int i = 1; i <= q; i++){
39         x = rng61() % n + 1;
40         y = rng61() % m + 1;
41         k = rng61() % min(x, y) + 1;
42         int x1=x-k,y1=y-k;
43         if(x1<0)x1=0;if(y1<0)y1=0;
44         unsigned tmp1=c[x][y1]-c[x1][y],tmp2=a[x][y1]-a[x1][y1],tmp3=tmp1-tmp2;
45         unsigned tmp4=a[x][y]-a[x1][y]-a[x][y1]+a[x1][y1],tmp5=tmp4-tmp3;
46         ans+=d[q-i]*tmp5;
47     }
48     printf("%u\n",ans);
49     return 0;
50 }

  

时间: 2024-10-14 19:11:26

bzoj 4972 小Q的方格纸的相关文章

【bzoj4972】小Q的方格纸 前缀和

题目描述 方格纸与草稿纸一样,都是算法竞赛中不可或缺的重要工具.身经百战的小Q自然也会随身带着方格纸.小Q的方格纸有n行m列,一共n*m个方格,从上到下依次标记为第1,2,...,n行,从左到右依次标记为第1,2,...,m列,方便起见,小Q称第i行第j列的方格为(i,j).小Q在方格纸中填满了数字,每个格子中都恰好有一个整数a_{i,j}.小Q不喜欢手算,因此每当他不想计算时,他就会让你帮忙计算.小Q一共会给出q个询问,每次给定一个方格(x,y)和一个整数k(1<=k<=min(x,y)),

BZOJ 4018 小Q的幻想之乡

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=4018 题意: T组询问,每组询问给定N和M,求∑Ni=1∑Mj=1|i?j|gcd(i,j)分别模109+7和109+9的值. T≤1000,N,M≤2?106. 题解: 考虑将∑Ni=1∑Mj=1|i?j|gcd(i,j)化简. 首先引入一个记号,令[x]表示:若x为真,则[x]为1:否则[x]为0,其中x是一个布尔表达式. ∑i=1N∑j=1M|i?j|gcd(i,j)=∑i=1N∑j=

BZOJ [Cqoi2017] 小Q的棋盘

题解:枚举最后在哪里停止,然后剩下的步数/2 也就是找最大深度 枚举终止位置算是一种思路吧 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn=10009; int n,m; int maxdep; int cntedge; int head[maxn]; int to[maxn<<1],nex[maxn<<1]; vo

重庆OI2017 小 Q 的棋盘

小 Q 的棋盘 时间限制: 1 Sec  内存限制: 512 MB 题目描述 小Q正在设计一种棋类游戏.在小Q设计的游戏中,棋子可以放在棋盘上的格点中.某些格点之间有连线,棋子只能在有连线的格点之间移动.整个棋盘上共有V个格点,编号为0,1,2…,V-1,它们是连通的,也就是说棋子从任意格点出发,总能到达所有的格点.小Q在设计棋盘时,还保证棋子从一个格点移动到另外任一格点的路径是唯一的.小Q现在想知道,当棋子从格点0出发,移动N步最多能经过多少格点.格点可以重复经过多次,但不重复计数. 输入 第

HDU 4520 小Q系列故事——最佳裁判

Time Limit : 500/200ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Problem Description 过去的2012年对小Q来说是很悲催的一年,失恋了12次,每次都要郁闷1个来月. 好在小Q是个体育迷,在最痛苦的时候,他常常用观看各种体育节目来麻醉自己,比如伦敦奥运会期间,小Q就常常在周末邀上一群单身同事聚在自己的蜗居,一边畅饮啤酒,一边吹牛. 小Q最喜欢看的是跳水,主要原因也是因为这个项目有中国人参

二分图 [ZJOI2007] 小Q的矩阵游戏

[问题描述] 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: l 行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色) l 列交换操作:选择矩阵的任意两列,交换这两列(即交换对应格子的颜色) 游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色. 对于某些关卡,小Q百思不得其解,以致他开始怀疑这些关卡是不是根本

hdu4505小Q系列故事——电梯里的爱情

小Q系列故事——电梯里的爱情 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 3626    Accepted Submission(s): 2284 Problem Description 细心的同事发现,小Q最近喜欢乘电梯上上下下,究其原因,也许只有小Q自己知道:在电梯里经常可以遇到他心中的女神HR. 电梯其实是个很暧昧的地方,只有在电梯

hdu4505 小Q系列故事——电梯里的爱情(水题)

Problem Description http://acm.hdu.edu.cn/showproblem.php?pid=4505 细心的同事发现,小Q最近喜欢乘电梯上上下下,究其原因,也许只有小Q自己知道:在电梯里经常可以遇到他心中的女神HR. 电梯其实是个很暧昧的地方,只有在电梯里,小Q才有勇气如此近距离接近女神,虽然觉得有点不自在,但次数多了,女神也习惯了小Q的存在,甚至熟悉到仿佛不说上句话自己也都觉得不合适了.可是,他们的谈话也仅仅限于今天天气不错啊或是你吃了吗之类的,往往在对方微笑点

hdu---(4515)小Q系列故事——世界上最遥远的距离(模拟题)

小Q系列故事——世界上最遥远的距离 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1751    Accepted Submission(s): 628 Problem Description 世界上最遥远的距离 不是生与死 而是我就站在你面前 你却不知道我爱你 世界上最遥远的距离 不是我就站在你面前你却不知道我爱你 而是明明知道彼此相爱