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

洛谷P2474 [SCOI2008] 天平 题解

思路学习的这一篇

step1

首先我们设 \(mn_{i,j}\)为砝码 \(i\) -砝码 \(j\) 的最小值(下文以\(a_i\)\(a_j\)代替)。
\(mx_{i,j}\)\(a_i-a_j\)的最大值。

当设\(a_i\)\(a_j\)的关系为\(g_{i,j}\)

\(g_{i,j}\)为=\(+\)时,

a[i]  a[j]    a[i]-a[j]3     1         22     1         13     2         1

明显,\(mx_{i,j}=2\),\(mn_{i,j}=1\)

\(g_{i,j}\)\(-\)时,

a[i]  a[j]    a[i]-a[j]1     3        -21     2        -12     3        -1

\(mx_{i,j}=-1\),\(mn_{i,j}=-2\)
\(g_{i,j}\)\(=\)
\(\because a_i=a_j\)
\(\therefore mn_{i,j}=mn_{i,j}=0\)

最后当\(g_{i,j}\)\(?\)
\(mx_{i,j}=2\),\(mn_{i,j}=-2\)(相当于\(+\)\(-\))的结合
综上

\[\begin{cases} mx_{i,j}=2,mn_{i,j}=1 & g_{i,j}为+\\ mx_{i,j}=-1,mn_{i,j}=-2 & g_{i,j}为-\\ mx_{i,j}=0,mn_{i,j}=0 & g_{i,j}为=\\ mx_{i,j}=2,mn_{i,j}=-2 & g_{i,j}为?\\ \end{cases} \]

step2

我们知道了\(mx\)\(mn\)的值,接下来题面说要唯一情况,所以我们要差分约束
\(mn_{i,j}\)记录的是\(a_i-a_j的最小差值\)。那我们可以找一个\(k\)

\[mn_{i,j}=a_i-a_j\\ \hspace{7em} =a_i-a_k+a_k-a_j\\ \hspace{5.7em}=mn_{i,k}+mn_{k,j} \]

因为题目要求唯一答案,\(mn_{i,j}\)要尽可能大
所以

\[mn_{i,j}=\max\limits_{k=1}^{n} mn_{i,k}+mn_{k,j} \]

同理

\[mx_{i,j}=\min\limits_{k=1}^{n} mx_{i,k}+mx_{k,j} \]

step3

\(A+B>a_i+a_j\)

\[A+B>a_i+a_j\\ \hspace{3em}A-a_i+B-a_j>0\rightarrow mn_{A,i}+mn_{B,j}>0\\ \hspace{3em}A-a_j+B-a_i>0\rightarrow mn_{A,j}+mn_{B,i}>0\\ \]

\(A+B<a_i+a_j\)类似

\[A+B<a_i+a_j\\ \hspace{3em}A-a_i+B-a_j<0\rightarrow mx_{A,i}+mx_{B,j}<0\\ \hspace{3em}A-a_j+B-a_i<0\rightarrow mx_{A,j}+mx_{B,i}<0\\ \]

\(A+B=a_i+a_j\)有点不同。因为既要满足\(mx\)相等,又要满足\(mn\)相等。

\[\hspace{-15em}\textcircled{1}\\ A+B=a_i+a_j\\ \hspace{8.2em}{A-a_i+B-a_j=0}\rightarrow{mx_{A,i}=mn_{A,i},mx_{B,j}=mn_{B,j}}\\ \hspace{-4.3em}{{A,i}+{B,j}=0} \]

\[\hspace{-15em}\textcircled{2}\\ A+B=a_i+a_j\\ \hspace{8.2em}{A-a_j+B-a_i=0}\rightarrow{mx_{A,j}=mn_{A,j},mx_{B,i}=mn_{B,i}}\\ \hspace{-4.3em}{{A,j}+{B,i}=0} \]

\(\because mx_{i,j}=mn_{i,j}\)
\(\therefore\)\(mx\) \(mn\)都行

step4

#include<bits/stdc++.h>
using namespace std;
const int N=55;
char g[N][N];
int mx[N][N],mn[N][N];
int n,A,B;
void csh()
{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(g[i][j]=='+')mx[i][j]=2,mn[i][j]=1;if(g[i][j]=='-')mx[i][j]=-1,mn[i][j]=-2;if(g[i][j]=='=')mx[i][j]=mn[i][j]=0;if(g[i][j]=='?')mx[i][j]=2,mn[i][j]=-2;if(i==j)mx[i][j]=mn[i][j]=0;}}
}
int main()
{cin>>n>>A>>B;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>g[i][j];}}csh();for(int k=1;k<=n;k++){	for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){mn[i][j]=max(mn[i][j],mn[i][k]+mn[k][j]);mx[i][j]=min(mx[i][j],mx[i][k]+mx[k][j]);}}}int c1=0,c2=0,c3=0;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(i==A||i==B||j==A||j==B)continue;if(mn[A][i]+mn[B][j]>0||mn[A][j]+mn[B][i]>0)c1++;if(mx[A][i]+mx[B][j]<0||mx[A][j]+mx[B][i]<0)c3++;if(mn[A][i]==mx[A][i]&&mn[B][j]==mx[B][j]&&mn[A][i]+mn[B][j]==0)c2++;else if(mn[A][j]==mx[A][j]&&mn[B][i]==mx[B][i]&&mn[A][j]+mn[B][i]==0)c2++;}}cout<<c1<<' '<<c2<<' '<<c3;return 0;
}
http://www.zskr.cn/news/25298.html

相关文章:

  • 2025年实验室/手术室净化工程厂家推荐排行榜:涵盖无尘车间装修、洁净室建设、医院净化工程等全方位解决方案精选
  • 详细介绍:网络安全防御指南:全方位抵御暴力破解攻击
  • 2025年苹果仓厂家权威推荐榜单:苹果仓民宿,移动房苹果仓,出口苹果仓,外贸出口苹果仓,集装箱苹果仓,景区苹果仓,苹果仓房屋,网红苹果仓,可移动式苹果仓公司推荐
  • 多轮对话中,如何判断前后两次提问是否存在依赖关系
  • 基于SpringBoot的课程信息管理系统设计与实现 - 实践
  • 机器学习可扩展性:从1到百万用户的架构演进
  • 2025年保洁公司推荐排行榜,驻场保洁/钟点保洁/开荒保洁/外包保洁/商场保洁/办公楼保洁/工厂保洁/医院保洁/企业保洁服务优选指南
  • macOS 内核路由表执行:直接 API 编程指南
  • 2025年扑灭司林厂家推荐排行榜,高效环保杀虫剂,农业/卫生防疫专用扑灭司林原药及制剂公司推荐
  • 单细胞转录组:差异基因分析和富集分析 - 教程
  • DBA必备脚本:Oracle获取绑定变量的字面SQL文本版版本替代
  • 083_尚硅谷_多分支基本使用
  • 为什么制造业的仓库经验,放到电商就行不通?
  • Oracle案例:grid环境关于asm diskpath是否需要一致
  • 2025年10月洗碗机品牌推荐:海信领衔五大机型对比评测榜。
  • 微信消息管理桌面提醒版:桌面提醒与AI回复的完美结合
  • 2025 年片材机生产厂家最新推荐榜,技术实力与市场口碑深度解析多层共挤/流延/PC/pp 片材机公司推荐
  • 深入解析:【面试前必看:Redis 从入门到实战:核心知识与面试高频考点全解析】
  • 4-8〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸命令注入漏洞 - 实践
  • 2025年项目管理工具生态全景:技术主权与AI赋能的行业变革
  • winform连接锐浪GridReport打印示例
  • AI 的能源危机:训练一个模型究竟要耗掉多少电?
  • 2025 年制砂机厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析高效/冲击式/砂石/新疆制砂机厂家推荐
  • Hyper-V 与 root的Android7模拟器共存
  • PCIe 全高/半高,全长/半长 尺寸介绍 - ENGINEER
  • Linux框架编程:线程控制
  • WebSocket Turbo Intruder:挖掘WebSocket安全漏洞的利器
  • 吱吱企业即时通讯不止通讯,还是数字化协作的安全与效率标杆
  • callout样式
  • Java 8 - Optional类