【bzoj4972】小Q的方格纸 前缀和
题目让O(1)预处理出来 类三角形边界及内部的和
根据这个图 就是一个大矩形-左边的绿色的矩形 - 蓝色的大三角形 + 右上角突出的蓝色的小三角形
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- #define rep(i,l,r) for(int i=l;i<=r;i++)
- const ll mod = 1LL<<32;
- const int N = 3000+10;
- unsigned int A,B,C;
- inline unsigned int rng61(){
- A ^= A << 16;
- A ^= A >> 5;
- A ^= A << 1;
- unsigned int t = A;
- A = B;
- B = C;
- C ^= t ^ A;
- return C;
- }
- ll a[N][N], rect[N][N], tri[N][N];
- int n, m, q ,x, y, k;
- void input()
- {
- scanf("%d%d%d%u%u%u", &n, &m, &q, &A, &B, &C);
- for(int i = 1; i <= n; i++)
- for(int j = 1; j <= m; j++)
- a[i][j] = rng61();
- }
- ll pow_mod(ll x,ll n1) {
- ll res = 1;
- while (n1 > 0) {
- if(n1 & 1) res = res*x%mod;
- x = x*x%mod;
- n1/=2;
- }
- return res;
- }
- int main () {
- freopen("out.txt","w",stdout);
- input();
- //printf("---rect ---\n");
- rep(i,1,n) {
- rep(j,1,m) {
- rect[i][j] = rect[i-1][j] + rect[i][j-1] - rect[i-1][j-1] + a[i][j];
- //printf("%10lld ",rect[i][j]);
- }
- //puts("");
- }
- //printf("---rect ---\n");
- //printf("---tri ---\n");
- rep(i,1,n) {
- for(int j=m;j>=1;j--) {
- tri[i][j] = tri[i-1][j] + tri[i-1][j+1] - tri[i-2][j+1] + a[i][j];
- //printf("%10lld ",tri[i][j]);
- }
- //puts("");
- }
- //printf("---tri ---\n");
- ll res = 0;
- for(int i=1;i<=q;i++) {
- x = rng61() % n + 1;
- y = rng61() % m + 1;
- k = rng61() % min(x, y) + 1;
- ll ans = rect[x][y] - rect[x][y-k] - tri[x-1][y-k+1] + tri[x-k-1][y+1];
- res = res*233%mod + ans %mod;
- res %=mod;
- }
- cout << res <<endl;
- return 0;
- }
【bzoj4972】小Q的方格纸 前缀和的更多相关文章
- BZOJ4972 小Q的方格纸
每个格子记录其左下的45°直角梯形区域的和及左下矩形区域的和即可. #include<iostream> #include<cstdio> #include<cmath& ...
- BZOJ4972 八月月赛 Problem B 小Q的方格纸 二维前缀和
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ4972 八月月赛Problem B 题目概括 一个矩阵,一坨询问,问矩阵中一个特定方向的等腰直角三角 ...
- ZJNU 2345 - 小Y的方格纸
明显,总共有n*m格,已经涂了k格 所以剩下n*m-k格 如果n*m-k<=k,即k已经占用了大于等于一半的格子,显然答案为0 否则 剩下的格子中取k+1,k+2...n*m-k格均可 取组合数 ...
- bzoj 4815: [Cqoi2017]小Q的表格 [数论]
4815: [Cqoi2017]小Q的表格 题意: 单点修改,查询前缀正方形和.修改后要求满足条件f(a,b)=f(b,a), b×f(a,a+b)=(a+b)*f(a,b) 一开始sb了认为一次只会 ...
- [bzoj4815]: [Cqoi2017]小Q的表格
来自FallDream的博客,未经允许,请勿转载,谢谢. 小Q是个程序员. 作为一个年轻的程序员,小Q总是被老C欺负,老C经常把一些麻烦的任务交给小Q来处理.每当小Q不知道如何解决时,就只好向你求助. ...
- 【CQOI2017】小Q的表格
[CQOI2017]小Q的表格 稍加推导就会发现\(f(a,b)=a\cdot b\cdot h(gcd(a,b))\). 初始时\(h(n)=1\). 询问前\(k\)行\(k\)列时我们就反演: ...
- 【BZOJ4815】[CQOI2017]小Q的表格(莫比乌斯反演,分块)
[BZOJ4815][CQOI2017]小Q的表格(莫比乌斯反演,分块) 题面 BZOJ 洛谷 题解 神仙题啊. 首先\(f(a,b)=f(b,a)\)告诉我们矩阵只要算一半就好了. 接下来是\(b* ...
- 洛咕 P3700 [CQOI2017]小Q的表格
洛咕 P3700 [CQOI2017]小Q的表格 神仙题orz 首先推一下给的两个式子中的第二个 \(b\cdot F(a,a+b)=(a+b)\cdot F(a,b)\) 先简单的想,\(F(a,a ...
- bzoj4815[CQOI2017]小Q的格子
题意 不简述题意了,简述题意之后这道题就做出来了.放个原题面. 小Q是个程序员. 作为一个年轻的程序员,小Q总是被老C欺负,老C经常把一些麻烦的任务交给小Q来处理. 每当小Q不知道如何解决时,就只好向 ...
随机推荐
- DNS、链接网页、资源预加载处理
从网页性能的角度来看,DNS的解析时间是比较耗时的.因此如果能预先下载网页中用到的其它域的资源.可提前进行DNS解析: <link rel="dns-prefetch" hr ...
- Ubuntu 如何更改用户密码
你需要为第一个帐户创建一个密码.这可以用 passwd 命令来完成. 系统会提示输入你的旧密码一次,输入你的新密码两次.用 root 用户更改用户 paul 的密码[root@bigboy root] ...
- 【BZOJ3727】PA2014 Final Zadanie 树形DP
[BZOJ3727]PA2014 Final Zadanie Description 吉丽YY了一道神题,题面是这样的:“一棵n个点的树,每条边长度为1,第i个结点居住着a[i]个人.假设在i结点举行 ...
- [C/C++] String Reverse 字符串 反转
#include <iostream> #include <string> #include <algorithm> #include <cstring> ...
- wampserver3 集成环境 启动Apache失败
前提:安装完成后,原先是能够启动服务,但是按照网上教程修改conf文件后就不能启动Apache, 方法: 1.查看Apache错误日志(无奈的是看不懂) 2.在cmd命令行中查看,(打开cmd,输入: ...
- react路由守卫
react没有vue那样的路由钩子beforeEach,实现登陆验证. 实现效果:如果没有登陆,就跳转到登陆界面,如果登陆过浏览器存有登陆信息就跳转到所输入的路由界面,如果该路由不存在则跳到404页面 ...
- [Gradle] 发布构件到本地仓库
配置 需要发布构件的模块 build.gradle 加入如下配置 apply plugin: 'maven-publish' publishing { publications { mavenJava ...
- 沈阳网络赛F-Fantastic Graph【贪心】or【网络流】
"Oh, There is a bipartite graph.""Make it Fantastic." X wants to check whether a ...
- opencv学习笔记——cv::line函数详解
void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, ...
- JavaCSV之写CSV文件
与JavaCSV读CSV文件相对应,JavaCSV也可以用来写数据到CSV文件中. 1.准备工作 (1)第三方包库下载地址:https://sourceforge.net/projects/javac ...