【Codeforces 1205C】Palindromic Paths(回文路径DP)
题目链接对于格子( i , j ) (i,j)(i,j)若i j ijij为奇数则称为奇点否则称为偶点。首先发现询问距离为2的两个格子就可以知道它们是否值相同。已知( 1 , 1 ) (1,1)(1,1)格子值为1( n , n ) (n,n)(n,n)格子值为0一遍BFS可以求出所有偶点的值。如果( 1 , 2 ) (1,2)(1,2)格子的值已知那么再一遍BFS可以求出所有奇点的值。我们假设( 1 , 2 ) (1,2)(1,2)格子值为0/1得到两种结果。因题目保证有解所以两种结果下必然存在一组合法询问的答案不同我们得到这组询问的答案就知道哪种结果正确了。我们用DP分别求出两种结果下所有询问的答案即可。设S [ x 1 ] [ y 1 ] [ x 2 ] [ y 2 ] S[x1][y1][x2][y2]S[x1][y1][x2][y2]表示( x 1 , y 1 ) (x1,y1)(x1,y1)与( x 2 , y 2 ) (x2,y2)(x2,y2)之间是否有合法回文路径它为YES的条件是( x 1 , y 1 ) (x1,y1)(x1,y1)和( x 2 , y 2 ) (x2,y2)(x2,y2)两个格子的值相同且它们之间存在合法路径并满足( x 1 , y 1 ) (x1,y1)(x1,y1)与( x 2 , y 2 ) (x2,y2)(x2,y2)相同或接壤或者存在( x 1 ′ , y 1 ′ ) (x1,y1)(x1′,y1′)( x 2 ′ , y 2 ′ ) (x2,y2)(x2′,y2′)满足( x 1 ′ , y 1 ′ ) (x1,y1)(x1′,y1′)是( x 1 , y 1 ) (x1,y1)(x1,y1)路径的后继( x 2 ′ , y 2 ′ ) (x2,y2)(x2′,y2′)是( x 2 , y 2 ) (x2,y2)(x2,y2)路径的前驱且S [ x 1 ′ ] [ y 1 ′ ] [ x 2 ′ ] [ y 2 ′ ] S[x1][y1][x2][y2]S[x1′][y1′][x2′][y2′]为YES。用记忆化搜索写起来会方便些复杂度为O ( n 4 ) O(n^4)O(n4)。在两遍BFS中一共用到了n 2 − 3 n^2-3n2−3个询问最后用到了一个询问询问总数为n 2 − 2 n^2-2n2−2符合题意。#includestdio.h#includealgorithm#includeiostream#includequeue#includecmath#includestring.h#includeset#defineLL long longusingnamespacestd;LLread(){LL sum0;charcgetchar();boolf0;while(c0||c9){if(c-)f1;cgetchar();}while(c0c9){sumsum*10c-0;cgetchar();}if(f)return-sum;returnsum;}intn;constintdx[]{2,1,1,0,0,-1,-1,-2};constintdy[]{0,1,-1,2,-2,1,-1,0};constintDX[]{0,1,-1,0};constintDY[]{1,0,0,-1};#defineCI const intboolCH(intx1,inty1,intx2,inty2){if(x1x2y1y2)return1;swap(x1,x2);swap(y1,y2);return(x1x2y1y2);}boolASK(CIx1,CIy1,CIx2,CIy2){printf(? %d %d %d %d\n,x1,y1,x2,y2);fflush(stdout);returnread()^1;}intqx[2505],qy[2505];structEX{boolS[55][55],vis[55][55];boolF[55][55][55][55],V[55][55][55][55];voidBFS(boolT){inth,t,i,x,y,x1,y1,x2,y2,rx,ry;if(!T){h1;t2;qx[1]1;qy[1]1;S[1][1]1;vis[1][1]1;qx[2]n;qy[2]n;S[n][n]0;vis[n][n]1;}else{ht1;qx[1]1;qy[1]2;S[1][2]0;vis[1][2]1;}while(ht){xqx[h];yqy[h];h;for(i0;i8;i){x1x;y1y;x2x1dx[i];y2y1dy[i];if(x21||x2n||y21||y2n||vis[x2][y2])continue;if(CH(x1,y1,x2,y2)){if(xx2yy2)rxx1,ryy1;elserxx2,ryy2;vis[rx][ry]1,S[rx][ry]S[x][y]^ASK(x1,y1,x2,y2),qx[t]rx,qy[t]ry;}}}}boolDFS(intx1,inty1,intx2,inty2){if(V[x1][y1][x2][y2])returnF[x1][y1][x2][y2];V[x1][y1][x2][y2]1;if(S[x1][y1]!S[x2][y2])returnF[x1][y1][x2][y2]0;if(abs(x1-x2)abs(y1-y2)1)returnF[x1][y1][x2][y2]1;inti,j,X1,Y1,X2,Y2;for(i0;i2;i){X1x1DX[i];Y1y1DY[i];if(X11||X1n||Y11||Y1n)continue;for(j2;j4;j){X2x2DX[j];Y2y2DY[j];if(X21X2nY11Y2nCH(X1,Y1,X2,Y2)DFS(X1,Y1,X2,Y2))returnF[x1][y1][x2][y2]1;}}returnF[x1][y1][x2][y2]0;}voidoutput(){puts(!);for(inti1;in;i){for(intj1;jn;j)printf(%d,S[i][j]);puts();}}}K1,K2;intmain(){nread();K1.BFS(0);K1.BFS(1);inti,j,k,t,x1,y1,x2,y2;for(inti1;in;i)for(intj1;jn;j)K2.S[i][j]K1.S[i][j]^((ij)1);for(i1;in;i)for(j1;jn;j)for(k1;kn;k)for(t1;tn;t){x1i;y1j;x2k;y2t;if(!CH(x1,y1,x2,y2))continue;K1.DFS(x1,y1,x2,y2),K2.DFS(x1,y1,x2,y2);if(K1.F[x1][y1][x2][y2]K2.F[x1][y1][x2][y2])continue;if(abs(x1-x2)abs(y1-y2)1)continue;if(ASK(x1,y1,x2,y2)K1.F[x1][y1][x2][y2])K2.output();elseK1.output();return0;}return0;}

相关新闻

Opus 5模型在Conductor平台的应用:性能接近Fable价格减半

Opus 5模型在Conductor平台的应用:性能接近Fable价格减半

最近在 AI 开发圈里,一个消息引起了不小的震动: Opus 5 模型正式登陆 Conductor 平台,性能接近 Fable 但价格直接减半 。这听起来像是营销噱头,但背后反映的是 AI 模型服务市场正在发生的实质性变化——不是简单的价格战&#x…

2026/10/25 18:22:23 阅读更多 →
MySQL Windows安装配置全攻略:从官方下载到安全部署

MySQL Windows安装配置全攻略:从官方下载到安全部署

你是不是也遇到过这样的场景:刚入职新公司,领导让你快速搭建一个本地开发环境,结果在MySQL安装这一步就卡住了?或者自己学习后端开发,被各种“一键安装”教程搞得晕头转向,最后连服务都启动不了? 网上关于MySQL安装的教程铺天盖地,但真正能让你“一次成功”的却不多。…

2026/10/25 3:00:52 阅读更多 →
2026年人工智能与智慧城市国际学术会议(IC-AISC 2026)

2026年人工智能与智慧城市国际学术会议(IC-AISC 2026)

2026 年人工智能与智慧城市国际学术会议(IC-AISC 2026)将于 2026 年 8 月 28-30 日在上海举办。在数字技术深度渗透的今天,人工智能的飞速迭代与智慧城市的加速建设正引发城市发展模式的根本性变革。二者的深度融合在推动城市治理效能提升、服…

2026/10/22 16:18:54 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/28 23:48:14 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/28 9:02:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/28 22:10:30 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/28 9:00:54 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 16:58:40 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 9:01:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 19:25:09 阅读更多 →