当前位置: 首页 > news >正文

Codeforces Round 1067 (Div. 2) E Sink

事实上这题只需要维护每个极大连通块是局部最小值的数量。
事实上这个可以等价于每个点是局部最小值的数量的和。
直接维护即可,答案为0的个数。
注意维护技巧,修改的点可以看作独立的点,原来的答案如果其 size 为 0 就不考虑其的贡献,也就是 ans-- 。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using std::cin,std::cout;
const int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
const int N=600020;
int n,m;
std::vector<int>a[N],b[N];
int f[N],val[N],si[N];
int find(int x){while(x!=f[x])x=f[x]=f[f[x]];return x;
}
int ans;
void merge(int x,int y){if(!x||!y)return ;x=find(x),y=find(y);if(x==y)return ;if(val[y]==0)ans--;f[x]=y,val[y]+=val[x];if(val[x]==0)ans--;if(val[y]==0)ans++;si[y]+=si[x];
}
void del(int x){x=find(x);val[x]--;if(val[x]==0)ans++;
}
void add(int x){x=find(x);if(val[x]==0)ans--;val[x]++;
}
void go(int x,int y,int t){for(int d=0;d<4;d++){int nx=x+dx[d],ny=y+dy[d];if(nx<=0||nx>n||ny<=0||ny>m)continue;if(a[nx][ny]<a[x][y]){if(t==1)add(b[x][y]);else del(b[x][y]);}if(a[nx][ny]>a[x][y]){if(t==1)add(b[nx][ny]);else del(b[nx][ny]);}}if(t==1){for(int d=0;d<4;d++){int nx=x+dx[d],ny=y+dy[d];if(nx<=0||nx>n||ny<=0||ny>m)continue;if(a[nx][ny]==a[x][y]){// if(t==1)add(b[x][y]);else del(b[x][y]);merge(b[nx][ny],b[x][y]);// cout<<nx<<" "<<ny<<" "<<x<<" "<<y<<"\n";}}}
}
void work(){int tot=0;cin>>n>>m;for(int i=0;i<=n+1;i++){a[i].clear(),b[i].clear();a[i].resize(m+1),b[i].resize(m+1);}ans=0;ans=n*m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){tot++;f[tot]=tot,b[i][j]=tot,val[tot]=0;si[tot]=1;go(i,j,-1);cin>>a[i][j];go(i,j,1);// cout<<ans<<"===\n";}cout<<ans<<'\n';int q;cin>>q;while(q--){int x,y,c;cin>>x>>y>>c;go(x,y,-1);a[x][y]-=c;si[find(b[x][y])]--;if(si[find(b[x][y])]==0)ans--;tot++;b[x][y]=tot;f[tot]=tot;val[tot]=0;si[tot]=1;ans++;go(x,y,1);cout<<ans<<'\n';}
}
int main(){// std::ios::sync_with_stdio(0);// cin.tie(0),cout.tie(0);int t=1;cin>>t;while(t--){work();}return 0;
}
http://www.gsyq.cn/news/123219.html

相关文章:

  • 妙妙计算1
  • 2025苏浙地区电商培训优质机构推荐榜实战创业与考证双支撑:天猫运营电商培训、广告平面设计电商培训、抖音运营电商培训、机械设计电商培训 - 优质品牌商家
  • 网络编程-UDP通信
  • 2025年电力系统变电站镀锌避雷塔性能深度评测报告:钢管避雷塔、镀锌避雷塔、防雷避雷塔、三柱避雷塔、单管避雷塔、圆钢避雷塔 - 优质品牌商家
  • 2025上海仓储订单处理公司推荐:云仓一件代发平台、云仓代发、仓储订单处理、仓储跨境物流、仓库托管、云仓一件代发 - 优质品牌商家
  • 2025企业高管跨国商务出行保安公司服务响应速度评测报告:保镖公司、安保公司、保安公司 - 优质品牌商家
  • 12月18日日记
  • 央企程序员AI创业后续
  • Special Offer: Xhorse Battery for VAG Platforms – Shipping Cost Included
  • mpg123 库播放mp3
  • AI赋能引力波探测:Deep Loop Shaping技术详解
  • 2025最新补肾壮阳补品公司TOP10评测!国内优质厂商权威榜单发布,科学养护赋能健康生活 - 全局中转站
  • ArchLinux 禁用 nouveau
  • VXDIAG VCX-FD GM Intelligent All-in-One Diagnostic Tool for Chevrolet, Buick, Cadillac, Opel, Holden
  • 2025最新补精生精产品补肾壮阳补品品牌top10推荐!循证医学精准营养优质品牌榜单发布,助力两性健康养护 - 全局中转站
  • Cursor 开源替代
  • uni-app + DevEco 鸿蒙跨平台应用开发实战1-环境安装分享 - 实践
  • 12-18午夜盘思
  • 实用指南:Spring Boot、Redis、RabbitMQ 在项目中的核心作用详解
  • 揭秘:如何用0.02/张调用Openai官方GPT Image 1.5?国内直连方案大公开
  • Spring Boot 学习笔记:项目搭建、分层架构与核心技术集成 - 详解
  • 鼻窦炎
  • VXDIAG VCX SE DOIP Diagnostic Tool: 13-in-1 for 13+ European/American Car Brands
  • 海南封关,你应该知道的10个新常识
  • 10379_基于SSM的校园跑腿服务平台
  • 我如何理解 Flutter 本质 - 详解
  • 2025最新PQQ口服抗衰产品TOP10评测!国内源头厂家权威榜单发布,科学赋能健康抗衰新生态 - 全局中转站
  • 北京托福机构怎么选?这几家宝藏机构帮你避开“选择困难 - 品牌测评鉴赏家
  • 豆包大模型登顶中国第一、微软开源TRELLIS.2、xAI发布Grok Voice Agent API、迎AI六小龙上市潮、Google Labs发布AI助理CC
  • SAT辅导机构怎么选?2025年高性价比机构实测与避坑指南 - 品牌测评鉴赏家