「GXOI / GZOI2019」与或和
广西和贵州的省选?好像很神仙的样子啊
之后发现这是一道水题
我们显然应该拆位考虑
显然我们应该对于每一位都拆一下看看这一位是\(0/1\)
显然我们如果找到一个全是\(1\)的矩阵,那么这一位的\(and\)和不为\(0\),否则就是\(0\)
对于\(or\)和,我们只需要求出全是\(0\)的矩阵,之后拿总矩阵数量一减就是至少有一个\(1\)的矩阵的数量,这样的矩阵\(or\)和这一位显然是\(1\)
于是问题转化成了求有多少个全\(0\)全\(1\)矩阵
我们预处理出每一个位置往右最多延伸的长度,对于一列来说我们需要求出所有子区间最小值的和
很好,我们发现这就是一个烜式合并单调栈的板子题了
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define re register
#define LL long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
const int maxn=1e3+5;
const int mod=1e9+7;
inline int read() {
char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
int cnt,a[maxn][maxn],n,b[maxn][maxn],M;
int st[maxn],sz[maxn],l[maxn][maxn];
int top,sum;
inline int work(int w,int o) {
for(re int i=1;i<=n;i++)
for(re int j=1;j<=n;j++) {
if((a[i][j]&(1<<w))) b[i][j]=o;
else b[i][j]=o^1;
}
for(re int i=1;i<=n;i++) {
l[i][n]=b[i][n];
for(re int j=n-1;j;--j)
if(!b[i][j]) l[i][j]=0;
else l[i][j]=l[i][j+1]+1;
}
int tmp=0;
for(re int j=1;j<=n;j++) {
top=0,sum=0;
for(re int i=1;i<=n;i++) {
int now=0;
while(top&&st[top]>=l[i][j])
sum-=st[top]*sz[top],now+=sz[top],top--;
st[++top]=l[i][j];sz[top]=now+1;
sum+=st[top]*sz[top];
tmp=(tmp+sum)%mod;
}
}
return tmp;
}
int main() {
n=read();
for(re int i=1;i<=n;i++)
for(re int j=1;j<=n;j++)
a[i][j]=read(),M=max(M,a[i][j]);
for(re int i=1;i<=n;i++)
for(re int j=1;j<=n;j++)
cnt=(cnt+1ll*(n-i+1)*(n-j+1)%mod)%mod;
int ans=0,tot=0;
for(re int w=0;w<=32;w++) {
if((1ll<<w)>M) break;
int t=(1ll<<w)%mod;
ans=(ans+1ll*t*work(w,1)%mod)%mod;
tot=(tot+1ll*t*(cnt-work(w,0)+mod)%mod)%mod;
}
printf("%d %d\n",ans,tot);
return 0;
}
「GXOI / GZOI2019」与或和的更多相关文章
- 「GXOI / GZOI2019」简要题解
「GXOI / GZOI2019」简要题解 LOJ#3083. 「GXOI / GZOI2019」与或和 https://loj.ac/problem/3083 题意:求一个矩阵的所有子矩阵的与和 和 ...
- LOJ#3083.「GXOI / GZOI2019」与或和_单调栈_拆位
#3083. 「GXOI / GZOI2019」与或和 题目大意 给定一个\(N\times N\)的矩阵,求所有子矩阵的\(AND(\&)\)之和.\(OR(|)\)之和. 数据范围 \(1 ...
- Loj #3085. 「GXOI / GZOI2019」特技飞行
Loj #3085. 「GXOI / GZOI2019」特技飞行 题目描述 公元 \(9012\) 年,Z 市的航空基地计划举行一场特技飞行表演.表演的场地可以看作一个二维平面直角坐标系,其中横坐标代 ...
- 【LOJ】#3088. 「GXOI / GZOI2019」旧词
LOJ#3088. 「GXOI / GZOI2019」旧词 不懂啊5e4感觉有点小 就是离线询问,在每个x上挂上y的询问 然后树剖,每个节点维护轻儿子中已经被加入的点的个数个数乘上\(dep[u]^{ ...
- 【LOJ】#3087. 「GXOI / GZOI2019」旅行者
LOJ#3087. 「GXOI / GZOI2019」旅行者 正着求一遍dij,反着求一遍,然后枚举每条边,从u到v,如果到u最近的点和v能到的最近的点不同,那么可以更新答案 没了 #include ...
- 【LOJ】#3086. 「GXOI / GZOI2019」逼死强迫症
LOJ#3086. 「GXOI / GZOI2019」逼死强迫症 这个就是设状态为\(S,j\)表示轮廓线为\(S\),然后用的1×1个数为j 列出矩阵转移 这样会算重两个边相邻的,只要算出斐波那契数 ...
- 【LOJ】#3085. 「GXOI / GZOI2019」特技飞行
LOJ#3085. 「GXOI / GZOI2019」特技飞行 这显然是两道题,求\(C\)是一个曼哈顿转切比雪夫后的线段树扫描线 求\(AB\),对向交换最大化和擦身而过最大化一定分别为最大值和最小 ...
- 【LOJ】#3083. 「GXOI / GZOI2019」与或和
LOJ#3083. 「GXOI / GZOI2019」与或和 显然是先拆位,AND的答案是所有数字为1的子矩阵的个数 OR是所有的子矩阵个数减去所有数字为0的子矩阵的个数 子矩阵怎么求可以记录每个位置 ...
- 「GXOI / GZOI2019」宝牌一大堆 (DP)
题意 LOJ传送门 题解 可以发现「七对子」 和 「国士无双」直接暴力就行了. 唯一的就是剩下的"3*4+2". 考试的时候写了个爆搜剪枝,开了O2有50pts.写的时候发现可以D ...
- 「洛谷5300」「GXOI/GZOI2019」与或和【单调栈+二进制转化】
题目链接 [洛谷传送门] 题解 按位处理. 把每一位对应的图都处理出来 然后单调栈处理一下就好了. \(and\)操作处理全\(1\). \(or\)操作处理全\(0\). 代码 #include & ...
随机推荐
- Runtime初识
什么是Runtime 我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething];会被转化成objc_msgSend(target, @sel ...
- 《Programming iOS 7》读书笔记 - 窗体大小与状态栏
1.从iOS7开始,状态栏开始变为透明的,根识图占领了整个窗体,包括状态栏后面的20像素高的区域,这种样式无法被改变.iOS6的状态栏是不透明的,窗体的尺寸通常会比屏幕的尺寸要小,可以设置窗体的尺寸为 ...
- 使用AutoFac组织多项目应用程序
较复杂的应用程序都是由多个项目组织成的,项目可以划分成程序集(Assemblies)和宿主(Hosts),也就是应用程序的入口. Assemblies 通常是常见的类库项目,包括可以重用的功 ...
- ASP.NET MVC中你必须知道的13个扩展点
ScottGu在其最新的博文中推荐了Simone Chiaretta的文章13 ASP.NET MVC extensibility points you have to know,该文章为我 ...
- sql判断某个字段是否为空
判断sql某个字段是否为NULL public function dataNull($id){ $sql = 'SELECT * FROM `vvt_company_funcs_user` WHERE ...
- PHPCMS V9 fsockopen 函数被禁用解决方案
PHPCMS V9 fsockopen 禁用解决方案, 把fsockopen 替换成 pfsockopen 替换文件:phpsso_server/api/uc_client_1_5/client.ph ...
- css-css和html的结合方式(四种结合方式)
(1)在每个HTML标签上面都有一个属性 style,把css和HTML结合在一起 <div style="background-color:red;color:blue;&quo ...
- 【代码笔记】iOS-左右可滑动的选择条
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- Web前端的状态管理
背景 我相信很多朋友跟我一样,初次听到什么 Flux , Redux , Vuex , 状态管理 的时候是一脸懵逼的.因为在外面之前前端大部分开发的时候,根本没有那么多的概念.自从ReactJS火 ...
- Spring Boot--02MVC设置
package com.smartmap.sample.ch1.conf; import java.util.List; import javax.servlet.http.HttpServletRe ...