博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AGC 015C.Nuske vs Phantom Thnook(思路 前缀和)
阅读量:5226 次
发布时间:2019-06-14

本文共 1754 字,大约阅读时间需要 5 分钟。

闻本题有格子,且何谓格子也

\(Description\)

给定\(n*m\)的蓝白矩阵,保证蓝格子形成的的同一连通块内,某蓝格子到达另一个蓝格子的路径唯一。

\(Q\)次询问。每次询问一个子矩形内蓝格子组成的连通块数。

\(Solution\)

不会形成环,即一个连通块是一棵树,即点数=边数+1。

那么对于一个子矩形,求它里面的蓝格子数n和蓝格子之间的边数m,n-m就是连通块数了。
横边竖边分开,都用前缀和维护。
如果有环,则边数>=点数就没法做了。

//89ms  52864KB#include 
#include
#include
//#define gc() getchar()#define MAXIN 200000#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)const int N=2005;int sp[N][N],sr[N][N]/*crosswise*/,sc[N][N]/*lengthways*/;bool mp[N][N];char IN[MAXIN],*SS=IN,*TT=IN;inline int read(){ int now=0;register char c=gc(); for(;!isdigit(c);c=gc()); for(;isdigit(c);now=now*10+c-'0',c=gc()); return now;}int main(){ int n=read(),m=read(),Q=read(); for(int i=1; i<=n; ++i) { register char c=gc(); for(;!isdigit(c);c=gc()); mp[i][1]=c-'0'; for(int j=2; j<=m; mp[i][j++]=gc()-'0'); } for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) { if(mp[i][j]) sp[i][j]=sp[i-1][j]+sp[i][j-1]-sp[i-1][j-1]+1, sc[i][j]=sc[i-1][j]+sc[i][j-1]-sc[i-1][j-1]+mp[i-1][j], sr[i][j]=sr[i-1][j]+sr[i][j-1]-sr[i-1][j-1]+mp[i][j-1]; else sp[i][j]=sp[i-1][j]+sp[i][j-1]-sp[i-1][j-1], sc[i][j]=sc[i-1][j]+sc[i][j-1]-sc[i-1][j-1], sr[i][j]=sr[i-1][j]+sr[i][j-1]-sr[i-1][j-1]; } for(int x,y,x2,y2; Q--; ) { x=read(),y=read(),x2=read(),y2=read(); int p=sp[x2][y2]-sp[x-1][y2]-sp[x2][y-1]+sp[x-1][y-1], e=sr[x2][y2]-sr[x-1][y2]-sr[x2][y]+sr[x-1][y]+sc[x2][y2]-sc[x][y2]-sc[x2][y-1]+sc[x][y-1]; printf("%d\n",p-e); } return 0;}

转载于:https://www.cnblogs.com/SovietPower/p/9705697.html

你可能感兴趣的文章
js += 含义(小知识)
查看>>
B2321 [BeiJing2011集训]星器 数学&&物理
查看>>
201571030319 四则运算
查看>>
RestTemplate 调用本地服务 connection refused
查看>>
.NET方向高级开发人员面试时应该事先考虑的问题
查看>>
台达PLC modbus 不支持04功能码
查看>>
发布一个JavaScript工具类库jutil,欢迎使用,欢迎补充,欢迎挑错!
查看>>
discuz 常用脚本格式化数据
查看>>
洛谷P2777
查看>>
PHPStorm2017设置字体与设置浏览器访问
查看>>
SQL查询总结 - wanglei
查看>>
安装cocoa pods时出现Operation not permitted - /usr/bin/xcodeproj的问题
查看>>
makefile中使用变量
查看>>
GIT笔记:将项目发布到码云
查看>>
JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别
查看>>
JavaScript 鸭子模型
查看>>
SQL Server 如何查询表定义的列和索引信息
查看>>
GCD 之线程死锁
查看>>
NoSQL数据库常见分类
查看>>
一题多解 之 Bat
查看>>