当前位置: 首页 > 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.jsqmd.com/news/111603/

相关文章:

  • 使用DNGuard加密并打包C# .NET Core程序为单一EXE文件
  • 强壳保护NET代码!Dnguard 4.9.4最新企业旗舰版下载地址
  • 妙妙计算1
  • Python中的super()
  • 造船行业液压系统气动高压球阀技术应用指南:螺纹式高压球阀、BKH高压球阀、RKH高压球阀、不锈钢高压球阀、卡套式高压球阀 - 优质品牌商家
  • 2025苏浙地区电商培训优质机构推荐榜实战创业与考证双支撑:天猫运营电商培训、广告平面设计电商培训、抖音运营电商培训、机械设计电商培训 - 优质品牌商家
  • 2025温州汽车行业复杂结构塑料模具优质供应商指南:塑料模具、 - 优质品牌商家
  • 12.19 - A
  • 网络编程-UDP通信
  • 2025防爆认证机构推荐榜聚焦行业需求的优质服务选择指南:防爆认证、 - 优质品牌商家
  • Day33rem简介与基本使用
  • 2025年电力系统变电站镀锌避雷塔性能深度评测报告:钢管避雷塔、镀锌避雷塔、防雷避雷塔、三柱避雷塔、单管避雷塔、圆钢避雷塔 - 优质品牌商家
  • 2025上海仓储订单处理公司推荐:云仓一件代发平台、云仓代发、仓储订单处理、仓储跨境物流、仓库托管、云仓一件代发 - 优质品牌商家
  • 2025企业高管跨国商务出行保安公司服务响应速度评测报告:保镖公司、安保公司、保安公司 - 优质品牌商家
  • 2025西南窄边门窗公司评测:断桥铝门窗、新房门窗、窄边门窗、系统门窗、老房门窗、铝合金门窗、隔音窗、隔音门窗、高端门窗 - 优质品牌商家
  • doccano服务器端部署教程(python项目)
  • 2025医药行业混合设备交钥匙工程售后服务评测报告:搅拌机优质品牌、搅拌机品牌、混合机优质品牌、混合机品牌、搅拌机、混合机 - 优质品牌商家
  • 2025广东精密钢管表面质量与规格适配性评测报告:浙江精密钢管、20CrMo精密钢管、40Cr精密钢管、42CrMo精密钢管 - 优质品牌商家
  • 12月18日日记
  • 央企程序员AI创业后续
  • 嵌入式IDE使用IAR Embedded Workbench for ARM 完整配置步骤
  • 如何免费的快速修复 Xbox 无线手柄板机不回弹的故障 All In One
  • Special Offer: Xhorse Battery for VAG Platforms – Shipping Cost Included
  • 离散化
  • 2025最新补肾壮阳补品公司TOP10评测!国内优质厂商权威榜单发布,科学养护赋能健康生活 - 全局中转站
  • 使用 kali 进行 wifi 密码破解渗透 M芯片Mac+utm虚拟机环境
  • 达芬奇20(DaVinci Resolve 20.0)下载安装教程全攻略:下载+配置+激活+使用技巧
  • opencode_桌面版_windows
  • ol-加时间
  • Qt 小技巧和解决方案合集(持续更新)