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

复健 day2:改题 打 div2

时间原因,被一个唐诗问题困扰,导致没有来得及改昨天的 G。

F. Simons and Reconstructing His Roads

必定为多个欧拉回路。考虑没有不能删的限制,且只有一个欧拉回路的情况(易见回路间互不影响)。

通过大眼观察,假设每个格子的贡献为上左减去下右,则总权值为每个格子的贡献之和。

有不能删的边时,若其靠边,则代表一个格子不能删,否则代表相邻两个格子决策相同。

使用并查集维护即可,时间复杂度 \(O(\sum nm)\)

注:因为 \(w+v-w-v\) 爆 int wa 了一发。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e5+10;
const int mod=1e9+7;
#define inf 1e9
inline int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}
#define ll long long
int n,m,T,w[maxn],v[maxn],P[maxn],Q[maxn];
#define calc(x,y) (x-1)*m+y
//inline int calc(int x,int y){return (x-1)*m+y;}
int F[maxn],ok[maxn];ll Sum[maxn];
inline int find(int x){return F[x]==x?x:F[x]=find(F[x]);}
inline void merge(int x,int y){
//	printf("merge %d %d\n",x,y);x=find(x),y=find(y);if(x==y)return;F[y]=x;Sum[x]+=Sum[y];ok[x]&=ok[y];
}
inline void solve(){n=read(),m=read();for(int i=1;i<n;i++)for(int j=1;j<=m;j++)w[calc(i,j)]=read();for(int i=1;i<=n;i++)for(int j=1;j<m;j++)v[calc(i,j)]=read();for(int i=1;i<n;i++,getchar())for(int j=1;j<=m;j++)P[calc(i,j)]=getchar()-'0';for(int i=1;i<=n;i++,getchar())for(int j=1;j<m;j++)Q[calc(i,j)]=getchar()-'0';for(int i=1;i<n;i++)for(int j=1;j<m;j++){int id=calc(i,j);
//			printf("i=%d j=%d id=%d\n",i,j,id);F[id]=id;ok[id]=1;Sum[id]=0ll+w[id]+v[id]-w[calc(i,j+1)]-v[calc(i+1,j)];if(j==1&&!P[id])ok[id]=0;if(i==1&&!Q[id])ok[id]=0;if(j==m-1&&!P[calc(i,j+1)])ok[id]=0;if(i==n-1&&!Q[calc(i+1,j)])ok[id]=0;}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){if(i<n&&j>1&&j<m&&!P[calc(i,j)])merge(calc(i,j-1),calc(i,j));if(j<m&&i>1&&i<n&&!Q[calc(i,j)])merge(calc(i-1,j),calc(i,j));}ll ans=0;for(int i=1;i<n;i++)for(int j=1;j<m;j++){int id=calc(i,j);if(find(id)!=id)continue;
//			printf("i=%d j=%d sum=%lld ok=%d\n",i,j,Sum[id],ok[id]);if(ok[id])ans+=max(0ll,Sum[id]);}printf("%lld\n",ans);
}
int main(){T=read();while(T--)solve();return 0;
}
/*
1
3 4
13 7 6 -12
3 -5 12 -6
-3 10 -15
-5 8 -11
10 0 -5
1111
0110
110
101
010
*/

线性建笛卡尔树

放一个小根笛卡尔树的代码,很玄妙。

点击查看代码
for(int i=1;i<=n;i++){cur=top;while(cur&&p[st[cur]]>p[i])cur--;if(cur)rs[st[cur]]=i;if(cur<top)ls[i]=st[cur+1];st[++cur]=i;top=cur;
}

Codeforces Round 1091 (Div. 2) and CodeCraft 26

太 tm 难了,8!

http://www.jsqmd.com/news/604776/

相关文章:

  • 26 华夏之光永存:规避AI代码坑点:常见逻辑错误与安全问题处理
  • MCP协议兼容性断裂?性能抖动难定位?Python服务模板的12个隐性设计缺陷全曝光,现在修复还来得及
  • 2026年河北高温风机工厂选型决策:五大核心服务商实力解析 - 2026年企业推荐榜
  • 2026宁波喷塑加工服务商深度测评:谁能为您的产品披上“品质战衣”? - 2026年企业推荐榜
  • OpenClaw自动化测试:gemma-3-12b-it模拟用户操作验证Web应用
  • 27 华夏之光永存:工程级代码打磨:让AI输出的代码直接上线使用
  • 别再死记硬背公式!用Python可视化理解数字基带信号功率谱(含代码)
  • STM32H747I-DISCO板级支持包(BSP)详解与工程实践
  • 2026年锂电池技术解析:从原理到选型的全维度指南 - 优质品牌商家
  • ESP32专用BQ24295锂电池充电管理Arduino库
  • 嵌入式传感器抽象层设计:Libdevlpr硬件抽象中间件实践
  • Linux系统架构与内核机制深度解析
  • Cadence Sigrity PowerSI实战:S参数提取与信号完整性优化全流程解析
  • 28 华夏之光永存:实战1:小型工具项目全流程——从需求到AI代码落地
  • 2026年昆明垃圾房品牌选择指南:如何甄别真正可靠的供应商? - 2026年企业推荐榜
  • 2025届学术党必备的六大AI辅助论文网站推荐榜单
  • 2026年安卓云手机市场深度测评:五大可靠直销服务商综合实力解析 - 2026年企业推荐榜
  • OpenClaw效率对比:Kimi-VL-A3B-Thinking与传统自动化工具实测
  • 29 华夏之光永存:实战2:业务模块开发——指挥AI完成完整功能开发
  • 2026年防城港钢板出租市场洞察:五大服务商深度评测与选购指南 - 2026年企业推荐榜
  • 告别假阳性!用TAGS多模态提示策略,精准提升你的医学影像分割模型性能
  • STM32开发方式与HAL库核心机制解析
  • 政企数据安全交换:信创场景下 FTP 替代产品如何满足合规与适配要求?
  • 2026届学术党必备的五大AI学术助手推荐
  • Pandas数据预览优化:告别Pycharm输出窗口的省略号困扰
  • 30 华夏之光永存:实战3:AI编程复盘——形成专属指挥逻辑,高效应对所有场景
  • Pixel Language Portal应用场景:独立游戏开发者高效本地化工作台
  • 秦都区自营整装五强争霸:2026年业主决策必读指南 - 2026年企业推荐榜
  • 建筑设计企业:云 3D 渲染如何满足效果图与动画需求
  • 2026年教育行业GPU算力租用服务商推荐榜 - 优质品牌商家